annotate flys-client/src/main/java/de/intevation/flys/client/client/ui/SingleLocationPanel.java @ 4221:480de0dbca8e

Extended location input helper. The locationpicker has now an attribute whether the input is distance or location to display one or two clickable columns. Replaced the record click handler with cell click handler.
author Raimund Renkert <rrenkert@intevation.de>
date Tue, 23 Oct 2012 13:17:20 +0200
parents 03de5c424f95
children
rev   line source
238
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.client.client.ui;
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
2
2939
8e6b1df7c3b0 Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2938
diff changeset
3 import com.google.gwt.i18n.client.NumberFormat;
8e6b1df7c3b0 Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2938
diff changeset
4
8e6b1df7c3b0 Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2938
diff changeset
5 import com.smartgwt.client.data.Record;
4221
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 4184
diff changeset
6
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 4184
diff changeset
7 import com.smartgwt.client.widgets.grid.events.CellClickEvent;
2939
8e6b1df7c3b0 Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2938
diff changeset
8
8e6b1df7c3b0 Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2938
diff changeset
9 import de.intevation.flys.client.shared.model.Data;
8e6b1df7c3b0 Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2938
diff changeset
10
1612
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
11 import java.util.ArrayList;
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
12 import java.util.List;
906
39acba4b5f0b Added formatter for numeric columns that converts the decimal separator.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 903
diff changeset
13
238
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
14 /**
1590
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1586
diff changeset
15 * This UIProvider creates a widget to enter a single location (km).
238
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
16 */
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
17 public class SingleLocationPanel
1612
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
18 extends MultipleLocationPanel
238
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
19 {
4184
03de5c424f95 Fix warnings and minor TODOs in flys-client.
Christian Lins <christian.lins@intevation.de>
parents: 3493
diff changeset
20 private static final long serialVersionUID = -300641333561787454L;
03de5c424f95 Fix warnings and minor TODOs in flys-client.
Christian Lins <christian.lins@intevation.de>
parents: 3493
diff changeset
21
03de5c424f95 Fix warnings and minor TODOs in flys-client.
Christian Lins <christian.lins@intevation.de>
parents: 3493
diff changeset
22
238
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
23 /**
2897
133820d1e6bf cosmetic.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1617
diff changeset
24 * Creates a new SingleLocationPanel instance.
238
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
25 */
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
26 public SingleLocationPanel() {
1590
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1586
diff changeset
27 picker = new LocationPicker(this);
238
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
28 }
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
29
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
30
1612
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
31 /** Overridden to restrict to one entered value. */
1586
dbdf954dbe94 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1585
diff changeset
32 @Override
1612
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
33 public List<String> validate() {
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
34 List<String> errors = new ArrayList<String>();
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
35 NumberFormat nf = NumberFormat.getDecimalFormat();
238
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
36
1612
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
37 saveLocationValues(locationPanel);
238
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
38
1612
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
39 if (!locationPanel.validateForm()) {
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
40 errors.add(MSG.wrongFormat());
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
41 return errors;
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
42 }
519
77234b1d009c ISSUE-90 & ISSUE-40 (part II/II) Former selected values are preselected after back jumps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 284
diff changeset
43
1612
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
44 double[] values = getLocationValues();
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
45 double[] good = new double[values.length];
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
46 int idx = 0;
1590
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1586
diff changeset
47
1612
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
48 // We want just one value to be allowed.
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
49 if (values.length > 1) {
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
50 errors.add(MSG.too_many_values());
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
51 }
1590
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1586
diff changeset
52
1612
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
53 for (double value: values) {
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
54 if (value < min || value > max) {
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
55 String tmp = MSG.error_validate_range();
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
56 tmp = tmp.replace("$1", nf.format(value));
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
57 tmp = tmp.replace("$2", nf.format(min));
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
58 tmp = tmp.replace("$3", nf.format(max));
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
59 errors.add(tmp);
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
60 }
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
61 else {
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
62 good[idx++] = value;
1590
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1586
diff changeset
63 }
519
77234b1d009c ISSUE-90 & ISSUE-40 (part II/II) Former selected values are preselected after back jumps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 284
diff changeset
64 }
77234b1d009c ISSUE-90 & ISSUE-40 (part II/II) Former selected values are preselected after back jumps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 284
diff changeset
65
1612
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
66 double[] justGood = new double[idx];
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
67 for (int i = 0; i < justGood.length; i++) {
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
68 justGood[i] = good[i];
563
469528551b78 Introduced an input validation for the location panels.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 522
diff changeset
69 }
469528551b78 Introduced an input validation for the location panels.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 522
diff changeset
70
1612
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
71 if (!errors.isEmpty()) {
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
72 locationPanel.setValues(justGood);
519
77234b1d009c ISSUE-90 & ISSUE-40 (part II/II) Former selected values are preselected after back jumps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 284
diff changeset
73 }
1591
8ab010967f78 Refactored.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1590
diff changeset
74
1612
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
75 return errors;
1591
8ab010967f78 Refactored.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1590
diff changeset
76 }
8ab010967f78 Refactored.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1590
diff changeset
77
8ab010967f78 Refactored.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1590
diff changeset
78
238
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
79 /**
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
80 * This method returns the selected data.
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
81 *
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
82 * @return the selected/inserted data.
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
83 */
4184
03de5c424f95 Fix warnings and minor TODOs in flys-client.
Christian Lins <christian.lins@intevation.de>
parents: 3493
diff changeset
84 @Override
238
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
85 public Data[] getData() {
242
f9ca49e59fb6 Fixed the single location input panel.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 238
diff changeset
86 saveLocationValues(locationPanel);
1617
f13a7c126f24 Allow selection of multiple locations with mouse in MultipleLocationPanel.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1612
diff changeset
87 double[] values = getLocationValues();
1387
3cbc7fbfff0e Set attribute 'ld_mode' in appropiate UIProviders.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 907
diff changeset
88 Data[] data = new Data[values.length+1];
1586
dbdf954dbe94 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1585
diff changeset
89
238
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
90 for (int i = 0; i < values.length; i++) {
1593
ff9d71469b7c Adjusted to be able to feed data to reference curves.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1591
diff changeset
91 data[i] = createDataArray(getDataItemName(),
238
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
92 Double.valueOf(values[i]).toString());
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
93 }
1612
66671b69c7ea Added new UIProvider to enter mutliple locations (yet only input view textfield possible).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1594
diff changeset
94
1586
dbdf954dbe94 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1585
diff changeset
95 data[values.length] = createDataArray("ld_mode", "locations");
1387
3cbc7fbfff0e Set attribute 'ld_mode' in appropiate UIProviders.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 907
diff changeset
96
238
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
97 return data;
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
98 }
2938
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
99
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
100
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
101 /* This is a copy of super.super.onRecordClick. Straighten out
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
102 this weird family. */
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
103 /**
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
104 * Callback when an item from the input helper was clicked.
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
105 * Set the respective km-value in the location value field.
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
106 * @param e event passed.
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
107 */
4184
03de5c424f95 Fix warnings and minor TODOs in flys-client.
Christian Lins <christian.lins@intevation.de>
parents: 3493
diff changeset
108 @Override
4221
480de0dbca8e Extended location input helper.
Raimund Renkert <rrenkert@intevation.de>
parents: 4184
diff changeset
109 public void onCellClick (CellClickEvent e) {
2938
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
110 Record record = e.getRecord();
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
111 double[] selected = new double[1];
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
112 try {
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
113 selected[0] =
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
114 Double.parseDouble(record.getAttribute("from"));
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
115 }
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
116 catch(NumberFormatException nfe) {
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
117 // Is there anything else to do here?
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
118 }
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
119 setLocationValues(selected);
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
120 }
3493
e703555f8da1 Issue 752.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2939
diff changeset
121
e703555f8da1 Issue 752.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2939
diff changeset
122
4184
03de5c424f95 Fix warnings and minor TODOs in flys-client.
Christian Lins <christian.lins@intevation.de>
parents: 3493
diff changeset
123 @Override
3493
e703555f8da1 Issue 752.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2939
diff changeset
124 protected String getLabelString() {
e703555f8da1 Issue 752.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2939
diff changeset
125 return MSG.single_location();
e703555f8da1 Issue 752.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2939
diff changeset
126 }
238
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
127 }
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
128 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org