annotate gwt-client/src/main/java/org/dive4elements/river/client/client/ui/DatacagePairWidget.java @ 7602:c50dbbe17950

issue1596: Store table (cell) data twice: Once as (formatted) string as coming from server, once transformed into float (or string). The benefit is that now we can sort table data numerically, while keeping the formatted and i18ned display of values.
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Wed, 27 Nov 2013 14:55:25 +0100
parents ea9eef426962
children 8f6d6d26e96f
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
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
11 import com.google.gwt.core.client.GWT;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
12
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
13 import com.smartgwt.client.util.SC;
899
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
14 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
15 import com.smartgwt.client.widgets.events.ClickEvent;
4182
ad2489b595d7 Fix for issue #967
Christian Lins <christian.lins@intevation.de>
parents: 3549
diff changeset
16 import com.smartgwt.client.widgets.events.ClickHandler;
899
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
17 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
18 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
19 import com.smartgwt.client.widgets.layout.VLayout;
899
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
20
5835
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
21 import org.dive4elements.river.client.client.FLYSConstants;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
22 import org.dive4elements.river.client.shared.model.Artifact;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
23 import org.dive4elements.river.client.shared.model.ToLoad;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
24 import org.dive4elements.river.client.shared.model.User;
899
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
25
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
26
914
39a39e9be5af Made DatacageTwinPanel somewhat usable.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 899
diff changeset
27 /**
3549
6a8f83c538e3 Merged revisions 5384 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3533
diff changeset
28 * 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
29 * 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
30 */
899
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
31 public class DatacagePairWidget
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
32 extends VLayout
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
33 {
3549
6a8f83c538e3 Merged revisions 5384 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3533
diff changeset
34 /** i18n resource. */
3533
a4b2220e59a6 Change button title in DatacagePairWidget (#746).
Christian Lins <christian.lins@intevation.de>
parents: 2905
diff changeset
35 protected FLYSConstants MSG =
1284
cdb1505a32f1 Fix messed up indentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1283
diff changeset
36 GWT.create(FLYSConstants.class);
2905
51ed89b754ae FLYS client: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1352
diff changeset
37
1284
cdb1505a32f1 Fix messed up indentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1283
diff changeset
38 /** The "remote" ListGrid to insert data to when add-button is clicked. */
2905
51ed89b754ae FLYS client: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1352
diff changeset
39 protected ListGrid grid;
51ed89b754ae FLYS client: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1352
diff changeset
40
1284
cdb1505a32f1 Fix messed up indentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1283
diff changeset
41 /** First (upper) DataCage Grid. */
cdb1505a32f1 Fix messed up indentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1283
diff changeset
42 protected DatacageWidget firstDatacageWidget;
2905
51ed89b754ae FLYS client: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1352
diff changeset
43
1284
cdb1505a32f1 Fix messed up indentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1283
diff changeset
44 /** Second (lower) DataCage Grid. */
cdb1505a32f1 Fix messed up indentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1283
diff changeset
45 protected DatacageWidget secondDatacageWidget;
1298
b0ed67cb5197 Minor refactoring, improved displayed Strings in W-Diff branch.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1295
diff changeset
46
2905
51ed89b754ae FLYS client: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1352
diff changeset
47
1284
cdb1505a32f1 Fix messed up indentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1283
diff changeset
48 /**
cdb1505a32f1 Fix messed up indentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1283
diff changeset
49 *
cdb1505a32f1 Fix messed up indentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1283
diff changeset
50 * @param artifact Artifact to query datacage with.
cdb1505a32f1 Fix messed up indentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1283
diff changeset
51 * @param user User to query datacage with.
cdb1505a32f1 Fix messed up indentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1283
diff changeset
52 * @param outs outs to query datacage with.
cdb1505a32f1 Fix messed up indentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1283
diff changeset
53 * @param grid Grid into which to insert selection of pairs.
cdb1505a32f1 Fix messed up indentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1283
diff changeset
54 */
cdb1505a32f1 Fix messed up indentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1283
diff changeset
55 public DatacagePairWidget(Artifact artifact,
1283
e8bb11976c70 Neaten certain GUI aspects with W-Diff waterlevel-pair selection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 917
diff changeset
56 User user,
e8bb11976c70 Neaten certain GUI aspects with W-Diff waterlevel-pair selection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 917
diff changeset
57 String outs,
e8bb11976c70 Neaten certain GUI aspects with W-Diff waterlevel-pair selection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 917
diff changeset
58 ListGrid grid) {
899
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
59 this.grid = grid;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
60
1283
e8bb11976c70 Neaten certain GUI aspects with W-Diff waterlevel-pair selection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 917
diff changeset
61 HLayout hLayout = new HLayout();
1349
46a4b74d87bf Allow (yet limited) usage of zus and flood-protection data in wdiffs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1301
diff changeset
62 firstDatacageWidget = new DatacageWidget(
46a4b74d87bf Allow (yet limited) usage of zus and flood-protection data in wdiffs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1301
diff changeset
63 artifact,
46a4b74d87bf Allow (yet limited) usage of zus and flood-protection data in wdiffs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1301
diff changeset
64 user,
2905
51ed89b754ae FLYS client: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1352
diff changeset
65 outs,
1349
46a4b74d87bf Allow (yet limited) usage of zus and flood-protection data in wdiffs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1301
diff changeset
66 "load-system:true",
46a4b74d87bf Allow (yet limited) usage of zus and flood-protection data in wdiffs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1301
diff changeset
67 false);
46a4b74d87bf Allow (yet limited) usage of zus and flood-protection data in wdiffs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1301
diff changeset
68 secondDatacageWidget = new DatacageWidget(
46a4b74d87bf Allow (yet limited) usage of zus and flood-protection data in wdiffs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1301
diff changeset
69 artifact,
46a4b74d87bf Allow (yet limited) usage of zus and flood-protection data in wdiffs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1301
diff changeset
70 user,
46a4b74d87bf Allow (yet limited) usage of zus and flood-protection data in wdiffs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1301
diff changeset
71 outs,
46a4b74d87bf Allow (yet limited) usage of zus and flood-protection data in wdiffs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1301
diff changeset
72 "load-system:true",
46a4b74d87bf Allow (yet limited) usage of zus and flood-protection data in wdiffs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1301
diff changeset
73 false);
1283
e8bb11976c70 Neaten certain GUI aspects with W-Diff waterlevel-pair selection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 917
diff changeset
74 firstDatacageWidget.setIsMutliSelectable(false);
e8bb11976c70 Neaten certain GUI aspects with W-Diff waterlevel-pair selection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 917
diff changeset
75 secondDatacageWidget.setIsMutliSelectable(false);
899
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
76
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
77 hLayout.addMember(firstDatacageWidget);
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
78 hLayout.addMember(secondDatacageWidget);
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
79
3533
a4b2220e59a6 Change button title in DatacagePairWidget (#746).
Christian Lins <christian.lins@intevation.de>
parents: 2905
diff changeset
80 // TODO: icon
a4b2220e59a6 Change button title in DatacagePairWidget (#746).
Christian Lins <christian.lins@intevation.de>
parents: 2905
diff changeset
81 Button plusBtn = new Button(MSG.datacage_add_pair());
a4b2220e59a6 Change button title in DatacagePairWidget (#746).
Christian Lins <christian.lins@intevation.de>
parents: 2905
diff changeset
82 plusBtn.setAutoFit(true);
899
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
83 plusBtn.addClickHandler(new ClickHandler() {
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
84 @Override
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
85 public void onClick(ClickEvent event) {
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
86 plusClicked();
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
87 }
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
88 });
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
89
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
90 addMember(hLayout);
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
91 addMember(plusBtn);
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
92 }
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
93
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 /**
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
96 * Callback for add-button.
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
97 * Fires to load for every selected element and handler.
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
98 */
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
99 public void plusClicked() {
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
100 ToLoad toLoad1 = firstDatacageWidget.getSelection();
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
101 ToLoad toLoad2 = secondDatacageWidget.getSelection();
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
102
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
103 if (toLoad1 == null || toLoad2 == null ||
5e6e89f19a37 flys/client: Exception catched and replaced by friendly warning (MINFO Sohlhoehendifferenz) #967/flys.
Christian Lins <christian.lins@intevation.de>
parents: 4183
diff changeset
104 toLoad1.toRecommendations().isEmpty() ||
5e6e89f19a37 flys/client: Exception catched and replaced by friendly warning (MINFO Sohlhoehendifferenz) #967/flys.
Christian Lins <christian.lins@intevation.de>
parents: 4183
diff changeset
105 toLoad2.toRecommendations().isEmpty()) {
5e6e89f19a37 flys/client: Exception catched and replaced by friendly warning (MINFO Sohlhoehendifferenz) #967/flys.
Christian Lins <christian.lins@intevation.de>
parents: 4183
diff changeset
106 SC.say(MSG.warning_select_two_values());
899
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
107 return;
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
108 }
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
109
4183
Christian Lins <christian.lins@intevation.de>
parents: 4182
diff changeset
110 grid.addData(new RecommendationPairRecord(
Christian Lins <christian.lins@intevation.de>
parents: 4182
diff changeset
111 toLoad1.toRecommendations().get(0),
Christian Lins <christian.lins@intevation.de>
parents: 4182
diff changeset
112 toLoad2.toRecommendations().get(0)));
899
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
113 }
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
114 }
6e678b5d08a4 New widget for future use.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
115 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org