Mercurial > dive4elements > river
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 : |