# HG changeset patch # User Raimund Renkert # Date 1326119317 0 # Node ID d1223d93dd68e27dcf2bfb399d1b913d2af31e23 # Parent d12cb71965cf944ef08659af0a660eb5206ec56d Issue 358. Validate dialog on accept. flys-client/trunk@3629 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r d12cb71965cf -r d1223d93dd68 flys-client/ChangeLog --- a/flys-client/ChangeLog Mon Jan 09 09:50:37 2012 +0000 +++ b/flys-client/ChangeLog Mon Jan 09 14:28:37 2012 +0000 @@ -1,3 +1,16 @@ +2012-01-09 Raimund Renkert + + Issue 358. Validate dialog on accept. + + * src/main/java/de/intevation/flys/client/client/ui/chart/ChartPropertiesEditor.java: + Validate all forms before updating the chart. + + * src/main/java/de/intevation/flys/client/client/FLYSConstants.java, + src/main/java/de/intevation/flys/client/client/FLYSConstants.properties, + src/main/java/de/intevation/flys/client/client/FLYSConstants_en.properties, + src/main/java/de/intevation/flys/client/client/FLYSConstants_de.properties: + Added i18n string for error message. + 2012-01-09 Raimund Renkert Issue 358. Axis range fix. diff -r d12cb71965cf -r d1223d93dd68 flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.java --- a/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.java Mon Jan 09 09:50:37 2012 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.java Mon Jan 09 14:28:37 2012 +0000 @@ -498,6 +498,7 @@ String error_bad_dgm_river(); + String error_dialog_not_valid(); String bottom_edge(); diff -r d12cb71965cf -r d1223d93dd68 flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.properties --- a/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.properties Mon Jan 09 09:50:37 2012 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.properties Mon Jan 09 14:28:37 2012 +0000 @@ -259,6 +259,7 @@ error_invalid_dgm_selected = You have selected an invalid DEM. error_bad_dgm_range = You have selected a DEM with an invalid range. error_bad_dgm_river = You have selected a DEM for a wrong river. +error_dialog_not_valid = One or more values are not valid. ## map related strings digitize = images/digitize.png diff -r d12cb71965cf -r d1223d93dd68 flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_de.properties --- a/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_de.properties Mon Jan 09 09:50:37 2012 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_de.properties Mon Jan 09 14:28:37 2012 +0000 @@ -259,6 +259,7 @@ error_invalid_dgm_selected = Sie haben ein falsches DGM gew\u00e4hlt. error_bad_dgm_range = Das gew\u00e4hlte DGM passt nicht zur gew\u00e4hlten Berechnungsstrecke. error_bad_dgm_river = Das gew\u00e4hlte DGM passt nicht zum gew\u00e4hlten Fluss. +error_dialog_not_valid = Eine oder mehrere Daten sind nicht korrekt. ## map related strings digitize = images/digitize.png diff -r d12cb71965cf -r d1223d93dd68 flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_en.properties --- a/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_en.properties Mon Jan 09 09:50:37 2012 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_en.properties Mon Jan 09 14:28:37 2012 +0000 @@ -259,6 +259,7 @@ error_invalid_dgm_selected = You have selected an invalid DEM. error_bad_dgm_range = You have selected a DEM with an invalid range. error_bad_dgm_river = You have selected a DEM for a wrong river. +error_dialog_not_valid = One or more values are not valid. ## map related strings digitize = images/digitize.png diff -r d12cb71965cf -r d1223d93dd68 flys-client/src/main/java/de/intevation/flys/client/client/ui/chart/ChartPropertiesEditor.java --- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/chart/ChartPropertiesEditor.java Mon Jan 09 09:50:37 2012 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/chart/ChartPropertiesEditor.java Mon Jan 09 14:28:37 2012 +0000 @@ -1,6 +1,7 @@ package de.intevation.flys.client.client.ui.chart; import java.util.List; +import java.util.Map; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.rpc.AsyncCallback; @@ -123,7 +124,13 @@ cancel.addClickHandler(this); accept.addClickHandler(new ClickHandler() { public void onClick(ClickEvent e) { - updateCollection(); + if(isDialogValid()) { + updateCollection(); + } + else { + GWT.log("Dialog not valid"); + SC.warn(MSG.error_dialog_not_valid()); + } } }); @@ -404,4 +411,39 @@ this.tab.updateChartInfo(); this.tab.updateChartPanel(); } + + + protected boolean isDialogValid() { + boolean valid = true; + for (int i = 0; i < tabs.getNumTabs(); i++) { + Tab t = tabs.getTab(i); + Canvas container = t.getPane(); + Canvas[] children = container.getChildren(); + for (Canvas c: children) { + valid = validateCanvas(c); + if(!valid) { + return valid; + } + } + } + return valid; + } + + + protected boolean validateCanvas(Canvas c) { + boolean valid = true; + if(c instanceof DynamicForm) { + DynamicForm f = (DynamicForm) c; + return !f.hasErrors(); + } + else if(c.getChildren().length > 0) { + for (Canvas child: c.getChildren()) { + valid = validateCanvas(child); + if(!valid) { + return valid; + } + } + } + return valid; + } }