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 //

http://dive4elements.wald.intevation.org