Mercurial > dive4elements > river
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 } |