gernotbelger@9064: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde gernotbelger@9064: * Software engineering by Intevation GmbH gernotbelger@9064: * gernotbelger@9064: * This file is Free Software under the GNU AGPL (>=v3) gernotbelger@9064: * and comes with ABSOLUTELY NO WARRANTY! Check out the gernotbelger@9064: * documentation coming with Dive4Elements River for details. gernotbelger@9064: */ gernotbelger@9064: gernotbelger@9064: package org.dive4elements.river.client.client.ui.uinfo; gernotbelger@9064: gernotbelger@9066: import org.dive4elements.river.client.client.ui.PanelHelper; gernotbelger@9064: import org.dive4elements.river.client.shared.model.DataList; gernotbelger@9064: gernotbelger@9107: import com.smartgwt.client.util.SC; gernotbelger@9064: import com.smartgwt.client.widgets.Button; gernotbelger@9064: import com.smartgwt.client.widgets.events.ClickEvent; gernotbelger@9064: import com.smartgwt.client.widgets.events.ClickHandler; gernotbelger@9064: import com.smartgwt.client.widgets.form.DynamicForm; gernotbelger@9107: import com.smartgwt.client.widgets.form.fields.TextItem; gernotbelger@9107: import com.smartgwt.client.widgets.grid.ListGrid; gernotbelger@9064: import com.smartgwt.client.widgets.grid.ListGridRecord; gernotbelger@9107: import com.smartgwt.client.widgets.layout.Layout; gernotbelger@9108: import com.smartgwt.client.widgets.layout.VLayout; gernotbelger@9064: gernotbelger@9070: public class VegetationzonesTableEditPanel extends AbstractVegZonesTablePanel { gernotbelger@9064: private static final long serialVersionUID = 1L; gernotbelger@9064: gernotbelger@9107: private TextItem vegzone; gernotbelger@9107: gernotbelger@9107: private TextItem start; gernotbelger@9107: gernotbelger@9107: private TextItem end; gernotbelger@9107: gernotbelger@9068: @Override gernotbelger@9107: public void createWidget(final Layout root, final DataList data) { gernotbelger@9107: gernotbelger@9107: final ListGrid elements = super.createTable(root, data, 450, true); gernotbelger@9107: gernotbelger@9107: this.vegzone = PanelHelper.createItem("uinfo_vegetation_zone_label", this.MSG.uinfo_vegetation_zone_label(), 200); gernotbelger@9108: this.vegzone.setColSpan(4); gernotbelger@9108: this.start = PanelHelper.createIntegerItem("uinfo_vegetation_zones_from", this.MSG.uinfo_vegetation_zones_from(), 50); gernotbelger@9108: this.end = PanelHelper.createIntegerItem("uinfo_vegetation_zones_to", this.MSG.uinfo_vegetation_zones_to(), 50); gernotbelger@9108: final VLayout fields = new VLayout(); gernotbelger@9064: gernotbelger@9064: final Button add = new Button(this.MSG.add_date()); // TODO: make key more generic or change to more specific gernotbelger@9068: gernotbelger@9064: final DynamicForm form1 = new DynamicForm(); gernotbelger@9108: form1.setNumCols(4); // für Layout untereinander muss 2 eingestellt werden gernotbelger@9108: gernotbelger@9108: form1.setFields(this.vegzone, this.start, this.end); gernotbelger@9064: gernotbelger@9064: add.addClickHandler(new ClickHandler() { gernotbelger@9064: @Override gernotbelger@9064: public void onClick(final ClickEvent ce) { gernotbelger@9066: final String v1 = VegetationzonesTableEditPanel.this.start.getValueAsString(); gernotbelger@9066: final String v2 = VegetationzonesTableEditPanel.this.end.getValueAsString(); gernotbelger@9066: final String v3 = VegetationzonesTableEditPanel.this.vegzone.getValueAsString(); gernotbelger@9107: final String message = validate(v1, v2, v3); gernotbelger@9107: if (message != null) { gernotbelger@9107: SC.warn(message); gernotbelger@9069: return; gernotbelger@9069: } gernotbelger@9064: gernotbelger@9064: final ListGridRecord r = new ListGridRecord(); gernotbelger@9064: r.setAttribute("vegzone", v3); gernotbelger@9064: r.setAttribute("from", v1); gernotbelger@9064: r.setAttribute("to", v2); gernotbelger@9107: elements.addData(r); gernotbelger@9064: } gernotbelger@9064: }); gernotbelger@9064: gernotbelger@9064: fields.addMember(form1); gernotbelger@9107: root.addMember(fields); gernotbelger@9107: root.addMember(PanelHelper.getSpacer(10)); gernotbelger@9107: root.addMember(add); gernotbelger@9107: root.addMember(PanelHelper.getSpacer(20)); gernotbelger@9064: } gernotbelger@9064: gernotbelger@9107: protected String validate(final String v1, final String v2, final String v3) { gernotbelger@9107: gernotbelger@9107: if (v1 == null || v2 == null || v3 == null || v1.trim().isEmpty() || v2.trim().isEmpty() || v3.trim().isEmpty()) gernotbelger@9107: return this.MSG.uinfo_vegetation_zones_validation_empty(); gernotbelger@9107: gernotbelger@9107: try { gernotbelger@9107: final Integer from = Integer.valueOf(v1); gernotbelger@9107: final Integer to = Integer.valueOf(v2); gernotbelger@9107: gernotbelger@9107: if (from < 0 || from > 365) gernotbelger@9107: return this.MSG.uinfo_vegetation_zones_validation_range(); gernotbelger@9107: gernotbelger@9107: if (to < 0 || to > 365) gernotbelger@9107: return this.MSG.uinfo_vegetation_zones_validation_range(); gernotbelger@9107: gernotbelger@9107: if (from > to) gernotbelger@9107: return this.MSG.uinfo_vegetation_zones_validation_from_greater_to(); gernotbelger@9107: gernotbelger@9107: return null; gernotbelger@9107: } gernotbelger@9107: catch (final NumberFormatException e) { gernotbelger@9107: return this.MSG.uinfo_vegetation_zones_invalid_integer(); gernotbelger@9107: } gernotbelger@9107: } gernotbelger@9107: }