private StoreFilterField<GPSimpleUser> createServerFilter(
     StoreFilterField<GPSimpleUser> storeFilterField,
     ListStore<GPSimpleUser> store,
     String filterLabel) {
   storeFilterField =
       new StoreFilterField<GPSimpleUser>() {
         @Override
         protected boolean doSelect(
             Store<GPSimpleUser> store,
             GPSimpleUser parent,
             GPSimpleUser record,
             String property,
             String filter) {
           String name = record.getName().toString().toLowerCase();
           if (name.contains(filter.toLowerCase())) {
             return Boolean.TRUE;
           }
           return Boolean.FALSE;
         }
       };
   storeFilterField.setEmptyText("Type the user to filter");
   storeFilterField.bind(store);
   storeFilterField.setFieldLabel(filterLabel);
   return storeFilterField;
 }
  /**
   * Creates, configures and adds the components palette toolbar.<br>
   *
   * @param componentsReceiver
   */
  private void addToolbar() {
    // the toolbar
    ToolBar gridToolBar = new ToolBar();
    setTopComponent(gridToolBar);

    SelectionListener<ButtonEvent> ttiAddListener =
        new SelectionListener<ButtonEvent>() {
          @Override
          public void componentSelected(ButtonEvent ce) {
            GridSelectionModel<PaletteModelData> selectionModel = gComponents.getSelectionModel();
            List<PaletteModelData> lSelected = selectionModel.getSelectedItems();
            if (!lSelected.isEmpty()) {
              componentsReceiver.receiveComponents(lSelected);
              hide();
              selectionModel.deselectAll();
              ttiAddSelected.disable();
            }
          }
        };
    ttiAddSelected =
        buttonsSupport.addGenericButton(
            pmsMessages.labelAddSelected(), styles.iNew(), gridToolBar, ttiAddListener);
    ttiAddSelected.disable();

    gridToolBar.add(new FillToolItem());

    StoreFilterField<PaletteModelData> filter =
        new CustomizableStoreFilter<PaletteModelData>(
            Arrays.asList(
                new String[] {
                  PaletteModelData.PROPERTY_NAME, PaletteModelData.PROPERTY_DESCRIPTION
                }));
    filter.setHideLabel(false);
    filter.setFieldLabel(messages.labelFilter());
    filter.bind(sGrid);
    gridToolBar.add(filter);

    setTopComponent(gridToolBar);
  }
  @Override
  protected void onRender(Element parent, int index) {
    super.onRender(parent, index);

    setLayout(new FlowLayout(10));

    Folder model = TestData.getTreeModel();

    TreeStore<ModelData> store = new TreeStore<ModelData>();

    store.add(model.getChildren(), true);

    ColumnConfig name = new ColumnConfig("name", "Name", 100);
    name.setRenderer(new TreeGridCellRenderer<ModelData>());

    ColumnConfig date = new ColumnConfig("author", "Author", 100);

    ColumnConfig size = new ColumnConfig("genre", "Genre", 100);

    ColumnModel cm = new ColumnModel(Arrays.asList(name, date, size));

    ContentPanel cp = new ContentPanel();
    cp.setBodyBorder(false);
    cp.setHeading("TreeGrid");
    cp.setButtonAlign(HorizontalAlignment.CENTER);
    cp.setLayout(new FitLayout());
    cp.setFrame(true);
    cp.setSize(600, 300);

    TreeGrid<ModelData> tree = new TreeGrid<ModelData>(store, cm);
    tree.setBorders(true);
    tree.getStyle().setLeafIcon(Resources.ICONS.music());
    tree.setAutoExpandColumn("name");
    tree.setTrackMouseOver(false);

    cp.add(tree);

    add(cp);

    StoreFilterField<ModelData> filter =
        new StoreFilterField<ModelData>() {

          @Override
          protected boolean doSelect(
              Store<ModelData> store,
              ModelData parent,
              ModelData record,
              String property,
              String filter) {
            // only match leaf nodes
            if (record instanceof Folder) {
              return false;
            }
            String name = record.get("name");
            name = name.toLowerCase();
            if (name.startsWith(filter.toLowerCase())) {
              return true;
            }
            return false;
          }
        };
    filter.bind(store);

    ToolBar toolBar = new ToolBar();
    toolBar.setBorders(true);
    toolBar.add(new LabelToolItem("Filter:"));
    toolBar.add(filter);

    cp.setTopComponent(toolBar);
  }