Mercurial > dive4elements > river
view gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/VegetationzonesTablePanel.java @ 9506:8b7bf26b8782
Predefined artifact for standard vegetation zones.
Some minor adaptions.
author | gernotbelger |
---|---|
date | Fri, 28 Sep 2018 13:44:12 +0200 |
parents | 819dbd073624 |
children |
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 java.util.List; import org.dive4elements.river.client.client.ui.DatacageWidget; import org.dive4elements.river.client.client.ui.DatacageWidgetData; import org.dive4elements.river.client.shared.model.DataList; import org.dive4elements.river.client.shared.model.User; import com.smartgwt.client.util.SC; import com.smartgwt.client.widgets.Button; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.events.ClickEvent; import com.smartgwt.client.widgets.events.ClickHandler; import com.smartgwt.client.widgets.layout.Layout; import com.smartgwt.client.widgets.layout.VLayout; import com.smartgwt.client.widgets.tree.TreeNode; public class VegetationzonesTablePanel extends AbstractVegZonesTablePanel { private static final long serialVersionUID = 1L; // private final static Double DELTA = 0.0000001; private final User user; // private double lowerKm = 0.0; // private double upperKm = 0.0; // private final Double vegZoneFrom = null; // private final Double vegZoneTo = null; // private final Label kmOverlapLabel = new Label(); // REMARK:: in der LV steht, dass eine Warnung herausgegeben werden soll, wenn der kmBereich der ausgewählten // Vegetationszone NICHT überlappt. // Derzeit werden durch den XPathQuery (siehe meta-data.xml usw) solche Vegetationszonen ohnehin gefiltert (nicht // angezeigt) - so wie es bisher überall standard ist, sodass // die Warnfunktion obsolet ist. Sollte der AG auf die LV bestehen, müsste der Query angepasst werden und hier alles // wieder einkommentiert werden public VegetationzonesTablePanel(final User user) { super(); this.user = user; } @Override public void createWidget(final Layout root, final DataList data) { createTable(root, data, "420", false); // this.kmOverlapLabel.getElement().getStyle().setColor("red"); // root.addMember(this.kmOverlapLabel); } @Override protected Canvas createHelper(final DataList dataList) { final DatacageWidgetData data = new DatacageWidgetData(this.artifact, this.user, "uinfo.inundation_duration.vegZoneSelect", "load-system:true", false); final DatacageWidget datacage = new DatacageWidget(data); // for (final DataList item : artifact.getOldData()) { // if (item.getState().equals("state.uinfo.inundationduration.distance_only")) { // for (final Data fromTo : item.getAll()) { // if (fromTo.getLabel().equals("ld_from")) { // this.lowerKm = Double.valueOf(fromTo.getStringValue()); // } else if (fromTo.getLabel().equals("ld_to")) { // this.upperKm = Double.valueOf(fromTo.getStringValue()); // } // // } // } // } // final double lowerKmTmp = this.lowerKm < this.upperKm ? this.lowerKm : this.upperKm; // this.upperKm = this.upperKm > this.lowerKm ? this.upperKm : this.lowerKm; // this.lowerKm = lowerKmTmp; final Button plusBtn = new Button(this.MSG.uinfo_inundation_duration_set_vegetation_zone()); plusBtn.setAutoFit(true); plusBtn.addClickHandler(new ClickHandler() { @Override public void onClick(final ClickEvent event) { handlePlusClicked(datacage); } }); final VLayout helperLayout = new VLayout(); helperLayout.addMember(datacage); helperLayout.addMember(plusBtn); return helperLayout; } protected void handlePlusClicked(final DatacageWidget datacage) { final List<TreeNode> selection = datacage.getPlainSelection(); if (selection == null || selection.isEmpty()) { SC.say(VegetationzonesTablePanel.this.MSG.warning()); return; } final TreeNode selectedNode = selection.get(0); /* * the encoded veg-zones is either in 'data' or 'ids'. We need both, because we have the cases of stadnard vegzones and * user-defined vegzones. */ final String dataAttribute = selectedNode.getAttribute("data"); final String idsAttribute = selectedNode.getAttribute("ids"); final String vegZoneData = (dataAttribute == null || dataAttribute.trim().length() == 0) ? idsAttribute : dataAttribute; // final String vegZoneFromStr = selection.get(0).getAttribute("from_km"); // final String vegZoneToStr = selection.get(0).getAttribute("to_km"); // if (vegZoneFromStr != null && vegZoneToStr != null) { // VegetationzonesTablePanel.this.vegZoneFrom = Double.valueOf(vegZoneFromStr); // VegetationzonesTablePanel.this.vegZoneTo = Double.valueOf(vegZoneToStr); // } else { // VegetationzonesTablePanel.this.vegZoneFrom = null; // VegetationzonesTablePanel.this.vegZoneTo = null; // } createTableFromDataStr(vegZoneData); updateValidationMsgLabel(); // updateKmOverlapValidationLabel(); } // private void updateKmOverlapValidationLabel() { // this.kmOverlapLabel.setText("MÖP"); // if (this.vegZoneFrom != null && this.vegZoneTo != null) { // standardvegetationstabelle prüfung deaktiviert, da keine // km-range angegeben ist // if (!(this.vegZoneFrom > this.lowerKm - DELTA && this.vegZoneFrom < this.upperKm + DELTA || // // this.vegZoneTo > this.lowerKm - DELTA && this.vegZoneTo < this.upperKm + DELTA)) { // // this.kmOverlapLabel.setText("Warnung: Der Km-Bereich der gewählten Vegetationstabelle überlappt nicht mit dem hier // angegebenen Km-Bereich."); // } // } // } }