Mercurial > dive4elements > river
annotate gwt-client/src/main/java/org/dive4elements/river/client/client/ui/DatacagePairWidget.java @ 9248:9e6b70cce337
pseudo epoch for salix.historical
author | gernotbelger |
---|---|
date | Thu, 12 Jul 2018 13:27:34 +0200 |
parents | 84397da33d17 |
children |
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; |
899
6e678b5d08a4
New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
10 |
9133
af73fdd96920
Title current/historical diff pair; limit on entries in diff'pair twin_panel
gernotbelger
parents:
8852
diff
changeset
|
11 import org.dive4elements.river.client.client.FLYSConstants; |
af73fdd96920
Title current/historical diff pair; limit on entries in diff'pair twin_panel
gernotbelger
parents:
8852
diff
changeset
|
12 import org.dive4elements.river.client.shared.model.ToLoad; |
af73fdd96920
Title current/historical diff pair; limit on entries in diff'pair twin_panel
gernotbelger
parents:
8852
diff
changeset
|
13 |
899
6e678b5d08a4
New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
14 import com.google.gwt.core.client.GWT; |
4567
5e6e89f19a37
flys/client: Exception catched and replaced by friendly warning (MINFO Sohlhoehendifferenz) #967/flys.
Christian Lins <christian.lins@intevation.de>
parents:
4183
diff
changeset
|
15 import com.smartgwt.client.util.SC; |
899
6e678b5d08a4
New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
16 import com.smartgwt.client.widgets.Button; |
4567
5e6e89f19a37
flys/client: Exception catched and replaced by friendly warning (MINFO Sohlhoehendifferenz) #967/flys.
Christian Lins <christian.lins@intevation.de>
parents:
4183
diff
changeset
|
17 import com.smartgwt.client.widgets.events.ClickEvent; |
4182
ad2489b595d7
Fix for issue #967
Christian Lins <christian.lins@intevation.de>
parents:
3549
diff
changeset
|
18 import com.smartgwt.client.widgets.events.ClickHandler; |
899
6e678b5d08a4
New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
19 import com.smartgwt.client.widgets.grid.ListGrid; |
4567
5e6e89f19a37
flys/client: Exception catched and replaced by friendly warning (MINFO Sohlhoehendifferenz) #967/flys.
Christian Lins <christian.lins@intevation.de>
parents:
4183
diff
changeset
|
20 import com.smartgwt.client.widgets.layout.HLayout; |
5e6e89f19a37
flys/client: Exception catched and replaced by friendly warning (MINFO Sohlhoehendifferenz) #967/flys.
Christian Lins <christian.lins@intevation.de>
parents:
4183
diff
changeset
|
21 import com.smartgwt.client.widgets.layout.VLayout; |
899
6e678b5d08a4
New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
22 |
914
39a39e9be5af
Made DatacageTwinPanel somewhat usable.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
899
diff
changeset
|
23 /** |
3549
6a8f83c538e3
Merged revisions 5384 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3533
diff
changeset
|
24 * Widget showing two Datacages and a add-this-button. |
6a8f83c538e3
Merged revisions 5384 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3533
diff
changeset
|
25 * Insert a record into a listgrid when add-this-button clicked. |
914
39a39e9be5af
Made DatacageTwinPanel somewhat usable.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
899
diff
changeset
|
26 */ |
9133
af73fdd96920
Title current/historical diff pair; limit on entries in diff'pair twin_panel
gernotbelger
parents:
8852
diff
changeset
|
27 public class DatacagePairWidget extends VLayout { |
9227
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
28 |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
29 /** |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
30 * Allows for advanced controlling of the behavior of this pair widget. |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
31 */ |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
32 public static interface IDatacagePairControler { |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
33 void setup(DatacageWidget leftWidget, DatacageWidget rightWidget, HLayout toolbarLayout); |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
34 } |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
35 |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
36 /** |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
37 * {@link IDatacagePairControler} implementation that does nothing. |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
38 */ |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
39 public static final IDatacagePairControler NIL_CONTROLER = new IDatacagePairControler() { |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
40 @Override |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
41 public void setup(final DatacageWidget leftWidget, final DatacageWidget rightWidget, final HLayout toolbarLayout) { |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
42 // does nothing |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
43 } |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
44 }; |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
45 |
3549
6a8f83c538e3
Merged revisions 5384 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3533
diff
changeset
|
46 /** i18n resource. */ |
9227
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
47 private static final FLYSConstants MSG = GWT.create(FLYSConstants.class); |
2905
51ed89b754ae
FLYS client: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1352
diff
changeset
|
48 |
1284
cdb1505a32f1
Fix messed up indentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1283
diff
changeset
|
49 /** The "remote" ListGrid to insert data to when add-button is clicked. */ |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
9133
diff
changeset
|
50 private final ListGrid grid; |
2905
51ed89b754ae
FLYS client: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1352
diff
changeset
|
51 |
1284
cdb1505a32f1
Fix messed up indentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1283
diff
changeset
|
52 /** First (upper) DataCage Grid. */ |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
9133
diff
changeset
|
53 private final DatacageWidget firstDatacageWidget; |
2905
51ed89b754ae
FLYS client: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1352
diff
changeset
|
54 |
1284
cdb1505a32f1
Fix messed up indentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1283
diff
changeset
|
55 /** Second (lower) DataCage Grid. */ |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
9133
diff
changeset
|
56 private final DatacageWidget secondDatacageWidget; |
1298
b0ed67cb5197
Minor refactoring, improved displayed Strings in W-Diff branch.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1295
diff
changeset
|
57 |
9133
af73fdd96920
Title current/historical diff pair; limit on entries in diff'pair twin_panel
gernotbelger
parents:
8852
diff
changeset
|
58 /** Max number of recommendation pairs to be added */ |
af73fdd96920
Title current/historical diff pair; limit on entries in diff'pair twin_panel
gernotbelger
parents:
8852
diff
changeset
|
59 private final int maxCount; |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
9133
diff
changeset
|
60 |
9133
af73fdd96920
Title current/historical diff pair; limit on entries in diff'pair twin_panel
gernotbelger
parents:
8852
diff
changeset
|
61 /** errorMsg maxCount */ |
af73fdd96920
Title current/historical diff pair; limit on entries in diff'pair twin_panel
gernotbelger
parents:
8852
diff
changeset
|
62 private final String msgMaxCount; |
2905
51ed89b754ae
FLYS client: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1352
diff
changeset
|
63 |
9227
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
64 public DatacagePairWidget(final IDatacagePairControler controler, final DatacageWidgetData leftData, final DatacageWidgetData rightData, |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
65 final ListGrid grid, final int maxCount, final String msgMaxCount) { |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
66 |
9133
af73fdd96920
Title current/historical diff pair; limit on entries in diff'pair twin_panel
gernotbelger
parents:
8852
diff
changeset
|
67 this.msgMaxCount = msgMaxCount; |
af73fdd96920
Title current/historical diff pair; limit on entries in diff'pair twin_panel
gernotbelger
parents:
8852
diff
changeset
|
68 this.maxCount = maxCount; |
899
6e678b5d08a4
New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
69 this.grid = grid; |
6e678b5d08a4
New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
70 |
9133
af73fdd96920
Title current/historical diff pair; limit on entries in diff'pair twin_panel
gernotbelger
parents:
8852
diff
changeset
|
71 final HLayout hLayout = new HLayout(); |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
9133
diff
changeset
|
72 |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
9133
diff
changeset
|
73 this.firstDatacageWidget = new DatacageWidget(leftData); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
9133
diff
changeset
|
74 this.secondDatacageWidget = new DatacageWidget(rightData); |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
9133
diff
changeset
|
75 |
9133
af73fdd96920
Title current/historical diff pair; limit on entries in diff'pair twin_panel
gernotbelger
parents:
8852
diff
changeset
|
76 this.firstDatacageWidget.setIsMutliSelectable(false); |
af73fdd96920
Title current/historical diff pair; limit on entries in diff'pair twin_panel
gernotbelger
parents:
8852
diff
changeset
|
77 this.secondDatacageWidget.setIsMutliSelectable(false); |
899
6e678b5d08a4
New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
78 |
9133
af73fdd96920
Title current/historical diff pair; limit on entries in diff'pair twin_panel
gernotbelger
parents:
8852
diff
changeset
|
79 hLayout.addMember(this.firstDatacageWidget); |
af73fdd96920
Title current/historical diff pair; limit on entries in diff'pair twin_panel
gernotbelger
parents:
8852
diff
changeset
|
80 hLayout.addMember(this.secondDatacageWidget); |
899
6e678b5d08a4
New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
81 |
9227
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
82 final HLayout toolbarLayout = new HLayout(); |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
83 toolbarLayout.setAutoHeight(); |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
84 |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
85 final Button plusBtn = new Button(MSG.datacage_add_pair()); |
3533
a4b2220e59a6
Change button title in DatacagePairWidget (#746).
Christian Lins <christian.lins@intevation.de>
parents:
2905
diff
changeset
|
86 plusBtn.setAutoFit(true); |
899
6e678b5d08a4
New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
87 plusBtn.addClickHandler(new ClickHandler() { |
6e678b5d08a4
New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
88 @Override |
9133
af73fdd96920
Title current/historical diff pair; limit on entries in diff'pair twin_panel
gernotbelger
parents:
8852
diff
changeset
|
89 public void onClick(final ClickEvent event) { |
899
6e678b5d08a4
New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
90 plusClicked(); |
6e678b5d08a4
New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
91 } |
6e678b5d08a4
New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
92 }); |
9227
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
93 toolbarLayout.addMember(plusBtn); |
899
6e678b5d08a4
New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
94 |
6e678b5d08a4
New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
95 addMember(hLayout); |
9227
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
96 addMember(toolbarLayout); |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
97 |
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
98 controler.setup(this.firstDatacageWidget, this.secondDatacageWidget, toolbarLayout); |
899
6e678b5d08a4
New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
99 } |
6e678b5d08a4
New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
100 |
6e678b5d08a4
New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
101 /** |
6e678b5d08a4
New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
102 * Callback for add-button. |
6e678b5d08a4
New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
103 * Fires to load for every selected element and handler. |
6e678b5d08a4
New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
104 */ |
9227
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
105 protected final void plusClicked() { |
9133
af73fdd96920
Title current/historical diff pair; limit on entries in diff'pair twin_panel
gernotbelger
parents:
8852
diff
changeset
|
106 final ToLoad toLoad1 = this.firstDatacageWidget.getSelection(); |
af73fdd96920
Title current/historical diff pair; limit on entries in diff'pair twin_panel
gernotbelger
parents:
8852
diff
changeset
|
107 final ToLoad toLoad2 = this.secondDatacageWidget.getSelection(); |
899
6e678b5d08a4
New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
108 |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
9133
diff
changeset
|
109 // FIXME: allows to select folders... but it should not |
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
9133
diff
changeset
|
110 |
9133
af73fdd96920
Title current/historical diff pair; limit on entries in diff'pair twin_panel
gernotbelger
parents:
8852
diff
changeset
|
111 if (toLoad1 == null || toLoad2 == null || toLoad1.toRecommendations().isEmpty() || toLoad2.toRecommendations().isEmpty()) { |
9227
84397da33d17
Allow to control specific behaviour in TwinDatacagePanel
gernotbelger
parents:
9220
diff
changeset
|
112 SC.say(MSG.warning_select_two_values()); |
9133
af73fdd96920
Title current/historical diff pair; limit on entries in diff'pair twin_panel
gernotbelger
parents:
8852
diff
changeset
|
113 return; |
af73fdd96920
Title current/historical diff pair; limit on entries in diff'pair twin_panel
gernotbelger
parents:
8852
diff
changeset
|
114 } |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
9133
diff
changeset
|
115 |
9133
af73fdd96920
Title current/historical diff pair; limit on entries in diff'pair twin_panel
gernotbelger
parents:
8852
diff
changeset
|
116 if (this.grid.getTotalRows() >= this.maxCount) { |
af73fdd96920
Title current/historical diff pair; limit on entries in diff'pair twin_panel
gernotbelger
parents:
8852
diff
changeset
|
117 SC.say(this.msgMaxCount); |
899
6e678b5d08a4
New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
118 return; |
6e678b5d08a4
New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
119 } |
6e678b5d08a4
New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
120 |
9133
af73fdd96920
Title current/historical diff pair; limit on entries in diff'pair twin_panel
gernotbelger
parents:
8852
diff
changeset
|
121 this.grid.addData(new RecommendationPairRecord(toLoad1.toRecommendations().get(0), toLoad2.toRecommendations().get(0))); |
899
6e678b5d08a4
New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
122 } |
9220
e3c2ae1887e8
Allow to filter contents of datacage on client side.
gernotbelger
parents:
9133
diff
changeset
|
123 } |