annotate flys-client/src/main/java/de/intevation/flys/client/client/ui/SingleLocationPanel.java @ 4215:c179cd02177d

Logout the current user Add code to the logout button to remove the current user from the session and to redirect the browser window to the login page. Part of flys/issue916 (Logout: "Abmelden" Knopf mit Funktion belegen)
author Björn Ricks <bjoern.ricks@intevation.de>
date Tue, 23 Oct 2012 09:59:16 +0200
parents 03de5c424f95
children 480de0dbca8e
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;
8e6b1df7c3b0 Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2938
diff changeset
6 import com.smartgwt.client.widgets.grid.events.RecordClickEvent;
8e6b1df7c3b0 Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2938
diff changeset
7
8e6b1df7c3b0 Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2938
diff changeset
8 import de.intevation.flys.client.shared.model.Data;
8e6b1df7c3b0 Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2938
diff changeset
9
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
10 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
11 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
12
238
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
13 /**
1590
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1586
diff changeset
14 * 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
15 */
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
16 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
17 extends MultipleLocationPanel
238
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
18 {
4184
03de5c424f95 Fix warnings and minor TODOs in flys-client.
Christian Lins <christian.lins@intevation.de>
parents: 3493
diff changeset
19 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
20
03de5c424f95 Fix warnings and minor TODOs in flys-client.
Christian Lins <christian.lins@intevation.de>
parents: 3493
diff changeset
21
238
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
22 /**
2897
133820d1e6bf cosmetic.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1617
diff changeset
23 * Creates a new SingleLocationPanel instance.
238
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
24 */
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
25 public SingleLocationPanel() {
1590
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1586
diff changeset
26 picker = new LocationPicker(this);
238
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
27 }
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
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
30 /** Overridden to restrict to one entered value. */
1586
dbdf954dbe94 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1585
diff changeset
31 @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
32 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
33 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
34 NumberFormat nf = NumberFormat.getDecimalFormat();
238
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
35
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
36 saveLocationValues(locationPanel);
238
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
37
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
38 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
39 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
40 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
41 }
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
42
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
43 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
44 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
45 int idx = 0;
1590
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1586
diff changeset
46
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
47 // 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
48 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
49 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
50 }
1590
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1586
diff changeset
51
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
52 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
53 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
54 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
55 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
56 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
57 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
58 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
59 }
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 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
61 good[idx++] = value;
1590
4b773cfd11b5 Refactoring to ease code-reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1586
diff changeset
62 }
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
63 }
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
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
65 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
66 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
67 justGood[i] = good[i];
563
469528551b78 Introduced an input validation for the location panels.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 522
diff changeset
68 }
469528551b78 Introduced an input validation for the location panels.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 522
diff changeset
69
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
70 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
71 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
72 }
1591
8ab010967f78 Refactored.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1590
diff changeset
73
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
74 return errors;
1591
8ab010967f78 Refactored.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1590
diff changeset
75 }
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
238
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
78 /**
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
79 * This method returns the selected data.
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
80 *
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
81 * @return the selected/inserted data.
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
82 */
4184
03de5c424f95 Fix warnings and minor TODOs in flys-client.
Christian Lins <christian.lins@intevation.de>
parents: 3493
diff changeset
83 @Override
238
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 */
4184
03de5c424f95 Fix warnings and minor TODOs in flys-client.
Christian Lins <christian.lins@intevation.de>
parents: 3493
diff changeset
107 @Override
2938
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
108 public void onRecordClick (RecordClickEvent e) {
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
109 Record record = e.getRecord();
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
110 double[] selected = new double[1];
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
111 try {
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
112 selected[0] =
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
113 Double.parseDouble(record.getAttribute("from"));
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
114 }
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
115 catch(NumberFormatException nfe) {
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
116 // Is there anything else to do here?
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
117 }
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
118 setLocationValues(selected);
0de3665daf36 Fix issue706.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2897
diff changeset
119 }
3493
e703555f8da1 Issue 752.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2939
diff changeset
120
e703555f8da1 Issue 752.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2939
diff changeset
121
4184
03de5c424f95 Fix warnings and minor TODOs in flys-client.
Christian Lins <christian.lins@intevation.de>
parents: 3493
diff changeset
122 @Override
3493
e703555f8da1 Issue 752.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2939
diff changeset
123 protected String getLabelString() {
e703555f8da1 Issue 752.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2939
diff changeset
124 return MSG.single_location();
e703555f8da1 Issue 752.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2939
diff changeset
125 }
238
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
126 }
234c78a91c15 Added new UI provider for single location selection.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
127 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org