Revision: 1715
          http://svn.sourceforge.net/spring-rich-c/?rev=1715&view=rev
Author:   jhoskens
Date:     2007-02-13 03:51:29 -0800 (Tue, 13 Feb 2007)

Log Message:
-----------
FormGuard should listen to errors of formModel, not directly on the  
validationResults
DefaultFormModel registers listeners on it's children to check on errors

Modified Paths:
--------------
    
trunk/spring-richclient/support/src/main/java/org/springframework/binding/form/support/DefaultFormModel.java
    
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/form/FormGuard.java

Modified: 
trunk/spring-richclient/support/src/main/java/org/springframework/binding/form/support/DefaultFormModel.java
===================================================================
--- 
trunk/spring-richclient/support/src/main/java/org/springframework/binding/form/support/DefaultFormModel.java
        2007-02-13 08:46:09 UTC (rev 1714)
+++ 
trunk/spring-richclient/support/src/main/java/org/springframework/binding/form/support/DefaultFormModel.java
        2007-02-13 11:51:29 UTC (rev 1715)
@@ -23,6 +23,7 @@
 import org.springframework.binding.MutablePropertyAccessStrategy;
 import org.springframework.binding.form.BindingErrorMessageProvider;
 import org.springframework.binding.form.FormModel;
+import org.springframework.binding.form.HierarchicalFormModel;
 import org.springframework.binding.form.ValidatingFormModel;
 import org.springframework.binding.validation.RichValidator;
 import org.springframework.binding.validation.ValidationMessage;
@@ -63,11 +64,20 @@
     private boolean validating = true;
     
     private boolean oldValidating = true;
+    
+    private boolean oldHasErrors = false;
 
     private Validator validator;
     
     private BindingErrorMessageProvider bindingErrorMessageProvider = new 
DefaultBindingErrorMessageProvider();
 
+    private final PropertyChangeListener errorChangeHandler = new 
PropertyChangeListener(){
+    
+                public void propertyChange(PropertyChangeEvent evt)
+                {
+                    hasErrorsUpdated();
+                }};
+
     public DefaultFormModel() {
         init();
     }
@@ -117,12 +127,7 @@
             }
             
         });
-        
validationResultsModel.addPropertyChangeListener(ValidationResultsModel.HAS_ERRORS_PROPERTY,
 new PropertyChangeListener(){
-
-            public void propertyChange(PropertyChangeEvent evt)
-            {
-                committableUpdated();
-            }});
+        
validationResultsModel.addPropertyChangeListener(ValidationResultsModel.HAS_ERRORS_PROPERTY,
 errorChangeHandler);
     }
 
     public boolean isValidating() {
@@ -147,7 +152,21 @@
             firePropertyChange(VALIDATING_PROPERTY, !validating, validating);
         }
     }
+    
+    public void addChild(HierarchicalFormModel child)
+    {
+        super.addChild(child);
+        if (child instanceof ValidatingFormModel)
+            
child.addPropertyChangeListener(ValidationResultsModel.HAS_ERRORS_PROPERTY, 
errorChangeHandler);
+    }
 
+    public void removeChild(HierarchicalFormModel child)
+    {
+        if (child instanceof ValidatingFormModel)
+            
child.removePropertyChangeListener(ValidationResultsModel.HAS_ERRORS_PROPERTY, 
errorChangeHandler);
+        super.removeChild(child);
+    }
+
     public ValidationResultsModel getValidationResults() {
         return validationResultsModel;
     }
@@ -168,6 +187,15 @@
         return false;
     }
     
+    protected void hasErrorsUpdated() {
+        boolean hasErrors = getHasErrors();
+        if (hasChanged(oldHasErrors, hasErrors)) {
+            oldHasErrors = hasErrors;
+            firePropertyChange(ValidationResultsModel.HAS_ERRORS_PROPERTY, 
!hasErrors, hasErrors);
+            committableUpdated();
+        }
+    }
+    
     public void validate() {
         if (isValidating()) {
             validateAfterPropertyChanged(null);

Modified: 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/form/FormGuard.java
===================================================================
--- 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/form/FormGuard.java
    2007-02-13 08:46:09 UTC (rev 1714)
+++ 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/form/FormGuard.java
    2007-02-13 11:51:29 UTC (rev 1715)
@@ -83,8 +83,7 @@
         this.formModel = formModel;
 
         this.formModel.addPropertyChangeListener(FormModel.ENABLED_PROPERTY, 
this);
-        this.formModel.getValidationResults().addPropertyChangeListener(
-                ValidationResultsModel.HAS_ERRORS_PROPERTY, this);
+        
this.formModel.addPropertyChangeListener(ValidationResultsModel.HAS_ERRORS_PROPERTY,
 this);
         this.formModel.addPropertyChangeListener(FormModel.DIRTY_PROPERTY, 
this);
     }
 


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier.
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
spring-rich-c-cvs mailing list
spring-rich-c-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spring-rich-c-cvs

Reply via email to