annotate gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ParameterMatrix.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.io.Serializable;
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
12 import java.util.ArrayList;
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
13 import java.util.HashMap;
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
14 import java.util.List;
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
15 import java.util.Map;
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
16
5835
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
17 import org.dive4elements.river.client.client.FLYSConstants;
9391
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
18 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
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.IntegerOptionsData;
7826
982382d9ea8b Display the additional information extracted from multiattribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 7579
diff changeset
21 import org.dive4elements.river.client.shared.model.MultiAttributeData;
982382d9ea8b Display the additional information extracted from multiattribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 7579
diff changeset
22 import org.dive4elements.river.client.shared.model.MultiDataItem;
5835
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
23 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
24
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
25 import com.google.gwt.core.client.GWT;
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
26 import com.google.gwt.event.dom.client.ClickEvent;
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
27 import com.google.gwt.event.dom.client.ClickHandler;
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
28 import com.google.gwt.user.client.ui.CheckBox;
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
29 import com.google.gwt.user.client.ui.Grid;
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
30 import com.google.gwt.user.client.ui.Widget;
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
31 import com.smartgwt.client.types.ListGridFieldType;
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
32 import com.smartgwt.client.widgets.Canvas;
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
33 import com.smartgwt.client.widgets.Label;
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
34 import com.smartgwt.client.widgets.grid.ListGrid;
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
35 import com.smartgwt.client.widgets.grid.ListGridField;
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
36 import com.smartgwt.client.widgets.grid.ListGridRecord;
9391
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
37 import com.smartgwt.client.widgets.grid.events.ChangedHandler;
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
38
3854
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
39 /**
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
40 * Some parameters take the form of on/off options that can also be seen
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
41 * as a matrix.
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
42 *
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
43 * This class helps to survive the underlying objects and create a visual
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
44 * representation of this matrix. Later can happen in two ways to overcome
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
45 * shortcomings of GWT/SmartGWT combination.
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
46 */
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47 public class ParameterMatrix {
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48
9391
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
49 protected static ListGrid listGrid = null;
3982
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
50
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
51 public static class Column implements Serializable {
4184
03de5c424f95 Fix warnings and minor TODOs in flys-client.
Christian Lins <christian.lins@intevation.de>
parents: 3993
diff changeset
52
03de5c424f95 Fix warnings and minor TODOs in flys-client.
Christian Lins <christian.lins@intevation.de>
parents: 3993
diff changeset
53 private static final long serialVersionUID = -3493426383086860118L;
03de5c424f95 Fix warnings and minor TODOs in flys-client.
Christian Lins <christian.lins@intevation.de>
parents: 3993
diff changeset
54
9391
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
55 public static enum SelectionMode {
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
56 single, multi
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
57 }
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
58
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
59 protected String name;
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
60 protected Map<String, String> values;
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
61
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
62 private Column() {
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
63 this.values = new HashMap<String, String>();
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
64 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
65
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
66 public Column(final String name) {
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
67 this();
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
68 this.name = name;
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
69 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
70
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
71 public void addValue(final String label, final String value) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
72 this.values.put(label, value);
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
73 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
74
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
75 public String getValue(final String label) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
76 return this.values.get(label);
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
77 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
78 } // end of class Column
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
79
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
80 /** The message class that provides i18n strings. */
3705
f84ed73311f2 Added UI for minfo bed quality calculation and added new services for overview
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2539
diff changeset
81 protected FLYSConstants MESSAGE = GWT.create(FLYSConstants.class);
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
82
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
83 public static final int CELL_HEIGHT = 25;
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
84
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
85 private final Map<String, Column> columns;
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
86 private final List<String> columnNames;
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
87 private final List<String> valueNames;
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
88 private final Map<String, List<String>> attributes;
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
89
3993
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3982
diff changeset
90 /** Maps column names to list of rows' first fields. */
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
91 private final Map<String, List<String>> selected;
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
92 private final String itemname;
9391
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
93 private final SelectionMode 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
94
9391
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
95 public ParameterMatrix(final String itemnameColTitle, final SelectionMode 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
96 super();
9391
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
97 this.mode = mode;
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
98 this.itemname = itemnameColTitle;
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
99 this.columns = new HashMap<String, Column>();
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
100 this.columnNames = new ArrayList<String>();
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
101 this.valueNames = new ArrayList<String>();
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
102 this.selected = new HashMap<String, List<String>>();
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
103 this.attributes = new HashMap<String, List<String>>();
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
104 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
105
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
106 public void addColumn(final IntegerOptionsData group) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
107 final String groupTitle = group.getLabel();
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
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
109 final Column col = new Column(groupTitle);
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
110 final DataItem[] items = group.getItems();
2532
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
111
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
112 if (items == null) {
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
113 GWT.log("No items found in StringOptionsData '" + groupTitle + "'");
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
114 return;
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
115 }
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
116
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
117 for (final DataItem item : items) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
118 final String title = item.getLabel();
2532
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
119
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
120 if (this.valueNames.indexOf(title) < 0) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
121 this.valueNames.add(title);
2532
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
122 }
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
123
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
124 col.addValue(item.getLabel(), item.getStringValue());
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
125 }
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
126
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
127 this.columnNames.add(groupTitle);
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
128 this.columns.put(groupTitle, col);
7579
b4b8764ee90d issue1063: Expose column names in ParameterMatrix.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5993
diff changeset
129 }
b4b8764ee90d issue1063: Expose column names in ParameterMatrix.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5993
diff changeset
130
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
131 public List<String> getColumnNames() {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
132 return this.columnNames;
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
133 }
7579
b4b8764ee90d issue1063: Expose column names in ParameterMatrix.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5993
diff changeset
134
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
135 public void addColumn(final StringOptionsData options) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
136 final String groupTitle = options.getLabel();
2532
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
137
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
138 final Column col = new Column(groupTitle);
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
139 final DataItem[] items = options.getItems();
2532
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
140
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
141 if (items == null) {
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
142 GWT.log("No items found in StringOptionsData '" + groupTitle + "'");
2532
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
143 return;
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
144 }
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
145
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
146 for (final DataItem item : items) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
147 final String title = item.getLabel();
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
148
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
149 if (this.valueNames.indexOf(title) < 0) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
150 this.valueNames.add(title);
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
151 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
152
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
153 col.addValue(item.getLabel(), item.getStringValue());
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
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
156 this.columnNames.add(groupTitle);
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
157 this.columns.put(groupTitle, col);
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
158 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
159
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
160 public void addColumn(final MultiAttributeData options) {
7826
982382d9ea8b Display the additional information extracted from multiattribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 7579
diff changeset
161 GWT.log("Add Columns for MultiAttribute data");
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
162 final String groupTitle = options.getLabel();
7826
982382d9ea8b Display the additional information extracted from multiattribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 7579
diff changeset
163
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
164 final Column col = new Column(groupTitle);
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
165 final DataItem[] items = options.getItems();
7826
982382d9ea8b Display the additional information extracted from multiattribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 7579
diff changeset
166
982382d9ea8b Display the additional information extracted from multiattribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 7579
diff changeset
167 if (items == null) {
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
168 GWT.log("No items found in StringOptionsData '" + groupTitle + "'");
7826
982382d9ea8b Display the additional information extracted from multiattribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 7579
diff changeset
169 return;
982382d9ea8b Display the additional information extracted from multiattribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 7579
diff changeset
170 }
982382d9ea8b Display the additional information extracted from multiattribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 7579
diff changeset
171
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
172 final MultiDataItem mItem = (MultiDataItem) items[0];
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
173 for (final Map.Entry<String, String> entry : mItem.getValue().entrySet()) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
174 if (entry.getKey().equals("art:value") || entry.getKey().equals("art:label")) {
7826
982382d9ea8b Display the additional information extracted from multiattribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 7579
diff changeset
175 continue;
982382d9ea8b Display the additional information extracted from multiattribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 7579
diff changeset
176 }
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
177 this.attributes.put(entry.getKey(), new ArrayList<String>());
7826
982382d9ea8b Display the additional information extracted from multiattribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 7579
diff changeset
178 }
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
179 for (final DataItem item : items) {
7826
982382d9ea8b Display the additional information extracted from multiattribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 7579
diff changeset
180 GWT.log("multidataitem: " + item.getLabel());
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
181 final String title = item.getLabel();
7826
982382d9ea8b Display the additional information extracted from multiattribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 7579
diff changeset
182
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
183 if (this.valueNames.indexOf(title) < 0) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
184 this.valueNames.add(title);
7826
982382d9ea8b Display the additional information extracted from multiattribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 7579
diff changeset
185 }
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
186 final MultiDataItem mi = (MultiDataItem) item;
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
187 final Map<String, String> vs = mi.getValue();
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
188 for (final Map.Entry<String, String> e : vs.entrySet()) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
189 if (e.getKey().equals("art:value") || e.getKey().equals("art:label")) {
7826
982382d9ea8b Display the additional information extracted from multiattribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 7579
diff changeset
190 continue;
982382d9ea8b Display the additional information extracted from multiattribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 7579
diff changeset
191 }
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
192 final List<String> data = this.attributes.get(e.getKey());
7826
982382d9ea8b Display the additional information extracted from multiattribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 7579
diff changeset
193 data.add(e.getValue());
982382d9ea8b Display the additional information extracted from multiattribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 7579
diff changeset
194 }
982382d9ea8b Display the additional information extracted from multiattribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 7579
diff changeset
195 col.addValue(item.getLabel(), mi.getValue().get("art:value"));
982382d9ea8b Display the additional information extracted from multiattribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 7579
diff changeset
196 }
982382d9ea8b Display the additional information extracted from multiattribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 7579
diff changeset
197
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
198 this.columnNames.add(groupTitle);
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
199 this.columns.put(groupTitle, col);
7826
982382d9ea8b Display the additional information extracted from multiattribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 7579
diff changeset
200 }
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
201
3982
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
202 public Widget createParameterGrid() {
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
203 this.listGrid = new ListGrid();
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
204 this.listGrid.setShowAllRecords(true);
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
205 this.listGrid.setWrapCells(true);
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
206 this.listGrid.setShowHeaderContextMenu(false);
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
207 this.listGrid.setCanReorderFields(false);
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
208 // listGrid.setCanSort(false);
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
209 // listGrid.setAutoFitData(Autofit.VERTICAL);
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
210 this.listGrid.setFixedRecordHeights(false);
3982
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
211 // TODO: Then also need "autofit" (when wrapping)
3854
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
212
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
213 final ListGridField itemNameField = new ListGridField("itemname", this.itemname);
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
214 final ArrayList<ListGridField> fields = new ArrayList<ListGridField>();
3982
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
215 fields.add(itemNameField);
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
216
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
217 for (final Map.Entry<String, List<String>> entry : this.attributes.entrySet()) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
218 final ListGridField attrField = new ListGridField(entry.getKey(), this.MESSAGE.getString(entry.getKey()));
7826
982382d9ea8b Display the additional information extracted from multiattribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 7579
diff changeset
219 fields.add(attrField);
982382d9ea8b Display the additional information extracted from multiattribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 7579
diff changeset
220 }
982382d9ea8b Display the additional information extracted from multiattribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 7579
diff changeset
221
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
222 for (int i = 0, n = this.columnNames.size(); i < n; i++) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
223 final ListGridField field = new ListGridField(this.columnNames.get(i), this.MESSAGE.getString(this.columnNames.get(i)));
3982
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
224 field.setType(ListGridFieldType.BOOLEAN);
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
225 field.setCanEdit(true);
9391
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
226 if (this.mode == SelectionMode.single) {
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
227 field.addChangedHandler(new ChangedHandler() {
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
228 @Override
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
229 public void onChanged(final com.smartgwt.client.widgets.grid.events.ChangedEvent event) {
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
230 final int rowNumber = event.getRowNum();
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
231 final Boolean value = (Boolean) event.getValue();
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
232 final int colNr = event.getColNum();
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
233 final String attr = ParameterMatrix.listGrid.getFieldName(colNr);
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
234 if (value) {
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
235 final ListGridRecord[] records = ParameterMatrix.listGrid.getRecords();
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
236 for (int i = 0; i < records.length; i++) {
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
237 final ListGridRecord r = records[i];
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
238 if (i != rowNumber) {
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
239 if (r.getAttributeAsBoolean(attr))
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
240 r.setAttribute(attr, false);
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
241 }
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
242 }
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
243 }
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
244 }
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
245 });
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
246 }
3982
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
247 fields.add(field);
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
248 this.selected.put(this.columnNames.get(i), new ArrayList<String>());
3982
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
249 }
3854
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
250
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
251 final ListGridField[] fieldsArray = fields.toArray(new ListGridField[fields.size()]);
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
252 this.listGrid.setFields(fieldsArray);
3854
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
253
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
254 final int nVals = this.valueNames.size();
3858
87e7571970e6 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3854
diff changeset
255
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
256 final ArrayList<ListGridRecord> records = new ArrayList<ListGridRecord>();
3854
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
257 for (int j = 0; j < nVals; j++) {
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
258 final String valueName = this.valueNames.get(j);
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
259 final ListGridRecord record = new ListGridRecord();
3982
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
260 record.setAttribute("itemname", valueName);
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
261 for (int i = 0, n = this.columnNames.size(); i < n; i++) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
262 final String columnName = this.columnNames.get(i);
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
263 final Column col = this.columns.get(columnName);
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
264 final String value = col.getValue(valueName);
3982
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
265 record.setAttribute(columnName, false);
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
266 record.setAttribute(columnName + "-value", value);
3854
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
267 }
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
268 for (final Map.Entry<String, List<String>> entry : this.attributes.entrySet()) {
7826
982382d9ea8b Display the additional information extracted from multiattribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 7579
diff changeset
269 record.setAttribute(entry.getKey(), entry.getValue().get(j));
982382d9ea8b Display the additional information extracted from multiattribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 7579
diff changeset
270 }
3982
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
271 records.add(record);
3854
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
272 }
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
273
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
274 this.listGrid.setData(records.toArray(new ListGridRecord[records.size()]));
3982
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
275
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
276 return this.listGrid;
3982
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
277
3854
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
278 }
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
279
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
280 /**
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
281 * Returns a widget with matrix of checkboxes and labels.
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
282 *
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
283 * @param asListGrid
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
284 * if true, use a ListGrid (for inclusion in SmartGWT
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
285 * containers, avoiding scrollbar-issues.
3854
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
286 */
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
287 public Widget create(final boolean asListGrid) {
3982
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
288 if (asListGrid) {
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
289 return createParameterGrid();
3854
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
290 }
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
291 final Grid grid = new Grid(this.valueNames.size() + 1, this.columnNames.size() + 1);
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
292
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
293 for (int i = 0, n = this.columnNames.size(); i < n; i++) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
294 final String columnName = this.columnNames.get(i);
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
295 final Column col = this.columns.get(columnName);
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
296
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
297 this.selected.put(columnName, new ArrayList<String>());
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
298
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
299 grid.setWidget(0, i + 1, createLabel(this.MESSAGE.getString(columnName)));
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
300
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
301 for (int j = 0, o = this.valueNames.size(); j < o; j++) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
302 final String valueName = this.valueNames.get(j);
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
303 final String value = col.getValue(valueName);
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
304
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
305 if (i == 0) {
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
306 grid.setWidget(j + 1, 0, createLabel(valueName));
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
307 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
308
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
309 if (value != null && value.length() > 0) {
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
310 grid.setWidget(j + 1, i + 1, createCheckBox(columnName, value));
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
311 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
312 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
313 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
314
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
315 return grid;
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
316 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
317
3854
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
318 /** Creates label with given text. */
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
319 protected Label createLabel(final String text) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
320 final Label label = new Label(text);
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
321 label.setHeight(CELL_HEIGHT);
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
322
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
323 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
324 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
325
3854
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
326 /** Create Checkbox for column/value. */
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
327 protected Canvas createCheckBox(final String colName, final String value) {
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
328 final CheckBox box = new CheckBox();
4184
03de5c424f95 Fix warnings and minor TODOs in flys-client.
Christian Lins <christian.lins@intevation.de>
parents: 3993
diff changeset
329 box.addClickHandler(new ClickHandler() {
03de5c424f95 Fix warnings and minor TODOs in flys-client.
Christian Lins <christian.lins@intevation.de>
parents: 3993
diff changeset
330
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
331 @Override
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
332 public void onClick(final ClickEvent event) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
333 final Map<String, List<String>> selection = getSelection();
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
334
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
335 final List<String> values = selection.get(colName);
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
336 if (values.indexOf(value) >= 0) {
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
337 values.remove(value);
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
338 } else {
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
339 values.add(value);
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
340 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
341 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
342 });
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
343
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
344 final Canvas c = new Canvas();
3854
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
345 c.addChild(box);
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
346 return c;
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
347 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
348
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
349 public Map<String, List<String>> getSelection() {
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
350 if (this.listGrid == null) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
351 return this.selected;
3982
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
352 }
4184
03de5c424f95 Fix warnings and minor TODOs in flys-client.
Christian Lins <christian.lins@intevation.de>
parents: 3993
diff changeset
353
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
354 final ListGridRecord[] records = this.listGrid.getRecords();
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
355 final Map<String, List<String>> result = new HashMap<String, List<String>>();
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
356 for (final ListGridRecord record : records) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
357 for (int i = 0, n = this.columnNames.size(); i < n; i++) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
358 final String columnName = this.columnNames.get(i);
3982
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
359 if (Boolean.valueOf(record.getAttribute(columnName)) == true) {
4627
d5821c6f0ab0 Fixed validation in parameter matrix panel. Single selections are allowed now.
Raimund Renkert <rrenkert@intevation.de>
parents: 4184
diff changeset
360 if (result.containsKey(columnName)) {
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
361 result.get(columnName).add(record.getAttribute(columnName + "-value"));
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
362 } else {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
363 final List<String> items = new ArrayList<String>();
4627
d5821c6f0ab0 Fixed validation in parameter matrix panel. Single selections are allowed now.
Raimund Renkert <rrenkert@intevation.de>
parents: 4184
diff changeset
364 items.add(record.getAttribute(columnName + "-value"));
d5821c6f0ab0 Fixed validation in parameter matrix panel. Single selections are allowed now.
Raimund Renkert <rrenkert@intevation.de>
parents: 4184
diff changeset
365 result.put(columnName, items);
d5821c6f0ab0 Fixed validation in parameter matrix panel. Single selections are allowed now.
Raimund Renkert <rrenkert@intevation.de>
parents: 4184
diff changeset
366 }
3982
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
367 }
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
368 }
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
369 }
4627
d5821c6f0ab0 Fixed validation in parameter matrix panel. Single selections are allowed now.
Raimund Renkert <rrenkert@intevation.de>
parents: 4184
diff changeset
370 return result;
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
371 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
372 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
373 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org