annotate gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ParameterMatrixPanel.java @ 9391:2da486c7c05f

salix historical sounding workflow changed
author gernotbelger
date Thu, 09 Aug 2018 17:25:13 +0200
parents f575ff573cbb
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;
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
11 import java.util.ArrayList;
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
12 import java.util.List;
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
13 import java.util.Map;
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
14 import java.util.Set;
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15
5835
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
16 import org.dive4elements.river.client.client.FLYSConstants;
9391
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
17 import org.dive4elements.river.client.client.ui.ParameterMatrix.Column.SelectionMode;
5835
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
18 import org.dive4elements.river.client.shared.model.Data;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
19 import org.dive4elements.river.client.shared.model.DataItem;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
20 import org.dive4elements.river.client.shared.model.DataList;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
21 import org.dive4elements.river.client.shared.model.DefaultData;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
22 import org.dive4elements.river.client.shared.model.DefaultDataItem;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
23 import org.dive4elements.river.client.shared.model.IntegerOptionsData;
7826
982382d9ea8b Display the additional information extracted from multiattribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 7580
diff changeset
24 import org.dive4elements.river.client.shared.model.MultiAttributeData;
5835
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
25 import org.dive4elements.river.client.shared.model.StringOptionsData;
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
26
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
27 import com.google.gwt.core.client.GWT;
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
28 import com.smartgwt.client.widgets.Canvas;
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
29 import com.smartgwt.client.widgets.Label;
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
30 import com.smartgwt.client.widgets.layout.HLayout;
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
31 import com.smartgwt.client.widgets.layout.LayoutSpacer;
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
32 import com.smartgwt.client.widgets.layout.VLayout;
4184
03de5c424f95 Fix warnings and minor TODOs in flys-client.
Christian Lins <christian.lins@intevation.de>
parents: 4003
diff changeset
33
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
34 /**
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
36 */
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
37 public class ParameterMatrixPanel extends AbstractUIProvider {
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
38
4184
03de5c424f95 Fix warnings and minor TODOs in flys-client.
Christian Lins <christian.lins@intevation.de>
parents: 4003
diff changeset
39 private static final long serialVersionUID = -5827445025768340371L;
03de5c424f95 Fix warnings and minor TODOs in flys-client.
Christian Lins <christian.lins@intevation.de>
parents: 4003
diff changeset
40
3994
cc0b31dc2789 fix issue898 (crash when no param selected for parametermatrix).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
41 /** The message class that provides i18n strings. */
cc0b31dc2789 fix issue898 (crash when no param selected for parametermatrix).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
42 protected FLYSConstants MESSAGES = GWT.create(FLYSConstants.class);
cc0b31dc2789 fix issue898 (crash when no param selected for parametermatrix).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
43
2525
da1d897ed66d Implemented ParameterMatrixPanel.getData().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2524
diff changeset
44 private ParameterMatrix matrix;
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
45 private final String itemnameColTitle;
9391
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
46 private final SelectionMode mode;
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
47
9391
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
48 public ParameterMatrixPanel(final String itemNameColTitle, final SelectionMode mode) {
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
49 this.itemnameColTitle = itemNameColTitle;
9391
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
50 this.mode = mode;
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
51 }
2525
da1d897ed66d Implemented ParameterMatrixPanel.getData().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2524
diff changeset
52
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
53 @Override
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
54 protected Data[] getData() {
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
55 final Map<String, List<String>> selection = this.matrix.getSelection();
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
56 final Set<Map.Entry<String, List<String>>> entries = selection.entrySet();
2525
da1d897ed66d Implemented ParameterMatrixPanel.getData().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2524
diff changeset
57
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
58 final Data[] list = new Data[this.matrix.getColumnNames().size()];
2525
da1d897ed66d Implemented ParameterMatrixPanel.getData().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2524
diff changeset
59
da1d897ed66d Implemented ParameterMatrixPanel.getData().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2524
diff changeset
60 int i = 0;
da1d897ed66d Implemented ParameterMatrixPanel.getData().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2524
diff changeset
61
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
62 for (final Map.Entry<String, List<String>> entry : entries) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
63 final String value = buildValueString(entry.getValue());
2525
da1d897ed66d Implemented ParameterMatrixPanel.getData().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2524
diff changeset
64
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
65 final DataItem item = new DefaultDataItem(entry.getKey(), null, value);
2525
da1d897ed66d Implemented ParameterMatrixPanel.getData().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2524
diff changeset
66
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
67 list[i++] = new DefaultData(entry.getKey(), null, null, new DataItem[] { item });
2525
da1d897ed66d Implemented ParameterMatrixPanel.getData().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2524
diff changeset
68 }
da1d897ed66d Implemented ParameterMatrixPanel.getData().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2524
diff changeset
69
7580
dacc1123075f issue1063: Always create data for all parameters, even if not specified.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5993
diff changeset
70 // To delete old values already given, construct empty ones
dacc1123075f issue1063: Always create data for all parameters, even if not specified.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5993
diff changeset
71 // for all not-specified options.
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
72 for (final String colName : this.matrix.getColumnNames()) {
7580
dacc1123075f issue1063: Always create data for all parameters, even if not specified.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5993
diff changeset
73 boolean found = false;
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
74 for (final Data data : list) {
7580
dacc1123075f issue1063: Always create data for all parameters, even if not specified.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5993
diff changeset
75 if (data != null && data.getLabel().equals(colName)) {
dacc1123075f issue1063: Always create data for all parameters, even if not specified.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5993
diff changeset
76 found = true;
dacc1123075f issue1063: Always create data for all parameters, even if not specified.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5993
diff changeset
77 break;
dacc1123075f issue1063: Always create data for all parameters, even if not specified.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5993
diff changeset
78 }
dacc1123075f issue1063: Always create data for all parameters, even if not specified.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5993
diff changeset
79 }
dacc1123075f issue1063: Always create data for all parameters, even if not specified.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5993
diff changeset
80 if (!found) {
dacc1123075f issue1063: Always create data for all parameters, even if not specified.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5993
diff changeset
81 // Add an empty data for this.
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
82 list[i++] = new DefaultData(colName, null, null, new DataItem[] {});
7580
dacc1123075f issue1063: Always create data for all parameters, even if not specified.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5993
diff changeset
83 }
dacc1123075f issue1063: Always create data for all parameters, even if not specified.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5993
diff changeset
84 }
dacc1123075f issue1063: Always create data for all parameters, even if not specified.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5993
diff changeset
85
2525
da1d897ed66d Implemented ParameterMatrixPanel.getData().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2524
diff changeset
86 return list;
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
87 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
88
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
89 protected String buildValueString(final List<String> values) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
90 final StringBuilder sb = new StringBuilder();
2525
da1d897ed66d Implemented ParameterMatrixPanel.getData().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2524
diff changeset
91
da1d897ed66d Implemented ParameterMatrixPanel.getData().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2524
diff changeset
92 boolean first = true;
da1d897ed66d Implemented ParameterMatrixPanel.getData().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2524
diff changeset
93
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
94 for (final String value : values) {
2525
da1d897ed66d Implemented ParameterMatrixPanel.getData().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2524
diff changeset
95 if (!first) {
da1d897ed66d Implemented ParameterMatrixPanel.getData().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2524
diff changeset
96 sb.append(";");
da1d897ed66d Implemented ParameterMatrixPanel.getData().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2524
diff changeset
97 }
da1d897ed66d Implemented ParameterMatrixPanel.getData().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2524
diff changeset
98
da1d897ed66d Implemented ParameterMatrixPanel.getData().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2524
diff changeset
99 sb.append(value);
da1d897ed66d Implemented ParameterMatrixPanel.getData().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2524
diff changeset
100
da1d897ed66d Implemented ParameterMatrixPanel.getData().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2524
diff changeset
101 first = false;
da1d897ed66d Implemented ParameterMatrixPanel.getData().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2524
diff changeset
102 }
da1d897ed66d Implemented ParameterMatrixPanel.getData().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2524
diff changeset
103
da1d897ed66d Implemented ParameterMatrixPanel.getData().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2524
diff changeset
104 return sb.toString();
da1d897ed66d Implemented ParameterMatrixPanel.getData().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2524
diff changeset
105 }
da1d897ed66d Implemented ParameterMatrixPanel.getData().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2524
diff changeset
106
3850
8d0ababa2db7 issue871 (tiny bit messy parameterization for flowvelocity).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3710
diff changeset
107 /** Canvas to show in non-edit mode. */
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
108 @Override
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
109 public Canvas createOld(final DataList dataList) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
110 final HLayout layout = new HLayout();
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
111 final VLayout vLayout = new VLayout();
2528
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2525
diff changeset
112
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2525
diff changeset
113 layout.setWidth(300);
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2525
diff changeset
114 vLayout.setWidth(280);
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2525
diff changeset
115
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2525
diff changeset
116 for (int i = 0, n = dataList.size(); i < n; i++) {
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
117 final HLayout row = new HLayout();
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
118 final VLayout cols = new VLayout();
2528
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2525
diff changeset
119
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2525
diff changeset
120 row.setWidth(300);
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2525
diff changeset
121 cols.setWidth(100);
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2525
diff changeset
122
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
123 final Data data = dataList.get(i);
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
124 final DataItem[] items = data.getItems();
2528
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2525
diff changeset
125
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
126 final Label parameter = new Label(data.getDescription());
2528
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2525
diff changeset
127 parameter.setWidth(200);
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2525
diff changeset
128
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
129 for (final DataItem item : items) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
130 final Label value = new Label(item.getLabel());
2528
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2525
diff changeset
131
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
132 value.setValign(com.smartgwt.client.types.VerticalAlignment.TOP);
2528
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2525
diff changeset
133 value.setWidth(130);
8612
b5854a9b101c (issue869) Add spacer for multiline items
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8533
diff changeset
134 value.setHeight(15);
2528
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2525
diff changeset
135
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2525
diff changeset
136 cols.addMember(value);
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
137 final LayoutSpacer spacer = new LayoutSpacer();
8612
b5854a9b101c (issue869) Add spacer for multiline items
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8533
diff changeset
138 spacer.setHeight(5);
b5854a9b101c (issue869) Add spacer for multiline items
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8533
diff changeset
139 cols.addMember(spacer);
2528
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2525
diff changeset
140 }
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2525
diff changeset
141
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2525
diff changeset
142 row.addMember(parameter);
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2525
diff changeset
143 row.addMember(cols);
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2525
diff changeset
144
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2525
diff changeset
145 vLayout.addMember(row);
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2525
diff changeset
146 }
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2525
diff changeset
147
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
148 final Canvas back = getBackButton(dataList.getState());
2528
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2525
diff changeset
149
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2525
diff changeset
150 layout.addMember(vLayout);
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2525
diff changeset
151 layout.addMember(back);
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2525
diff changeset
152
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2525
diff changeset
153 return layout;
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
154 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
155
3853
8ef59abc0fbf Attempt at issue860.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3850
diff changeset
156 /** Create the main canvas in the "editing" mode. */
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
157 @Override
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
158 public Canvas create(final DataList dataList) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
159 final VLayout v = new VLayout();
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
160 v.addMember(createTitle(dataList));
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
161
9391
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
162 this.matrix = new ParameterMatrix(this.itemnameColTitle, this.mode);
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
163
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
164 for (final Data data : dataList.getAll()) {
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
165 if (data instanceof IntegerOptionsData) {
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
166 this.matrix.addColumn((IntegerOptionsData) data);
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
167 } else if (data instanceof StringOptionsData) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
168 this.matrix.addColumn((StringOptionsData) data);
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
169 } else if (data instanceof MultiAttributeData) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
170 this.matrix.addColumn((MultiAttributeData) data);
7826
982382d9ea8b Display the additional information extracted from multiattribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 7580
diff changeset
171 }
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
172 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
173
3853
8ef59abc0fbf Attempt at issue860.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3850
diff changeset
174 // If too many items are shown, show it in the helper Panel.
3854
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3853
diff changeset
175 // TODO its not about the datalist, but about the "rows" in the data.
3853
8ef59abc0fbf Attempt at issue860.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3850
diff changeset
176 if (dataList.getAll().size() > 5) {
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
177 v.addMember(this.matrix.create(false));
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
178 } else {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
179 this.helperContainer.addMember(this.matrix.create(true));
3853
8ef59abc0fbf Attempt at issue860.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3850
diff changeset
180 }
2525
da1d897ed66d Implemented ParameterMatrixPanel.getData().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2524
diff changeset
181 v.addMember(getNextButton());
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
182
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
183 return v;
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
184 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
185
3853
8ef59abc0fbf Attempt at issue860.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3850
diff changeset
186 /** Reaturns a label with description of first Data. */
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
187 protected Canvas createTitle(final DataList dataList) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
188 final Data data = dataList.get(0);
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
189 final Label label = new Label(data.getDescription());
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
190 label.setHeight(35);
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
191
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
192 return label;
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
193 }
3994
cc0b31dc2789 fix issue898 (crash when no param selected for parametermatrix).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
194
cc0b31dc2789 fix issue898 (crash when no param selected for parametermatrix).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
195 /** Selection shall not be empty. */
cc0b31dc2789 fix issue898 (crash when no param selected for parametermatrix).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
196 @Override
cc0b31dc2789 fix issue898 (crash when no param selected for parametermatrix).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
197 public List<String> validate() {
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
198 GWT.log("validation. validation. validation. ");
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
199 final List<String> errors = new ArrayList<String>();
3994
cc0b31dc2789 fix issue898 (crash when no param selected for parametermatrix).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
200 // Early stop on one (only) error.
4627
d5821c6f0ab0 Fixed validation in parameter matrix panel. Single selections are allowed now.
Raimund Renkert <rrenkert@intevation.de>
parents: 4184
diff changeset
201 boolean ok = false;
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
202 for (final Map.Entry<String, List<String>> entry : this.matrix.getSelection().entrySet()) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
203 /*
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
204 * single entries are allowed!!
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
205 * if (entry.getValue() == null || entry.getValue().size() == 0) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
206 * errors.add(MESSAGES.error_values_needed());
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
207 * return errors;
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
208 * }
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
209 */
4627
d5821c6f0ab0 Fixed validation in parameter matrix panel. Single selections are allowed now.
Raimund Renkert <rrenkert@intevation.de>
parents: 4184
diff changeset
210 if (entry.getValue() != null && entry.getValue().size() > 0) {
d5821c6f0ab0 Fixed validation in parameter matrix panel. Single selections are allowed now.
Raimund Renkert <rrenkert@intevation.de>
parents: 4184
diff changeset
211 ok = true;
d5821c6f0ab0 Fixed validation in parameter matrix panel. Single selections are allowed now.
Raimund Renkert <rrenkert@intevation.de>
parents: 4184
diff changeset
212 }
d5821c6f0ab0 Fixed validation in parameter matrix panel. Single selections are allowed now.
Raimund Renkert <rrenkert@intevation.de>
parents: 4184
diff changeset
213 }
d5821c6f0ab0 Fixed validation in parameter matrix panel. Single selections are allowed now.
Raimund Renkert <rrenkert@intevation.de>
parents: 4184
diff changeset
214 if (!ok) {
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
215 errors.add(this.MESSAGES.error_values_needed());
3994
cc0b31dc2789 fix issue898 (crash when no param selected for parametermatrix).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
216 }
cc0b31dc2789 fix issue898 (crash when no param selected for parametermatrix).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
217 return errors;
cc0b31dc2789 fix issue898 (crash when no param selected for parametermatrix).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
218 }
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
219 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
220 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org