diff gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/AbstractVegZonesTablePanel.java @ 9299:4a6cc7c6716a

uinfo.inundation_duration veg'zone select
author gernotbelger
date Wed, 25 Jul 2018 14:42:44 +0200
parents b570b6fcc052
children d89976700474
line wrap: on
line diff
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/AbstractVegZonesTablePanel.java	Wed Jul 25 11:33:48 2018 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/AbstractVegZonesTablePanel.java	Wed Jul 25 14:42:44 2018 +0200
@@ -108,7 +108,7 @@
         fromField.addCellSavedHandler(new CellSavedHandler() {
             @Override
             public void onCellSaved(final CellSavedEvent event) {
-                validateRangeOverlap();
+                updateValidationMsgLabel();
             }
         });
         // war mal ne anforderung, dass sich die Werte anderer Zellen ändern, sodass keine lücken entstehen... mach das jetzt
@@ -163,7 +163,7 @@
         toField.addCellSavedHandler(new CellSavedHandler() {
             @Override
             public void onCellSaved(final CellSavedEvent event) {
-                validateRangeOverlap();
+                updateValidationMsgLabel();
             }
         });
         // nicht
@@ -192,7 +192,7 @@
                 @Override
                 public void onRecordClick(final RecordClickEvent event) {
                     if (event.getField().getName().equals(removeField.getName())) {
-                        validateRangeOverlap();
+                        updateValidationMsgLabel();
                     }
                 }
             });
@@ -243,24 +243,31 @@
             if (dataItemContainer.getItems() != null) {
                 for (final DataItem dataItem : dataItemContainer.getItems()) {
                     if (dataItem.getStringValue() != null) {
-
-                        final List<VegetationZone> rows = VegetationZone.parse(dataItem.getStringValue());
-                        for (final VegetationZone row : rows) {
-                            this.elements.addData(createEntry(row));
-                        }
+                        createTableFromDataStr(dataItem.getStringValue());
                     }
                 }
             }
         }
     }
 
+    protected final void createTableFromDataStr(final String data) {
+        for (final ListGridRecord r : this.elements.getRecords()) {
+            this.elements.removeData(r);
+        }
+        final List<VegetationZone> rows = VegetationZone.parse(data);
+        for (final VegetationZone row : rows) {
+            this.elements.addData(createEntry(row));
+        }
+    }
+
     @Override
     public final Canvas create(final DataList data) {
         final VLayout layout = new VLayout();
 
         // TODO: Helper zur Vegetationszonen-Auswahl
-        // final Canvas helper = createHelper();
-        // this.helperContainer.addMember(helper);
+        final Canvas helper = createHelper(data);
+        if (helper != null)
+            this.helperContainer.addMember(helper);
 
         final Canvas submit = getNextButton();
 
@@ -271,7 +278,7 @@
         layout.addMember(root);
         layout.addMember(submit);
 
-        validateRangeOverlap();// init Text
+        updateValidationMsgLabel();// init Text
 
         return layout;
     }
@@ -351,7 +358,7 @@
 
     }
 
-    protected String validate(final String fromInput, final String toInput, final String zoneName, final String hexColor) {
+    protected final String validate(final String fromInput, final String toInput, final String zoneName, final String hexColor) {
 
         if (fromInput == null || toInput == null || zoneName == null || hexColor == null || fromInput.trim().isEmpty() || toInput.trim().isEmpty()
                 || zoneName.trim().isEmpty() || hexColor.trim().isEmpty())
@@ -378,7 +385,7 @@
     }
 
     @Override
-    public List<String> validate() {
+    public final List<String> validate() {
         final List<String> errors = new ArrayList<String>();
 
         if (VegetationZone.zonesAreOverlapping(this.getZones(this.elements.getRecords())))
@@ -388,7 +395,9 @@
         return errors;
     }
 
-    protected final void validateRangeOverlap() {
+    protected final void updateValidationMsgLabel() {
         this.validationLabel.setText(validate().toString().replace("[", "").replace("]", "").replace(",", ""));
     }
+
+    protected abstract Canvas createHelper(final DataList data);
 }
\ No newline at end of file

http://dive4elements.wald.intevation.org