diff 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
line wrap: on
line diff
--- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/DatacageTwinPanel.java	Wed Oct 12 11:03:49 2011 +0000
+++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/DatacageTwinPanel.java	Wed Oct 12 12:42:53 2011 +0000
@@ -51,10 +51,6 @@
 
     protected User user;
 
-    protected ToLoad toLoad1;
-
-    protected ToLoad toLoad2;
-
     protected ListGrid differencesList;
 
     LoadArtifactServiceAsync loadArtifactService = GWT.create(
@@ -125,8 +121,10 @@
         // TODO real name
         if (recs.length % 2 != 0) return;
         for (int i = 0; i < recs.length; i+=2) {
-            Recommendation minuend    = createRecommendationFromString(recs[i+0]);
-            Recommendation subtrahend = createRecommendationFromString(recs[i+1]);
+            Recommendation minuend =
+                createRecommendationFromString(recs[i+0]);
+            Recommendation subtrahend =
+                createRecommendationFromString(recs[i+1]);
             RecommendationPairRecord pr = new RecommendationPairRecord(
                "A", minuend, "B", subtrahend);
             // This Recommendation Pair comes from the data string and was thus
@@ -141,38 +139,28 @@
     public Canvas create(DataList dataList) {
         GWT.log("createData()");
 
-        // TODO use i18n of data.
-        Canvas label  = new Label("Subtrahend/Minuend");//data.getDescription());
         Canvas widget = createWidget();
         Canvas submit = getNextButton();
 
         VLayout layout       = new VLayout();
         HLayout helperLayout = new HLayout();
-        label.setHeight(50);
         helperLayout.addMember(new DatacagePairWidget(this.artifact,
             user, "waterlevels", differencesList));
 
-        /*layout.addMember(label);*/
         layout.addMember(widget);
         layout.addMember(submit);
         layout.setMembersMargin(10);
         this.helperContainer.addMember(helperLayout);
 
-        // Find old data, if any.
+        // Find old data, if any, handle "diffids".
         Data   data   = dataList.get(0);
-        // "diffids" data handling.
         this.dataName = data.getLabel();
         for (int i = 0; i < dataList.size(); i++) {
-            if (dataList.get(i) != null) {
+            if (dataList.get(i) != null && dataList.get(i).getItems() != null) {
                 if (dataList.get(i).getItems() != null) {
-                    populateGridFromString(dataList.get(i).getItems()[0].getStringValue());
+                    populateGridFromString(
+                        dataList.get(i).getItems()[0].getStringValue());
                 }
-                else{
-                    System.out.println("DatacageTwinPanel: Datalist for item is null");
-                }
-            }
-            else{
-                System.out.println("DatacageTwinPanel: Data " + i + " is null (not displayable).");
             }
         }
 
@@ -180,14 +168,22 @@
     }
 
 
+    /**
+     * Validates the selection.
+     */
     @Override
     public List<String> validate() {
         List<String> errors = new ArrayList<String>();
         if (differencesList.getRecords().length == 0) {
-            // TODO i18n of error message. (MSG.no_waterlevel_pair_selected())
-            errors.add("No pair of waterlevel items selected");
+            errors.add(MSG.error_no_waterlevel_pair_selected());
         }
         // Check whether minuend and subtrahend are equal.
+        for (ListGridRecord record: differencesList.getRecords()) {
+            RecommendationPairRecord r = (RecommendationPairRecord) record;
+            if (r.getFirst().equals(r.getSecond())) {
+                errors.add(MSG.error_same_waterlevels_in_pair());
+            }
+        }
 
         return errors;
     }
@@ -200,10 +196,11 @@
         VLayout layout  = new VLayout();
         differencesList = new ListGrid();
 
+        differencesList.setCanEdit(false);
+        differencesList.setCanRemoveRecords(true);
+        differencesList.setCanSort(false);
         differencesList.setHeight(150);
         differencesList.setShowAllRecords(true);
-        differencesList.setCanEdit(false);
-        differencesList.setCanRemoveRecords(true);
 
         ListGridField nameField    = new ListGridField("first",  "Minuend");
         ListGridField capitalField = new ListGridField("second", "Subtrahend");
@@ -216,17 +213,20 @@
     }
 
 
+    /**
+     * Validates data, does nothing if invalid, otherwise clones new selected
+     * waterlevels and add them to collection, forward the artifact.
+     */
     @Override
     public void onClick(ClickEvent e) {
-        /*
-        TODO: Validation/Error
+        GWT.log("DatacageTwinPanel.onClick");
+
         List<String> errors = validate();
-        if (errors == null || errors.isEmpty()) {
-        ...
-        else {showErrors(errors);}
+        if (errors != null && !errors.isEmpty()) {
+            showErrors(errors);
+            return;
+        }
 
-         * */
-        GWT.log("DatacageTwinPanel.onClick");
         Config config = Config.getInstance();
         ListGridRecord[] records = differencesList.getRecords();
 

http://dive4elements.wald.intevation.org