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);
}
}
public int getMatchCount() {
- // TODO Auto-generated method stub
- return 0;
+ return filteredItemsBuffer.size();
}
}
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() {