annotate flys-client/src/main/java/de/intevation/flys/client/client/ui/ParameterMatrix.java @ 2532:261347ea60b8

Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel. flys-client/trunk@4428 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Wed, 16 May 2012 14:52:39 +0000
parents fe177e7f61d1
children a9cdd62aa73e
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
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
16 import com.smartgwt.client.widgets.Canvas;
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
17 import com.smartgwt.client.widgets.Label;
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
18 import com.smartgwt.client.widgets.layout.VLayout;
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
20 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
21 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
22 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
23
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
24
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
25 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
26
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
27 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
28 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
29 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
30
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
31 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
32 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
33 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
34
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35 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
36 this();
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
37 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
38 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
40 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
41 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
42 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44 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
45 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
46 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47 } // 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
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 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
51
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52 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
53 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
54 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
55
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
56 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
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 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
59 super();
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
60 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
61 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
62 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
63 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
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
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 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
68 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
69
2532
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
70 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
71 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
72
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
73 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
74 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
75 return;
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
76 }
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
77
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
78 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
79 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
80
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
81 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
82 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
83 }
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
84
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
85 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
86 }
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
87
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
88 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
89 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
90 }
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
91
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
92
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
93 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
94 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
95
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
96 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
97 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
98
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
99 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
100 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
101 return;
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2521
diff changeset
102 }
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 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
105 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
106
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
107 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
108 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
109 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
110
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
111 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
112 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
113
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
114 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
115 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
116 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
117
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
118
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
119 public Widget create() {
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
120 Grid grid = new Grid(valueNames.size()+1, columnNames.size() + 1);
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
121
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
122 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
123 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
124 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
125
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
126 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
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 grid.setWidget(0, i+1, createLabel(columnName));
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 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
131 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
132 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
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 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
135 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
136 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
137
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
138 if (value != null && value.length() > 0) {
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
139 grid.setWidget(j+1, i+1, createWidget(columnName, value));
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
140 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
141 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
142 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
143
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
144 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
145 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
146
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
147
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
148 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
149 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
150 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
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 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
153 }
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
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
156 protected CheckBox createWidget(final String colName, final 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
157 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
158 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
159 @Override
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
160 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
161 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
162 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
163
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
164 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
165 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
166 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
167 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
168 else {
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
169 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
170 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
171 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
172 });
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
173
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
174 return box;
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
175 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
176
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
177
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
178 public Map<String, List<String>> getSelection() {
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
179 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
180 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
181 }
fe177e7f61d1 Added a new UIProvider that renders a matrix of checkboxes for user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
182 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org