comparison flys-client/src/main/java/org/dive4elements/river/client/client/ui/ParameterMatrixPanel.java @ 5834:f507086aa94b

Repaired internal references.
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 12:31:32 +0200
parents flys-client/src/main/java/de/intevation/flys/client/client/ui/ParameterMatrixPanel.java@d5821c6f0ab0
children 821a02bbfb4e
comparison
equal deleted inserted replaced
5833:a2bdc0f524e8 5834:f507086aa94b
1 package de.intevation.flys.client.client.ui;
2
3 import com.google.gwt.core.client.GWT;
4 import com.google.gwt.user.client.ui.HTML;
5
6 import com.smartgwt.client.widgets.Canvas;
7 import com.smartgwt.client.widgets.Label;
8 import com.smartgwt.client.widgets.layout.HLayout;
9 import com.smartgwt.client.widgets.layout.VLayout;
10
11 import de.intevation.flys.client.client.FLYSConstants;
12 import de.intevation.flys.client.shared.model.Data;
13 import de.intevation.flys.client.shared.model.DataItem;
14 import de.intevation.flys.client.shared.model.DataList;
15 import de.intevation.flys.client.shared.model.DefaultData;
16 import de.intevation.flys.client.shared.model.DefaultDataItem;
17 import de.intevation.flys.client.shared.model.IntegerOptionsData;
18 import de.intevation.flys.client.shared.model.StringOptionsData;
19
20 import java.util.ArrayList;
21 import java.util.List;
22 import java.util.Map;
23 import java.util.Set;
24
25 /**
26 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
27 */
28 public class ParameterMatrixPanel extends AbstractUIProvider {
29
30 private static final long serialVersionUID = -5827445025768340371L;
31
32 /** The message class that provides i18n strings. */
33 protected FLYSConstants MESSAGES = GWT.create(FLYSConstants.class);
34
35 private ParameterMatrix matrix;
36
37 @Override
38 protected Data[] getData() {
39 Map<String, List<String>> selection = matrix.getSelection();
40 Set<Map.Entry<String, List<String>>> entries = selection.entrySet();
41
42 Data[] list = new Data[selection.size()];
43
44 int i = 0;
45
46 for (Map.Entry<String, List<String>> entry: entries) {
47 String value = buildValueString(entry.getValue());
48
49 DataItem item = new DefaultDataItem(
50 entry.getKey(),
51 null,
52 value);
53
54 list[i++] = new DefaultData(
55 entry.getKey(), null, null, new DataItem[] { item });
56 }
57
58 return list;
59 }
60
61
62 protected String buildValueString(List<String> values) {
63 StringBuilder sb = new StringBuilder();
64
65 boolean first = true;
66
67 for (String value: values) {
68 if (!first) {
69 sb.append(";");
70 }
71
72 sb.append(value);
73
74 first = false;
75 }
76
77 return sb.toString();
78 }
79
80
81 /** Canvas to show in non-edit mode. */
82 @Override
83 public Canvas createOld(DataList dataList) {
84 HLayout layout = new HLayout();
85 VLayout vLayout = new VLayout();
86
87 layout.setWidth(300);
88 vLayout.setWidth(280);
89
90 for (int i = 0, n = dataList.size(); i < n; i++) {
91 HLayout row = new HLayout();
92 VLayout cols = new VLayout();
93
94 row.setWidth(300);
95 cols.setWidth(100);
96
97 Data data = dataList.get(i);
98 DataItem[] items = data.getItems();
99
100 Label parameter = new Label(data.getDescription());
101 parameter.setWidth(200);
102
103 for (int j = 0, m = items.length; j < m; j++) {
104 DataItem item = items[j];
105 Label value = new Label(item.getLabel());
106
107 value.setValign(com.smartgwt.client.types.VerticalAlignment.TOP);
108 value.setWidth(130);
109 value.setHeight(20);
110
111 cols.addMember(value);
112 HTML hr = new HTML("<hr>");
113 hr.setHeight("3px");
114 cols.addMember(hr);
115 }
116
117 row.addMember(parameter);
118 row.addMember(cols);
119
120 vLayout.addMember(row);
121 }
122
123 Canvas back = getBackButton(dataList.getState());
124
125 layout.addMember(vLayout);
126 layout.addMember(back);
127
128 return layout;
129 }
130
131
132 /** Create the main canvas in the "editing" mode. */
133 @Override
134 public Canvas create(DataList dataList) {
135 VLayout v = new VLayout();
136 v.addMember(createTitle(dataList));
137
138 matrix = new ParameterMatrix();
139
140 for (Data data: dataList.getAll()) {
141 if (data instanceof IntegerOptionsData) {
142 matrix.addColumn((IntegerOptionsData) data);
143 }
144 else if (data instanceof StringOptionsData) {
145 matrix.addColumn((StringOptionsData) data);
146 }
147 }
148
149 // If too many items are shown, show it in the helper Panel.
150 // TODO its not about the datalist, but about the "rows" in the data.
151 if (dataList.getAll().size() > 5) {
152 v.addMember(matrix.create(false));
153 }
154 else {
155 helperContainer.addMember(matrix.create(true));
156 }
157 v.addMember(getNextButton());
158
159 return v;
160 }
161
162
163 /** Reaturns a label with description of first Data. */
164 protected Canvas createTitle(DataList dataList) {
165 Data data = dataList.get(0);
166 Label label = new Label(data.getDescription());
167 label.setHeight(35);
168
169 return label;
170 }
171
172
173 /** Selection shall not be empty. */
174 @Override
175 public List<String> validate() {
176 GWT.log ("validation. validation. validation. ");
177 List<String> errors = new ArrayList<String>();
178 // Early stop on one (only) error.
179 boolean ok = false;
180 for (Map.Entry<String, List<String>> entry : matrix.getSelection().entrySet()) {
181 /* single entries are allowed!!
182 if (entry.getValue() == null || entry.getValue().size() == 0) {
183 errors.add(MESSAGES.error_values_needed());
184 return errors;
185 }
186 */
187 if (entry.getValue() != null && entry.getValue().size() > 0) {
188 ok = true;
189 }
190 }
191 if (!ok) {
192 errors.add(MESSAGES.error_values_needed());
193 }
194 return errors;
195 }
196 }
197 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org