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@9261: import com.google.gwt.event.dom.client.ClickEvent; gernotbelger@9261: import com.google.gwt.event.dom.client.ClickHandler; gernotbelger@9261: import com.google.gwt.user.client.ui.Button; gernotbelger@9107: import com.smartgwt.client.util.SC; gernotbelger@9299: import com.smartgwt.client.widgets.Canvas; gernotbelger@9064: import com.smartgwt.client.widgets.form.DynamicForm; gernotbelger@9261: import com.smartgwt.client.widgets.form.fields.ColorItem; 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@9261: final ListGrid elements = super.createTable(root, data, "420", true); gernotbelger@9107: gernotbelger@9261: this.vegzone = PanelHelper.createItem("uinfo_vegetation_zone_label", this.MSG.uinfo_vegetation_zone_label(), "*"); gernotbelger@9108: this.vegzone.setColSpan(4); gernotbelger@9118: this.start = PanelHelper.createIntegerItem("uinfo_vegetation_zones_from", this.MSG.uinfo_vegetation_zones_from(), "*"); gernotbelger@9118: this.end = PanelHelper.createIntegerItem("uinfo_vegetation_zones_to", this.MSG.uinfo_vegetation_zones_to(), "*"); gernotbelger@9108: final VLayout fields = new VLayout(); gernotbelger@9064: gernotbelger@9261: final ColorItem colorPicker = new ColorItem(); gernotbelger@9261: colorPicker.setTitle(this.MSG.uinfo_vegetation_zone_color()); gernotbelger@9261: gernotbelger@9261: colorPicker.setShowTitle(true); gernotbelger@9261: colorPicker.setShowValueIconOnly(false); gernotbelger@9261: colorPicker.setShowPickerIcon(true); gernotbelger@9261: colorPicker.setColSpan(2); gernotbelger@9261: colorPicker.setWidth(110); gernotbelger@9261: 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@9118: gernotbelger@9574: form1.setNumCols(5); // für Layout untereinander muss 2 eingestellt werden gernotbelger@9523: form1.setFields(this.vegzone, this.start, this.end, colorPicker); gernotbelger@9064: gernotbelger@9064: add.addClickHandler(new ClickHandler() { gernotbelger@9064: @Override gernotbelger@9064: public void onClick(final ClickEvent ce) { gernotbelger@9064: gernotbelger@9523: handleAddClicked(elements, colorPicker); 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@9299: } gernotbelger@9261: gernotbelger@9523: protected void handleAddClicked(final ListGrid elements, final ColorItem colorPicker) { gernotbelger@9523: final String v1 = VegetationzonesTableEditPanel.this.start.getValueAsString(); gernotbelger@9523: final String v2 = VegetationzonesTableEditPanel.this.end.getValueAsString(); gernotbelger@9523: final String v3 = VegetationzonesTableEditPanel.this.vegzone.getValueAsString(); gernotbelger@9523: final String v4 = colorPicker.getValueAsString(); gernotbelger@9523: gernotbelger@9523: final String message = validate(v1, v2, v3, v4); gernotbelger@9523: if (message != null) { gernotbelger@9523: SC.warn(message); gernotbelger@9523: return; gernotbelger@9523: } gernotbelger@9523: gernotbelger@9523: final ListGridRecord r = new ListGridRecord(); gernotbelger@9523: r.setAttribute("vegzone", v3); gernotbelger@9523: r.setAttribute("from", v1); gernotbelger@9523: r.setAttribute("to", v2); gernotbelger@9523: r.setAttribute("color", v4); gernotbelger@9523: elements.addData(r); gernotbelger@9523: updateValidationMsgLabel(); gernotbelger@9523: final String sortField = elements.getSortField(); gernotbelger@9523: if (sortField != null) { gernotbelger@9523: elements.toggleSort(sortField); gernotbelger@9523: elements.toggleSort(sortField); // HACK. has to be. otherwise normalizer won't be called :-( gernotbelger@9523: } gernotbelger@9523: } gernotbelger@9523: gernotbelger@9299: @Override gernotbelger@9299: protected Canvas createHelper(final DataList data) { gernotbelger@9299: return null; gernotbelger@9064: } gernotbelger@9107: }