From b1bf4c915b8f84813653a20b6b604a71aa81f05f Mon Sep 17 00:00:00 2001 From: Matti Tahvonen Date: Tue, 11 Sep 2007 07:47:14 +0000 Subject: [PATCH] returned filter select demo to its original state svn changeset:2270/svn branch:trunk --- src/com/itmill/toolkit/demo/FilterSelect.java | 11 ++-- .../toolkit/ui/select/ContainsFilter.java | 65 ++++++++++++------- 2 files changed, 47 insertions(+), 29 deletions(-) diff --git a/src/com/itmill/toolkit/demo/FilterSelect.java b/src/com/itmill/toolkit/demo/FilterSelect.java index ce599ae65f..38c597ce77 100644 --- a/src/com/itmill/toolkit/demo/FilterSelect.java +++ b/src/com/itmill/toolkit/demo/FilterSelect.java @@ -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(); } } diff --git a/src/com/itmill/toolkit/ui/select/ContainsFilter.java b/src/com/itmill/toolkit/ui/select/ContainsFilter.java index a73c361479..9fe7906aad 100644 --- a/src/com/itmill/toolkit/ui/select/ContainsFilter.java +++ b/src/com/itmill/toolkit/ui/select/ContainsFilter.java @@ -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() { -- 2.39.5