private StoreFilterField<SelectionItem> buildFilter(TreeStore<SelectionItem> store) { StoreFilterField<SelectionItem> treeFilter = new StoreFilterField<SelectionItem>() { @Override protected boolean doSelect( Store<SelectionItem> store, SelectionItem parent, SelectionItem item, String filter) { String itemDisplay = item.getDisplay().toLowerCase(); String searchTerm = filter.toLowerCase(); return (itemDisplay.indexOf(searchTerm) >= 0); } @Override protected void onFilter() { super.onFilter(); tree.unmask(); } @Override protected void onKeyUp(Event event) { tree.mask(); super.onKeyUp(event); } }; treeFilter.bind(store); treeFilter.setEmptyText(I18N.DISPLAY.treeSelectorFilterEmptyText()); treeFilter.setWidth(250); treeFilter.setValidationDelay(750); return treeFilter; }
public Widget asWidget() { FlowLayoutContainer con = new FlowLayoutContainer(); con.addStyleName("margin-10"); TreeStore<BaseDto> store = new TreeStore<BaseDto>(new KeyProvider()); FolderDto root = TestData.getMusicRootFolder(); for (BaseDto base : root.getChildren()) { store.add(base); if (base instanceof FolderDto) { processFolder(store, (FolderDto) base); } } StoreFilterField<BaseDto> filter = new StoreFilterField<BaseDto>() { @Override protected boolean doSelect( Store<BaseDto> store, BaseDto parent, BaseDto item, String filter) { if (item instanceof FolderDto) { return false; } String name = item.getName(); name = name.toLowerCase(); if (name.startsWith(filter.toLowerCase())) { return true; } return false; } }; filter.bind(store); final Tree<BaseDto, String> tree = new Tree<BaseDto, String>( store, new ValueProvider<BaseDto, String>() { @Override public String getValue(BaseDto object) { return object.getName(); } @Override public void setValue(BaseDto object, String value) {} @Override public String getPath() { return "name"; } }); tree.setWidth(300); tree.getStyle().setLeafIcon(ExampleImages.INSTANCE.music()); ButtonBar buttonBar = new ButtonBar(); buttonBar.add( new TextButton( "Expand All", new SelectHandler() { @Override public void onSelect(SelectEvent event) { tree.expandAll(); } })); buttonBar.add( new TextButton( "Collapse All", new SelectHandler() { @Override public void onSelect(SelectEvent event) { tree.collapseAll(); } })); buttonBar.setLayoutData(new MarginData(4)); con.add(filter); con.add(buttonBar); con.add(tree); return con; }