]> source.dussan.org Git - vaadin-framework.git/commitdiff
returned filter select demo to its original state
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Tue, 11 Sep 2007 07:47:14 +0000 (07:47 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Tue, 11 Sep 2007 07:47:14 +0000 (07:47 +0000)
svn changeset:2270/svn branch:trunk

src/com/itmill/toolkit/demo/FilterSelect.java
src/com/itmill/toolkit/ui/select/ContainsFilter.java

index ce599ae65f248b8cbde1220d2836a0952f5b774e..38c597ce771a8f0363baed28d8737d0d83e2ace9 100644 (file)
@@ -89,12 +89,12 @@ public class FilterSelect extends com.itmill.toolkit.Application {
                Panel panel3 = new Panel("Select with custom 'EndsWith' filter");
 
                panel1.addComponent(s1);
-//             panel2.addComponent(s2);
-//             panel3.addComponent(s3);
+               panel2.addComponent(s2);
+               panel3.addComponent(s3);
 
                orderedLayout.addComponent(panel1);
-//             orderedLayout.addComponent(panel2);
-//             orderedLayout.addComponent(panel3);
+               orderedLayout.addComponent(panel2);
+               orderedLayout.addComponent(panel3);
                main.addComponent(orderedLayout);
 
        }
@@ -145,8 +145,7 @@ public class FilterSelect extends com.itmill.toolkit.Application {
                }
 
                public int getMatchCount() {
-                       // TODO Auto-generated method stub
-                       return 0;
+                       return filteredItemsBuffer.size();
                }
        }
 
index a73c3614797fe3e91101ad3169692932e5476a59..9fe7906aad8d93d281cd123417d48f0c5f87f614 100644 (file)
@@ -12,37 +12,56 @@ public class ContainsFilter implements OptionFilter {
 
        private ArrayList filteredItemsBuffer;
 
+       private String prevFilter;
+
        public ContainsFilter(Select s) {
                this.s = s;
        }
 
        public List filter(String filterstring, int pageLength, int page) {
-               // prefix MUST be in lowercase
-               if (filterstring == null || "".equals(filterstring)) {
-                       this.filteredItemsBuffer = new ArrayList(s.getItemIds());
-                       return this.filteredItemsBuffer;
-
-               } else if (s.getContainerDataSource() != null) {
-                       // all items will be iterated and tested.
-                       // SLOW when there are lot of items.
-                       this.filteredItemsBuffer = new ArrayList();
-                       for (Iterator iter = s.getItemIds().iterator(); iter.hasNext();) {
-                               Object id = iter.next();
-
-                               Item item = s.getItem(id);
-                               String test = "";
-                               if (s.getItemCaptionMode() == Select.ITEM_CAPTION_MODE_PROPERTY)
-                                       test = item.getItemProperty(s.getItemCaptionPropertyId())
-                                                       .getValue().toString().trim();
-                               else
-                                       test = String.valueOf(id);
-
-                               if (test.toLowerCase().indexOf(filterstring) != -1) {
-                                       this.filteredItemsBuffer.add(id);
+               if(filterstring == null) {
+                       filterstring = "";
+               }
+               if(this.prevFilter != filterstring || filteredItemsBuffer == null) {
+                       if ("".equals(filterstring)) {
+                               this.filteredItemsBuffer = new ArrayList(s.getItemIds());
+                       } else if (s.getContainerDataSource() != null) {
+                               // prefix MUST be in lowercase
+                               filterstring = filterstring.toLowerCase();
+
+                               // all items will be iterated and tested.
+                               // SLOW when there are lot of items.
+                               this.filteredItemsBuffer = new ArrayList();
+                               for (Iterator iter = s.getItemIds().iterator(); iter.hasNext();) {
+                                       Object id = iter.next();
+
+                                       Item item = s.getItem(id);
+                                       String test = "";
+                                       if (s.getItemCaptionMode() == Select.ITEM_CAPTION_MODE_PROPERTY)
+                                               test = item.getItemProperty(s.getItemCaptionPropertyId())
+                                                               .getValue().toString().trim();
+                                       else
+                                               test = String.valueOf(id);
+
+                                       if (test.toLowerCase().indexOf(filterstring) > -1) {
+                                               this.filteredItemsBuffer.add(id);
+                                       }
                                }
                        }
                }
-               return this.filteredItemsBuffer;
+               
+               prevFilter = filterstring;
+               
+               if(filteredItemsBuffer.size() > pageLength) {
+                       int first = page*pageLength;
+                       int last = first + pageLength;
+                       if(filteredItemsBuffer.size() < last) {
+                               last = filteredItemsBuffer.size();
+                       }
+                       return filteredItemsBuffer.subList(first, last);
+               } else {
+                       return filteredItemsBuffer;
+               }
        }
 
        public int getMatchCount() {