annotate flys-client/src/main/java/de/intevation/flys/client/client/ui/SingleLocationPanel.java @ 2938:0de3665daf36

Fix issue706. flys-client/trunk@4892 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Sun, 08 Jul 2012 07:44:34 +0000
parents 133820d1e6bf
children 8e6b1df7c3b0
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
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
3 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
4 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
5
2938
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
6 import com.google.gwt.core.client.GWT;
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
7 import com.google.gwt.i18n.client.NumberFormat;
1538
92f81eac034a Added filter implementation for input helper tables in single location and
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1534
diff changeset
8
238
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
9 import de.intevation.flys.client.shared.model.Data;
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
10
2938
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
11 import com.smartgwt.client.widgets.grid.events.RecordClickHandler;
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
12 import com.smartgwt.client.widgets.grid.events.RecordClickEvent;
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
13
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
14 import com.smartgwt.client.data.Record;
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
15
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 /**
1590
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1586
diff changeset
18 * 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
19 */
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
20 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
21 extends MultipleLocationPanel
238
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
22 {
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 */
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
84 public Data[] getData() {
242
f9ca49e59fb6 Fixed the single location input panel.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 238
diff changeset
85 saveLocationValues(locationPanel);
1617
f13a7c126f24 Allow selection of multiple locations with mouse in MultipleLocationPanel.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1612
diff changeset
86 double[] values = getLocationValues();
1387
3cbc7fbfff0e Set attribute 'ld_mode' in appropiate UIProviders.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 907
diff changeset
87 Data[] data = new Data[values.length+1];
1586
dbdf954dbe94 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1585
diff changeset
88
238
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
89 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
90 data[i] = createDataArray(getDataItemName(),
238
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
91 Double.valueOf(values[i]).toString());
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
92 }
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
93
1586
dbdf954dbe94 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1585
diff changeset
94 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
95
238
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
96 return data;
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
97 }
2938
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
98
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 /* This is a copy of super.super.onRecordClick. Straighten out
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
101 this weird family. */
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
102 /**
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
103 * Callback when an item from the input helper was clicked.
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
104 * Set the respective km-value in the location value field.
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
105 * @param e event passed.
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
106 */
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
107 public void onRecordClick (RecordClickEvent e) {
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
108 Record record = e.getRecord();
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
109 double[] selected = new double[1];
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
110 try {
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
111 selected[0] =
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
112 Double.parseDouble(record.getAttribute("from"));
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
113 }
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
114 catch(NumberFormatException nfe) {
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
115 // Is there anything else to do here?
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
116 }
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
117 setLocationValues(selected);
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
118 }
238
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
119 }
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
120 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org