gernotbelger@9066: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde gernotbelger@9066: * Software engineering by Intevation GmbH gernotbelger@9066: * gernotbelger@9066: * This file is Free Software under the GNU AGPL (>=v3) gernotbelger@9066: * and comes with ABSOLUTELY NO WARRANTY! Check out the gernotbelger@9066: * documentation coming with Dive4Elements River for details. gernotbelger@9066: */ gernotbelger@9066: gernotbelger@9066: package org.dive4elements.river.client.client.ui.uinfo; gernotbelger@9066: gernotbelger@9299: import java.util.List; gernotbelger@9299: gernotbelger@9299: import org.dive4elements.river.client.client.ui.DatacageWidget; gernotbelger@9299: import org.dive4elements.river.client.client.ui.DatacageWidgetData; gernotbelger@9310: import org.dive4elements.river.client.shared.model.ArtifactDescription; gernotbelger@9066: import org.dive4elements.river.client.shared.model.DataList; gernotbelger@9299: import org.dive4elements.river.client.shared.model.User; gernotbelger@9066: gernotbelger@9299: import com.smartgwt.client.util.SC; gernotbelger@9299: import com.smartgwt.client.widgets.Button; gernotbelger@9299: import com.smartgwt.client.widgets.Canvas; gernotbelger@9299: import com.smartgwt.client.widgets.events.ClickEvent; gernotbelger@9299: import com.smartgwt.client.widgets.events.ClickHandler; gernotbelger@9107: import com.smartgwt.client.widgets.layout.Layout; gernotbelger@9299: import com.smartgwt.client.widgets.layout.VLayout; gernotbelger@9299: import com.smartgwt.client.widgets.tree.TreeNode; gernotbelger@9066: gernotbelger@9070: public class VegetationzonesTablePanel extends AbstractVegZonesTablePanel { gernotbelger@9068: gernotbelger@9066: private static final long serialVersionUID = 1L; gernotbelger@9310: gernotbelger@9310: private final static Double DELTA = 0.0000001; gernotbelger@9310: gernotbelger@9299: private final User user; gernotbelger@9299: gernotbelger@9310: // private double lowerKm = 0.0; gernotbelger@9310: // private double upperKm = 0.0; gernotbelger@9310: // private final Double vegZoneFrom = null; gernotbelger@9310: // private final Double vegZoneTo = null; gernotbelger@9310: // private final Label kmOverlapLabel = new Label(); gernotbelger@9310: gernotbelger@9310: // TODO: in der LV steht, dass eine Warnung herausgegeben werden soll, wenn der kmBereich der ausgewählten gernotbelger@9310: // Vegetationszone NICHT überlappt. gernotbelger@9310: // Derzeit werden durch den XPathQuery (siehe meta-data.xml usw) solche Vegetationszonen ohnehin gefiltert (nicht gernotbelger@9310: // angezeigt) - so wie es bisher überall standard ist, sodass gernotbelger@9310: // die Warnfunktion obsolet ist. Sollte der AG auf die LV bestehen, müsste der Query angepasst werden und hier alles gernotbelger@9310: // wieder einkommentiert werden gernotbelger@9310: gernotbelger@9299: public VegetationzonesTablePanel(final User user) { gernotbelger@9299: super(); gernotbelger@9299: this.user = user; gernotbelger@9299: } gernotbelger@9066: gernotbelger@9068: @Override gernotbelger@9107: public void createWidget(final Layout root, final DataList data) { gernotbelger@9118: createTable(root, data, "420", false); gernotbelger@9310: // this.kmOverlapLabel.getElement().getStyle().setColor("red"); gernotbelger@9310: // root.addMember(this.kmOverlapLabel); gernotbelger@9066: } gernotbelger@9299: gernotbelger@9299: @Override gernotbelger@9299: protected Canvas createHelper(final DataList dataList) { gernotbelger@9299: gernotbelger@9299: final DatacageWidgetData data = new DatacageWidgetData(this.artifact, this.user, "uinfo.inundation_duration.vegZoneSelect", "load-system:true", false); gernotbelger@9299: gernotbelger@9299: final DatacageWidget datacage = new DatacageWidget(data); gernotbelger@9310: final ArtifactDescription artifact = this.artifact.getArtifactDescription(); gernotbelger@9299: gernotbelger@9310: // for (final DataList item : artifact.getOldData()) { gernotbelger@9310: // if (item.getState().equals("state.uinfo.inundationduration.distance_only")) { gernotbelger@9310: // for (final Data fromTo : item.getAll()) { gernotbelger@9310: // if (fromTo.getLabel().equals("ld_from")) { gernotbelger@9310: // this.lowerKm = Double.valueOf(fromTo.getStringValue()); gernotbelger@9310: // } else if (fromTo.getLabel().equals("ld_to")) { gernotbelger@9310: // this.upperKm = Double.valueOf(fromTo.getStringValue()); gernotbelger@9310: // } gernotbelger@9310: // gernotbelger@9310: // } gernotbelger@9310: // } gernotbelger@9310: // } gernotbelger@9310: // final double lowerKmTmp = this.lowerKm < this.upperKm ? this.lowerKm : this.upperKm; gernotbelger@9310: // this.upperKm = this.upperKm > this.lowerKm ? this.upperKm : this.lowerKm; gernotbelger@9310: // this.lowerKm = lowerKmTmp; gernotbelger@9299: final Button plusBtn = new Button(this.MSG.uinfo_inundation_duration_set_vegetation_zone()); gernotbelger@9299: plusBtn.setAutoFit(true); gernotbelger@9299: plusBtn.addClickHandler(new ClickHandler() { gernotbelger@9299: @Override gernotbelger@9299: public void onClick(final ClickEvent event) { gernotbelger@9299: final List selection = datacage.getPlainSelection(); gernotbelger@9299: if (selection == null || selection.isEmpty()) { gernotbelger@9299: SC.say(VegetationzonesTablePanel.this.MSG.warning()); gernotbelger@9299: return; gernotbelger@9299: } gernotbelger@9299: final String data = selection.get(0).getAttribute("data"); gernotbelger@9310: // final String vegZoneFromStr = selection.get(0).getAttribute("from_km"); gernotbelger@9310: // final String vegZoneToStr = selection.get(0).getAttribute("to_km"); gernotbelger@9310: // if (vegZoneFromStr != null && vegZoneToStr != null) { gernotbelger@9310: // VegetationzonesTablePanel.this.vegZoneFrom = Double.valueOf(vegZoneFromStr); gernotbelger@9310: // VegetationzonesTablePanel.this.vegZoneTo = Double.valueOf(vegZoneToStr); gernotbelger@9310: // } else { gernotbelger@9310: // VegetationzonesTablePanel.this.vegZoneFrom = null; gernotbelger@9310: // VegetationzonesTablePanel.this.vegZoneTo = null; gernotbelger@9310: // } gernotbelger@9299: createTableFromDataStr(data); gernotbelger@9299: updateValidationMsgLabel(); gernotbelger@9310: // updateKmOverlapValidationLabel(); gernotbelger@9299: } gernotbelger@9299: }); gernotbelger@9299: gernotbelger@9299: final VLayout helperLayout = new VLayout(); gernotbelger@9299: helperLayout.addMember(datacage); gernotbelger@9299: helperLayout.addMember(plusBtn); gernotbelger@9299: gernotbelger@9299: return helperLayout; gernotbelger@9299: } gernotbelger@9310: gernotbelger@9310: // private void updateKmOverlapValidationLabel() { gernotbelger@9310: // this.kmOverlapLabel.setText("MÖP"); gernotbelger@9310: // if (this.vegZoneFrom != null && this.vegZoneTo != null) { // standardvegetationstabelle prüfung deaktiviert, da keine gernotbelger@9310: // km-range angegeben ist gernotbelger@9310: // if (!(this.vegZoneFrom > this.lowerKm - DELTA && this.vegZoneFrom < this.upperKm + DELTA || // gernotbelger@9310: // this.vegZoneTo > this.lowerKm - DELTA && this.vegZoneTo < this.upperKm + DELTA)) { gernotbelger@9310: // gernotbelger@9310: // this.kmOverlapLabel.setText("Warnung: Der Km-Bereich der gewählten Vegetationstabelle überlappt nicht mit dem hier gernotbelger@9310: // angegebenen Km-Bereich."); gernotbelger@9310: // } gernotbelger@9310: // } gernotbelger@9310: // } gernotbelger@9066: }