Revision: 1303
Author:   mathiasbr
Date:     2006-08-16 15:03:56 -0700 (Wed, 16 Aug 2006)
ViewCVS:  http://svn.sourceforge.net/spring-rich-c/?rev=1303&view=rev

Log Message:
-----------
support to redefine filter constraint

Modified Paths:
--------------
    
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/list/FilteredListModel.java
    
trunk/spring-richclient/support/src/test/java/org/springframework/richclient/list/FilteredListModelTests.java
Modified: 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/list/FilteredListModel.java
===================================================================
--- 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/list/FilteredListModel.java
    2006-08-16 15:18:25 UTC (rev 1302)
+++ 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/list/FilteredListModel.java
    2006-08-16 22:03:56 UTC (rev 1303)
@@ -33,7 +33,7 @@
  */
 public class FilteredListModel extends AbstractFilteredListModel implements 
Observer {
 
-    private final Constraint constraint;
+    private Constraint constraint;
 
     private int[] indexes;
 
@@ -52,15 +52,40 @@
      */
     public FilteredListModel(ListModel listModel, Constraint constraint) {
         super(listModel);
+        setConstraint(constraint);
+    }
+
+    /**
+     * Defines the constraint which is applied to the list model elements
+     * 
+     * @param constraint
+     *            the constraint to set
+     * 
+     * @throws IllegalArgumentException
+     *             if constraint is null
+     */
+    public final void setConstraint(Constraint constraint) {
         Assert.notNull(constraint);
-        this.constraint = constraint;
-        if (this.constraint instanceof Observable) {
-            ((Observable) this.constraint).addObserver(this);
+        if (!constraint.equals(this.constraint)) {
+            if (this.constraint instanceof Observable) {
+                ((Observable) constraint).deleteObserver(this);
+            }
+            this.constraint = constraint;
+            if (constraint instanceof Observable) {
+                ((Observable) constraint).addObserver(this);
+            }
+            reallocateIndexes();
         }
-        reallocateIndexes();
     }
 
     /**
+     * @return the constraint
+     */
+    public Constraint getConstraint() {
+        return constraint;
+    }
+
+    /**
      * Internally called to reallocate the indexes. This method should be 
called when the filtered model changes its
      * element size
      */

Modified: 
trunk/spring-richclient/support/src/test/java/org/springframework/richclient/list/FilteredListModelTests.java
===================================================================
--- 
trunk/spring-richclient/support/src/test/java/org/springframework/richclient/list/FilteredListModelTests.java
       2006-08-16 15:18:25 UTC (rev 1302)
+++ 
trunk/spring-richclient/support/src/test/java/org/springframework/richclient/list/FilteredListModelTests.java
       2006-08-16 22:03:56 UTC (rev 1303)
@@ -86,6 +86,18 @@
         assertEquals("4", filteredModel.getElementAt(1));
     }
 
+    public void testRedefineFilter() throws Exception {
+        filter.elements = Arrays.asList(new Object[] { "2", "4", "9999" });
+        FilteredListModel filteredModel = new FilteredListModel(listModel, 
filter);
+        assertEquals(2, filteredModel.getSize());
+        assertEquals("2", filteredModel.getElementAt(0));
+        assertEquals("4", filteredModel.getElementAt(1));
+        TestConstraint newFilter = new TestConstraint();
+        newFilter.filter = false;
+        filteredModel.setConstraint(newFilter);
+        assertEquals(listModel.getSize(), filteredModel.getSize());
+    }
+
     public void testFilterWithUpdatingModel() throws Exception {
         filter.elements = Arrays.asList(new Object[] { "2", "4", "9999" });
         ListModel filteredModel = new FilteredListModel(listModel, filter);


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
[email protected]
https://lists.sourceforge.net/lists/listinfo/spring-rich-c-cvs

Reply via email to