view gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/VegetationzonesTableEditPanel.java @ 9108:f5b55b383ef9

VegZones Layout Nachtrag
author gernotbelger
date Tue, 29 May 2018 18:17:55 +0200
parents 41f4bc83aa7a
children 31b3cae5de0d
line wrap: on
line source
/* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
 * Software engineering by Intevation GmbH
 *
 * This file is Free Software under the GNU AGPL (>=v3)
 * and comes with ABSOLUTELY NO WARRANTY! Check out the
 * documentation coming with Dive4Elements River for details.
 */

package org.dive4elements.river.client.client.ui.uinfo;

import org.dive4elements.river.client.client.ui.PanelHelper;
import org.dive4elements.river.client.shared.model.DataList;

import com.smartgwt.client.util.SC;
import com.smartgwt.client.widgets.Button;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.fields.TextItem;
import com.smartgwt.client.widgets.grid.ListGrid;
import com.smartgwt.client.widgets.grid.ListGridRecord;
import com.smartgwt.client.widgets.layout.Layout;
import com.smartgwt.client.widgets.layout.VLayout;

public class VegetationzonesTableEditPanel extends AbstractVegZonesTablePanel {
    private static final long serialVersionUID = 1L;

    private TextItem vegzone;

    private TextItem start;

    private TextItem end;

    @Override
    public void createWidget(final Layout root, final DataList data) {

        final ListGrid elements = super.createTable(root, data, 450, true);

        this.vegzone = PanelHelper.createItem("uinfo_vegetation_zone_label", this.MSG.uinfo_vegetation_zone_label(), 200);
        this.vegzone.setColSpan(4);
        this.start = PanelHelper.createIntegerItem("uinfo_vegetation_zones_from", this.MSG.uinfo_vegetation_zones_from(), 50);
        this.end = PanelHelper.createIntegerItem("uinfo_vegetation_zones_to", this.MSG.uinfo_vegetation_zones_to(), 50);
        final VLayout fields = new VLayout();

        final Button add = new Button(this.MSG.add_date()); // TODO: make key more generic or change to more specific

        final DynamicForm form1 = new DynamicForm();
        form1.setNumCols(4); // für Layout untereinander muss 2 eingestellt werden

        form1.setFields(this.vegzone, this.start, this.end);

        add.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(final ClickEvent ce) {
                final String v1 = VegetationzonesTableEditPanel.this.start.getValueAsString();
                final String v2 = VegetationzonesTableEditPanel.this.end.getValueAsString();
                final String v3 = VegetationzonesTableEditPanel.this.vegzone.getValueAsString();
                final String message = validate(v1, v2, v3);
                if (message != null) {
                    SC.warn(message);
                    return;
                }

                final ListGridRecord r = new ListGridRecord();
                r.setAttribute("vegzone", v3);
                r.setAttribute("from", v1);
                r.setAttribute("to", v2);
                elements.addData(r);
            }
        });

        fields.addMember(form1);
        root.addMember(fields);
        root.addMember(PanelHelper.getSpacer(10));
        root.addMember(add);
        root.addMember(PanelHelper.getSpacer(20));
    }

    protected String validate(final String v1, final String v2, final String v3) {

        if (v1 == null || v2 == null || v3 == null || v1.trim().isEmpty() || v2.trim().isEmpty() || v3.trim().isEmpty())
            return this.MSG.uinfo_vegetation_zones_validation_empty();

        try {
            final Integer from = Integer.valueOf(v1);
            final Integer to = Integer.valueOf(v2);

            if (from < 0 || from > 365)
                return this.MSG.uinfo_vegetation_zones_validation_range();

            if (to < 0 || to > 365)
                return this.MSG.uinfo_vegetation_zones_validation_range();

            if (from > to)
                return this.MSG.uinfo_vegetation_zones_validation_from_greater_to();

            return null;
        }
        catch (final NumberFormatException e) {
            return this.MSG.uinfo_vegetation_zones_invalid_integer();
        }
    }
}

http://dive4elements.wald.intevation.org