view gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/VegetationzonesTablePanel.java @ 9310:819dbd073624

vegZone no-overlap warning
author gernotbelger
date Thu, 26 Jul 2018 11:08:11 +0200
parents 517b93254995
children 8b7bf26b8782
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.ArtifactDescription;
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();

    // TODO: 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);
        final ArtifactDescription artifact = this.artifact.getArtifactDescription();

        // 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) {
                final List<TreeNode> selection = datacage.getPlainSelection();
                if (selection == null || selection.isEmpty()) {
                    SC.say(VegetationzonesTablePanel.this.MSG.warning());
                    return;
                }
                final String data = selection.get(0).getAttribute("data");
                // 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(data);
                updateValidationMsgLabel();
                // updateKmOverlapValidationLabel();
            }
        });

        final VLayout helperLayout = new VLayout();
        helperLayout.addMember(datacage);
        helperLayout.addMember(plusBtn);

        return helperLayout;
    }

    // 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.");
    // }
    // }
    // }
}

http://dive4elements.wald.intevation.org