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;
  }
Пример #2
0
  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;
  }