Mercurial > dive4elements > river
comparison flys-client/src/main/java/de/intevation/flys/client/client/ui/DatacageTwinPanel.java @ 1314:4c716bec7822
Validate selection of pairs in wdiff, show error(s) if invalid.
flys-client/trunk@2952 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Wed, 12 Oct 2011 12:42:53 +0000 |
parents | d194bee456d3 |
children | cfbfaadf4b6f |
comparison
equal
deleted
inserted
replaced
1313:5efd9be6b2cd | 1314:4c716bec7822 |
---|---|
49 | 49 |
50 protected String dataName; | 50 protected String dataName; |
51 | 51 |
52 protected User user; | 52 protected User user; |
53 | 53 |
54 protected ToLoad toLoad1; | |
55 | |
56 protected ToLoad toLoad2; | |
57 | |
58 protected ListGrid differencesList; | 54 protected ListGrid differencesList; |
59 | 55 |
60 LoadArtifactServiceAsync loadArtifactService = GWT.create( | 56 LoadArtifactServiceAsync loadArtifactService = GWT.create( |
61 de.intevation.flys.client.client.services.LoadArtifactService.class); | 57 de.intevation.flys.client.client.services.LoadArtifactService.class); |
62 | 58 |
123 // Create according recommendations and display strings. | 119 // Create according recommendations and display strings. |
124 String[] recs = from.split("#"); | 120 String[] recs = from.split("#"); |
125 // TODO real name | 121 // TODO real name |
126 if (recs.length % 2 != 0) return; | 122 if (recs.length % 2 != 0) return; |
127 for (int i = 0; i < recs.length; i+=2) { | 123 for (int i = 0; i < recs.length; i+=2) { |
128 Recommendation minuend = createRecommendationFromString(recs[i+0]); | 124 Recommendation minuend = |
129 Recommendation subtrahend = createRecommendationFromString(recs[i+1]); | 125 createRecommendationFromString(recs[i+0]); |
126 Recommendation subtrahend = | |
127 createRecommendationFromString(recs[i+1]); | |
130 RecommendationPairRecord pr = new RecommendationPairRecord( | 128 RecommendationPairRecord pr = new RecommendationPairRecord( |
131 "A", minuend, "B", subtrahend); | 129 "A", minuend, "B", subtrahend); |
132 // This Recommendation Pair comes from the data string and was thus | 130 // This Recommendation Pair comes from the data string and was thus |
133 // already cloned. | 131 // already cloned. |
134 pr.setIsAlreadyLoaded(true); | 132 pr.setIsAlreadyLoaded(true); |
139 | 137 |
140 @Override | 138 @Override |
141 public Canvas create(DataList dataList) { | 139 public Canvas create(DataList dataList) { |
142 GWT.log("createData()"); | 140 GWT.log("createData()"); |
143 | 141 |
144 // TODO use i18n of data. | |
145 Canvas label = new Label("Subtrahend/Minuend");//data.getDescription()); | |
146 Canvas widget = createWidget(); | 142 Canvas widget = createWidget(); |
147 Canvas submit = getNextButton(); | 143 Canvas submit = getNextButton(); |
148 | 144 |
149 VLayout layout = new VLayout(); | 145 VLayout layout = new VLayout(); |
150 HLayout helperLayout = new HLayout(); | 146 HLayout helperLayout = new HLayout(); |
151 label.setHeight(50); | |
152 helperLayout.addMember(new DatacagePairWidget(this.artifact, | 147 helperLayout.addMember(new DatacagePairWidget(this.artifact, |
153 user, "waterlevels", differencesList)); | 148 user, "waterlevels", differencesList)); |
154 | 149 |
155 /*layout.addMember(label);*/ | |
156 layout.addMember(widget); | 150 layout.addMember(widget); |
157 layout.addMember(submit); | 151 layout.addMember(submit); |
158 layout.setMembersMargin(10); | 152 layout.setMembersMargin(10); |
159 this.helperContainer.addMember(helperLayout); | 153 this.helperContainer.addMember(helperLayout); |
160 | 154 |
161 // Find old data, if any. | 155 // Find old data, if any, handle "diffids". |
162 Data data = dataList.get(0); | 156 Data data = dataList.get(0); |
163 // "diffids" data handling. | |
164 this.dataName = data.getLabel(); | 157 this.dataName = data.getLabel(); |
165 for (int i = 0; i < dataList.size(); i++) { | 158 for (int i = 0; i < dataList.size(); i++) { |
166 if (dataList.get(i) != null) { | 159 if (dataList.get(i) != null && dataList.get(i).getItems() != null) { |
167 if (dataList.get(i).getItems() != null) { | 160 if (dataList.get(i).getItems() != null) { |
168 populateGridFromString(dataList.get(i).getItems()[0].getStringValue()); | 161 populateGridFromString( |
162 dataList.get(i).getItems()[0].getStringValue()); | |
169 } | 163 } |
170 else{ | |
171 System.out.println("DatacageTwinPanel: Datalist for item is null"); | |
172 } | |
173 } | |
174 else{ | |
175 System.out.println("DatacageTwinPanel: Data " + i + " is null (not displayable)."); | |
176 } | 164 } |
177 } | 165 } |
178 | 166 |
179 return layout; | 167 return layout; |
180 } | 168 } |
181 | 169 |
182 | 170 |
171 /** | |
172 * Validates the selection. | |
173 */ | |
183 @Override | 174 @Override |
184 public List<String> validate() { | 175 public List<String> validate() { |
185 List<String> errors = new ArrayList<String>(); | 176 List<String> errors = new ArrayList<String>(); |
186 if (differencesList.getRecords().length == 0) { | 177 if (differencesList.getRecords().length == 0) { |
187 // TODO i18n of error message. (MSG.no_waterlevel_pair_selected()) | 178 errors.add(MSG.error_no_waterlevel_pair_selected()); |
188 errors.add("No pair of waterlevel items selected"); | |
189 } | 179 } |
190 // Check whether minuend and subtrahend are equal. | 180 // Check whether minuend and subtrahend are equal. |
181 for (ListGridRecord record: differencesList.getRecords()) { | |
182 RecommendationPairRecord r = (RecommendationPairRecord) record; | |
183 if (r.getFirst().equals(r.getSecond())) { | |
184 errors.add(MSG.error_same_waterlevels_in_pair()); | |
185 } | |
186 } | |
191 | 187 |
192 return errors; | 188 return errors; |
193 } | 189 } |
194 | 190 |
195 | 191 |
198 */ | 194 */ |
199 public Canvas createWidget() { | 195 public Canvas createWidget() { |
200 VLayout layout = new VLayout(); | 196 VLayout layout = new VLayout(); |
201 differencesList = new ListGrid(); | 197 differencesList = new ListGrid(); |
202 | 198 |
199 differencesList.setCanEdit(false); | |
200 differencesList.setCanRemoveRecords(true); | |
201 differencesList.setCanSort(false); | |
203 differencesList.setHeight(150); | 202 differencesList.setHeight(150); |
204 differencesList.setShowAllRecords(true); | 203 differencesList.setShowAllRecords(true); |
205 differencesList.setCanEdit(false); | |
206 differencesList.setCanRemoveRecords(true); | |
207 | 204 |
208 ListGridField nameField = new ListGridField("first", "Minuend"); | 205 ListGridField nameField = new ListGridField("first", "Minuend"); |
209 ListGridField capitalField = new ListGridField("second", "Subtrahend"); | 206 ListGridField capitalField = new ListGridField("second", "Subtrahend"); |
210 differencesList.setFields(new ListGridField[] {nameField, | 207 differencesList.setFields(new ListGridField[] {nameField, |
211 capitalField}); | 208 capitalField}); |
214 | 211 |
215 return layout; | 212 return layout; |
216 } | 213 } |
217 | 214 |
218 | 215 |
216 /** | |
217 * Validates data, does nothing if invalid, otherwise clones new selected | |
218 * waterlevels and add them to collection, forward the artifact. | |
219 */ | |
219 @Override | 220 @Override |
220 public void onClick(ClickEvent e) { | 221 public void onClick(ClickEvent e) { |
221 /* | 222 GWT.log("DatacageTwinPanel.onClick"); |
222 TODO: Validation/Error | 223 |
223 List<String> errors = validate(); | 224 List<String> errors = validate(); |
224 if (errors == null || errors.isEmpty()) { | 225 if (errors != null && !errors.isEmpty()) { |
225 ... | 226 showErrors(errors); |
226 else {showErrors(errors);} | 227 return; |
227 | 228 } |
228 * */ | 229 |
229 GWT.log("DatacageTwinPanel.onClick"); | |
230 Config config = Config.getInstance(); | 230 Config config = Config.getInstance(); |
231 ListGridRecord[] records = differencesList.getRecords(); | 231 ListGridRecord[] records = differencesList.getRecords(); |
232 | 232 |
233 // TODO Problem when same facet participates in two diffs. | 233 // TODO Problem when same facet participates in two diffs. |
234 // | 234 // |