annotate gwt-client/src/main/java/org/dive4elements/river/client/client/ui/minfo/BedHeightsDatacagePanel.java @ 9220:e3c2ae1887e8

Allow to filter contents of datacage on client side. Allow to override column label of datacage Some code cleanup
author gernotbelger
date Wed, 04 Jul 2018 12:00:51 +0200
parents 28df64078f27
children 839b2aa84dd0
rev   line source
5861
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5993
ea9eef426962 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5861
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5861
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5993
ea9eef426962 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5861
diff changeset
6 * documentation coming with Dive4Elements River for details.
5861
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5835
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
9 package org.dive4elements.river.client.client.ui.minfo;
3508
60984be9bcfa MINFO: Added UI for minfo differences calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
10
8852
8f6d6d26e96f Refaktored the DatacageTwinPanel so it is reusable.
gernotbelger
parents: 8791
diff changeset
11 import java.util.List;
8f6d6d26e96f Refaktored the DatacageTwinPanel so it is reusable.
gernotbelger
parents: 8791
diff changeset
12
8f6d6d26e96f Refaktored the DatacageTwinPanel so it is reusable.
gernotbelger
parents: 8791
diff changeset
13 import org.dive4elements.river.client.client.ui.AbstractPairRecommendationPanel;
8f6d6d26e96f Refaktored the DatacageTwinPanel so it is reusable.
gernotbelger
parents: 8791
diff changeset
14 import org.dive4elements.river.client.client.ui.DatacageWidget;
9220
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
15 import org.dive4elements.river.client.client.ui.DatacageWidgetData;
8852
8f6d6d26e96f Refaktored the DatacageTwinPanel so it is reusable.
gernotbelger
parents: 8791
diff changeset
16 import org.dive4elements.river.client.client.ui.DefaultDatacageTwinPanelInfo;
8f6d6d26e96f Refaktored the DatacageTwinPanel so it is reusable.
gernotbelger
parents: 8791
diff changeset
17 import org.dive4elements.river.client.client.ui.RecommendationPairRecord;
8f6d6d26e96f Refaktored the DatacageTwinPanel so it is reusable.
gernotbelger
parents: 8791
diff changeset
18 import org.dive4elements.river.client.client.ui.WaterlevelTwinPanelValidator;
8f6d6d26e96f Refaktored the DatacageTwinPanel so it is reusable.
gernotbelger
parents: 8791
diff changeset
19 import org.dive4elements.river.client.shared.model.DataList;
8f6d6d26e96f Refaktored the DatacageTwinPanel so it is reusable.
gernotbelger
parents: 8791
diff changeset
20 import org.dive4elements.river.client.shared.model.ToLoad;
8f6d6d26e96f Refaktored the DatacageTwinPanel so it is reusable.
gernotbelger
parents: 8791
diff changeset
21 import org.dive4elements.river.client.shared.model.User;
8f6d6d26e96f Refaktored the DatacageTwinPanel so it is reusable.
gernotbelger
parents: 8791
diff changeset
22
3535
75a3a41a6e51 Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3508
diff changeset
23 import com.google.gwt.core.client.GWT;
7971
93da474506e7 Changed twin dc panel in bed height deifferences to single dc and use the new differences dc macro.
Raimund Renkert <rrenkert@intevation.de>
parents: 7921
diff changeset
24 import com.smartgwt.client.util.SC;
93da474506e7 Changed twin dc panel in bed height deifferences to single dc and use the new differences dc macro.
Raimund Renkert <rrenkert@intevation.de>
parents: 7921
diff changeset
25 import com.smartgwt.client.widgets.Button;
3535
75a3a41a6e51 Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3508
diff changeset
26 import com.smartgwt.client.widgets.Canvas;
75a3a41a6e51 Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3508
diff changeset
27 import com.smartgwt.client.widgets.events.ClickEvent;
7971
93da474506e7 Changed twin dc panel in bed height deifferences to single dc and use the new differences dc macro.
Raimund Renkert <rrenkert@intevation.de>
parents: 7921
diff changeset
28 import com.smartgwt.client.widgets.events.ClickHandler;
8852
8f6d6d26e96f Refaktored the DatacageTwinPanel so it is reusable.
gernotbelger
parents: 8791
diff changeset
29 import com.smartgwt.client.widgets.grid.ListGrid;
3535
75a3a41a6e51 Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3508
diff changeset
30 import com.smartgwt.client.widgets.layout.VLayout;
7971
93da474506e7 Changed twin dc panel in bed height deifferences to single dc and use the new differences dc macro.
Raimund Renkert <rrenkert@intevation.de>
parents: 7921
diff changeset
31 import com.smartgwt.client.widgets.tree.TreeNode;
3535
75a3a41a6e51 Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3508
diff changeset
32
9220
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
33 public class BedHeightsDatacagePanel extends AbstractPairRecommendationPanel {
3508
60984be9bcfa MINFO: Added UI for minfo differences calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
34
9220
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
35 private static final DefaultDatacageTwinPanelInfo INFO = new DefaultDatacageTwinPanelInfo(null, "bedheight", null);
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
36
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
37 private static final long serialVersionUID = 1L;
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
38
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
39 public BedHeightsDatacagePanel(final User user) {
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
40 // FIXME: This will lead to a bad error message in English (i.e. contains something about waterlevels), for
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
41 // M-Info/Bed-Differences calculation
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
42 // BUT: this is the behavior of 3.2.1 (because of sloppy derivation), so we do not change it now
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
43 super(user, new WaterlevelTwinPanelValidator(), INFO, INFO);
3508
60984be9bcfa MINFO: Added UI for minfo differences calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
44 }
60984be9bcfa MINFO: Added UI for minfo differences calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
45
60984be9bcfa MINFO: Added UI for minfo differences calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
46 @Override
8852
8f6d6d26e96f Refaktored the DatacageTwinPanel so it is reusable.
gernotbelger
parents: 8791
diff changeset
47 protected Canvas createChooserWidgets(final Canvas widget, final DataList dataList, final User user, final ListGrid differencesList) {
3508
60984be9bcfa MINFO: Added UI for minfo differences calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
48 GWT.log("createData()");
60984be9bcfa MINFO: Added UI for minfo differences calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
49
9220
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
50 final Canvas submit = getNextButton();
8852
8f6d6d26e96f Refaktored the DatacageTwinPanel so it is reusable.
gernotbelger
parents: 8791
diff changeset
51
9220
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
52 final DatacageWidgetData data = new DatacageWidgetData(this.artifact, user, "minfo_diff_panel", "load-system:true", false);
7971
93da474506e7 Changed twin dc panel in bed height deifferences to single dc and use the new differences dc macro.
Raimund Renkert <rrenkert@intevation.de>
parents: 7921
diff changeset
53
9220
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
54 final DatacageWidget datacage = new DatacageWidget(data);
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
55
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
56 final Button plusBtn = new Button(msg().datacage_add_pair());
7971
93da474506e7 Changed twin dc panel in bed height deifferences to single dc and use the new differences dc macro.
Raimund Renkert <rrenkert@intevation.de>
parents: 7921
diff changeset
57 plusBtn.setAutoFit(true);
93da474506e7 Changed twin dc panel in bed height deifferences to single dc and use the new differences dc macro.
Raimund Renkert <rrenkert@intevation.de>
parents: 7921
diff changeset
58 plusBtn.addClickHandler(new ClickHandler() {
93da474506e7 Changed twin dc panel in bed height deifferences to single dc and use the new differences dc macro.
Raimund Renkert <rrenkert@intevation.de>
parents: 7921
diff changeset
59 @Override
9220
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
60 public void onClick(final ClickEvent event) {
8852
8f6d6d26e96f Refaktored the DatacageTwinPanel so it is reusable.
gernotbelger
parents: 8791
diff changeset
61 plusClicked(datacage, differencesList);
7971
93da474506e7 Changed twin dc panel in bed height deifferences to single dc and use the new differences dc macro.
Raimund Renkert <rrenkert@intevation.de>
parents: 7921
diff changeset
62 }
93da474506e7 Changed twin dc panel in bed height deifferences to single dc and use the new differences dc macro.
Raimund Renkert <rrenkert@intevation.de>
parents: 7921
diff changeset
63 });
3508
60984be9bcfa MINFO: Added UI for minfo differences calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
64
9220
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
65 final VLayout layout = new VLayout();
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
66 final VLayout helperLayout = new VLayout();
7971
93da474506e7 Changed twin dc panel in bed height deifferences to single dc and use the new differences dc macro.
Raimund Renkert <rrenkert@intevation.de>
parents: 7921
diff changeset
67 helperLayout.addMember(datacage);
93da474506e7 Changed twin dc panel in bed height deifferences to single dc and use the new differences dc macro.
Raimund Renkert <rrenkert@intevation.de>
parents: 7921
diff changeset
68 helperLayout.addMember(plusBtn);
3508
60984be9bcfa MINFO: Added UI for minfo differences calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
69
60984be9bcfa MINFO: Added UI for minfo differences calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
70 layout.addMember(widget);
60984be9bcfa MINFO: Added UI for minfo differences calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
71 layout.addMember(submit);
60984be9bcfa MINFO: Added UI for minfo differences calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
72 layout.setMembersMargin(10);
60984be9bcfa MINFO: Added UI for minfo differences calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
73 this.helperContainer.addMember(helperLayout);
60984be9bcfa MINFO: Added UI for minfo differences calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
74
60984be9bcfa MINFO: Added UI for minfo differences calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
75 return layout;
60984be9bcfa MINFO: Added UI for minfo differences calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
76 }
60984be9bcfa MINFO: Added UI for minfo differences calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
77
7971
93da474506e7 Changed twin dc panel in bed height deifferences to single dc and use the new differences dc macro.
Raimund Renkert <rrenkert@intevation.de>
parents: 7921
diff changeset
78 /**
93da474506e7 Changed twin dc panel in bed height deifferences to single dc and use the new differences dc macro.
Raimund Renkert <rrenkert@intevation.de>
parents: 7921
diff changeset
79 * Callback for add-button.
93da474506e7 Changed twin dc panel in bed height deifferences to single dc and use the new differences dc macro.
Raimund Renkert <rrenkert@intevation.de>
parents: 7921
diff changeset
80 * Fires to load for every selected element and handler.
9220
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
81 *
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
82 * @param differencesList
7971
93da474506e7 Changed twin dc panel in bed height deifferences to single dc and use the new differences dc macro.
Raimund Renkert <rrenkert@intevation.de>
parents: 7921
diff changeset
83 */
9220
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
84 protected final static void plusClicked(final DatacageWidget datacage, final ListGrid differencesList) {
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
85 final List<TreeNode> selection = datacage.getPlainSelection();
7971
93da474506e7 Changed twin dc panel in bed height deifferences to single dc and use the new differences dc macro.
Raimund Renkert <rrenkert@intevation.de>
parents: 7921
diff changeset
86
93da474506e7 Changed twin dc panel in bed height deifferences to single dc and use the new differences dc macro.
Raimund Renkert <rrenkert@intevation.de>
parents: 7921
diff changeset
87 if (selection == null || selection.isEmpty()) {
8852
8f6d6d26e96f Refaktored the DatacageTwinPanel so it is reusable.
gernotbelger
parents: 8791
diff changeset
88 SC.say(msg().warning());
7971
93da474506e7 Changed twin dc panel in bed height deifferences to single dc and use the new differences dc macro.
Raimund Renkert <rrenkert@intevation.de>
parents: 7921
diff changeset
89 return;
93da474506e7 Changed twin dc panel in bed height deifferences to single dc and use the new differences dc macro.
Raimund Renkert <rrenkert@intevation.de>
parents: 7921
diff changeset
90 }
93da474506e7 Changed twin dc panel in bed height deifferences to single dc and use the new differences dc macro.
Raimund Renkert <rrenkert@intevation.de>
parents: 7921
diff changeset
91
9220
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
92 for (final TreeNode node : selection) {
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
93 final ToLoad toLoad1 = new ToLoad();
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
94 final ToLoad toLoad2 = new ToLoad();
7971
93da474506e7 Changed twin dc panel in bed height deifferences to single dc and use the new differences dc macro.
Raimund Renkert <rrenkert@intevation.de>
parents: 7921
diff changeset
95
9220
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
96 final String factory = node.getAttribute("factory");
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
97 if (factory != null) { // we need at least a factory
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
98 final String artifact = node.getAttribute("artifact-id");
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
99 final String out = node.getAttribute("out");
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
100 final String name = node.getAttribute("facet");
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
101 final String ids = node.getAttribute("ids");
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
102 final String info = node.getAttribute("info");
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
103 final String targetOut = node.getAttribute("target_out");
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
104
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
105 final String[] splitIds = ids.split("#");
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
106 final String[] splitInfo = info.split("#");
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
107 toLoad1.add(artifact, factory, out, name, splitIds[0], splitInfo[0], targetOut);
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
108 toLoad2.add(artifact, factory, out, name, splitIds[1], splitInfo[1], targetOut);
7971
93da474506e7 Changed twin dc panel in bed height deifferences to single dc and use the new differences dc macro.
Raimund Renkert <rrenkert@intevation.de>
parents: 7921
diff changeset
109 }
9220
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
110 differencesList.addData(new RecommendationPairRecord(toLoad1.toRecommendations().get(0), toLoad2.toRecommendations().get(0)));
7971
93da474506e7 Changed twin dc panel in bed height deifferences to single dc and use the new differences dc macro.
Raimund Renkert <rrenkert@intevation.de>
parents: 7921
diff changeset
111 }
93da474506e7 Changed twin dc panel in bed height deifferences to single dc and use the new differences dc macro.
Raimund Renkert <rrenkert@intevation.de>
parents: 7921
diff changeset
112 }
9220
e3c2ae1887e8 Allow to filter contents of datacage on client side.
gernotbelger
parents: 8860
diff changeset
113 }

http://dive4elements.wald.intevation.org