annotate flys-client/src/main/java/de/intevation/flys/client/client/ui/ParameterMatrix.java @ 3982:f9729662f1be

improvements on issue860: display parameter matrix as grid list in helperpane.
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Fri, 28 Sep 2012 20:51:41 +0200
parents 87e7571970e6
children 7d056b7a50d8
rev   line source
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.client.client.ui;
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
2
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
3 import java.io.Serializable;
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
4
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
5 import java.util.ArrayList;
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
6 import java.util.HashMap;
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
7 import java.util.List;
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
8 import java.util.Map;
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
9
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10 import com.google.gwt.core.client.GWT;
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
11 import com.google.gwt.user.client.ui.CheckBox;
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
12 import com.google.gwt.user.client.ui.Grid;
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
13 import com.google.gwt.user.client.ui.Widget;
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
14 import com.google.gwt.user.client.ui.ClickListener;
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15
3982
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
16 import com.smartgwt.client.types.Autofit;
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
17 import com.smartgwt.client.types.ListGridFieldType;
3854
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
18 import com.smartgwt.client.widgets.Canvas;
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19 import com.smartgwt.client.widgets.Label;
3982
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
20 import com.smartgwt.client.widgets.grid.ListGrid;
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
21 import com.smartgwt.client.widgets.grid.ListGridField;
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
22 import com.smartgwt.client.widgets.grid.ListGridRecord;
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
23
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
24 import de.intevation.flys.client.client.FLYSConstants;
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
25 import de.intevation.flys.client.shared.model.DataItem;
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
26 import de.intevation.flys.client.shared.model.IntegerOptionsData;
2532
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
27 import de.intevation.flys.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
28
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29
3854
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
30 /**
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
31 * 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
32 * as a matrix.
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
33 *
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
34 * 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
35 * 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
36 * shortcomings of GWT/SmartGWT combination.
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
37 */
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 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
39
3982
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
40 protected ListGrid listGrid = null;
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
41
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
42 public static class Column implements Serializable {
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43 protected String name;
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44 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
45
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
46 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
47 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
48 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
49
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
50 public Column(String name) {
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
51 this();
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52 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
53 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
54
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
55 public void addValue(String label, String value) {
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
56 values.put(label, value);
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
57 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
59 public String getValue(String label) {
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
60 return values.get(label);
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 } // 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
63
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
64 /** The message class that provides i18n strings.*/
f84ed73311f2 Added UI for minfo bed quality calculation and added new services for overview
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2539
diff changeset
65 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
66
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
67 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
68
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
69 private Map<String, Column> columns;
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
70 private List<String> columnNames;
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
71 private List<String> valueNames;
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
72
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
73 private Map<String, List<String>> selected;
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
74
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
75 public ParameterMatrix() {
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
76 super();
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
77 this.columns = new HashMap<String, Column>();
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
78 this.columnNames = new ArrayList<String>();
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
79 this.valueNames = new ArrayList<String>();
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
80 this.selected = new HashMap<String, List<String>>();
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
81 }
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
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
84 public void addColumn(IntegerOptionsData group) {
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
85 String groupTitle = group.getLabel();
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
86
2532
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
87 Column col = new Column(groupTitle);
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
88 DataItem[] items = group.getItems();
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
89
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
90 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
91 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
92 return;
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
93 }
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
94
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
95 for (DataItem item: items) {
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
96 String title = item.getLabel();
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
97
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
98 if (valueNames.indexOf(title) < 0) {
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
99 valueNames.add(title);
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
100 }
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
101
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
102 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
103 }
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
104
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
105 columnNames.add(groupTitle);
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
106 columns.put(groupTitle, col);
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
107 }
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
108
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
109
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
110 public void addColumn(StringOptionsData options) {
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
111 String groupTitle = options.getLabel();
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
112
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
113 Column col = new Column(groupTitle);
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
114 DataItem[] items = options.getItems();
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 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
117 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
118 return;
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
119 }
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
120
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
121 for (DataItem item: items) {
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
122 String title = item.getLabel();
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
123
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
124 if (valueNames.indexOf(title) < 0) {
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
125 valueNames.add(title);
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
126 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
127
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
128 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
129 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
130
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
131 columnNames.add(groupTitle);
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
132 columns.put(groupTitle, col);
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
133 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
134
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
135
3982
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
136 public Widget createParameterGrid() {
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
137 listGrid = new ListGrid();
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
138 listGrid.setShowAllRecords(true);
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
139 listGrid.setWrapCells(true);
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
140 listGrid.setShowHeaderContextMenu(false);
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
141 listGrid.setCanReorderFields(false);
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
142 listGrid.setCanSort(false);
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
143 //listGrid.setAutoFitData(Autofit.VERTICAL);
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
144 listGrid.setFixedRecordHeights(false);
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
145 // 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
146
3982
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
147 ListGridField itemNameField = new ListGridField("itemname", " ");
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
148 ArrayList<ListGridField> fields = new ArrayList<ListGridField>();
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
149 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
150
3854
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
151 for (int i = 0, n = columnNames.size(); i < n; i++) {
3982
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
152 ListGridField field = new ListGridField(columnNames.get(i), MESSAGE.getString(columnNames.get(i)));
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
153 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
154 field.setCanEdit(true);
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
155 fields.add(field);
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
156 selected.put(columnNames.get(i), new ArrayList<String>());
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
157 }
3854
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
158
3982
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
159 ListGridField[] fieldsArray = fields.toArray(new ListGridField[fields.size()]);
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
160 listGrid.setFields(fieldsArray);
3854
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
161
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
162 int nVals = valueNames.size();
3858
87e7571970e6 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3854
diff changeset
163
3982
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
164 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
165 for (int j = 0; j < nVals; j++) {
3982
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
166 String valueName = valueNames.get(j);
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
167 ListGridRecord record = new ListGridRecord();
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
168 record.setAttribute("itemname", valueName);
3854
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
169 for (int i = 0, n = columnNames.size(); i < n; i++) {
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
170 String columnName = columnNames.get(i);
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
171 Column col = columns.get(columnName);
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
172 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
173 record.setAttribute(columnName, false);
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
174 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
175 }
3982
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
176 records.add(record);
3854
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
177 }
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
178
3982
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
179 listGrid.setData(records.toArray(new ListGridRecord[records.size()]));
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
180
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
181 return listGrid;
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
182
3854
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
183 }
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
184
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
185
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
186 /**
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
187 * Returns a widget with matrix of checkboxes and labels.
3982
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
188 * @param asListGrid if true, use a ListGrid (for inclusion in SmartGWT
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
189 * containers, avoiding scrollbar-issues.
3854
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
190 */
3982
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
191 public Widget create(boolean asListGrid) {
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
192 if (asListGrid) {
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
193 return createParameterGrid();
3854
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
194 }
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
195 Grid grid = new Grid(valueNames.size() + 1, 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
196
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
197 for (int i = 0, n = columnNames.size(); i < n; i++) {
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
198 String columnName = columnNames.get(i);
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
199 Column col = columns.get(columnName);
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
200
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
201 selected.put(columnName, new ArrayList<String>());
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
202
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
203 grid.setWidget(0, i+1, createLabel(MESSAGE.getString(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
204
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
205 for (int j = 0, o = valueNames.size(); j < o; j++) {
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
206 String valueName = valueNames.get(j);
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
207 String value = col.getValue(valueName);
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
208
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
209 if (i == 0) {
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
210 grid.setWidget(j+1, 0, createLabel(valueName));
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
211 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
212
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
213 if (value != null && value.length() > 0) {
3854
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
214 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
215 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
216 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
217 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
218
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
219 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
220 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
221
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
222
3854
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
223 /** Creates label with given 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
224 protected Label createLabel(String text) {
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
225 Label label = new Label(text);
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
226 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
227
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
228 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
229 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
230
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
231
3854
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
232 /** Create Checkbox for column/value. */
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
233 protected Canvas createCheckBox(final String colName, final String 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
234 CheckBox box = new CheckBox();
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
235 box.addClickListener(new ClickListener() {
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
236 @Override
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
237 public void onClick(Widget sender) {
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
238 CheckBox box = (CheckBox) sender;
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
239 Map<String, List<String>> selection = getSelection();
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
240
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
241 List<String> values = selection.get(colName);
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
242 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
243 values.remove(value);
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
244 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
245 else {
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
246 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
247 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
248 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
249 });
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
250
3854
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
251 Canvas c = new Canvas();
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
252 c.addChild(box);
3228d65b0db9 Improved fix for issue860 (parameter in helper pane).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3705
diff changeset
253 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
254 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
255
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
256
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
257 public Map<String, List<String>> getSelection() {
3982
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
258 if (listGrid == null) {
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
259 return selected;
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
260 }
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
261
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
262 ListGridRecord[] records = listGrid.getRecords();
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
263 for (ListGridRecord record: records) {
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
264 for (int i = 0, n = columnNames.size(); i < n; i++) {
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
265 String columnName = columnNames.get(i);
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
266 Column col = columns.get(columnName);
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
267 List<String> chosenItems = selected.get(columnName);
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
268 if (Boolean.valueOf(record.getAttribute(columnName)) == true) {
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
269 chosenItems.add(record.getAttribute(columnName + "-value"));
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
270 }
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
271 }
f9729662f1be improvements on issue860: display parameter matrix as grid list in helperpane.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3858
diff changeset
272 }
2521
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
273 return selected;
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
274 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
275 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
276 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org