Paul
Paul

Reputation: 1

Filter tree in Vaadin

I want to hide leafs from vaadin tree according to text in some editbox (on text change). ie if text in editbox is "ab" i want to show only leafs with text starting with "ab". and if text is empty, i want to show all leafs.

How can i make that?

Upvotes: 0

Views: 2502

Answers (1)

miq
miq

Reputation: 2766

You will have to filter the data container which is attached to the tree.

A new Filter API was introduced in version 6.6.0 which allows you to create custom Filters. I haven't tried the new API yet, but in your case it should work like this:

textField.addListener(new FieldEvents.TextChangeListener() {
    void textChange(FieldEvents.TextChangeEvent event) {
        // Remove existing filter (if any).
        // This is OK if you don't use any other filters, otherwise you'll have to store the previous filter and use removeContainerFilter(filter)
        dataContainer.removeAllContainerFilters();

        // Create a new filter which ignores case and only matches String prefix
        SimpleStringFilter filter = new SimpleStringFilter(propertyId, event.getText(), true, true);

        // Add the new filter
        dataContainer.addContainerFilter(filter);
    }
});

in which textField is your "editbox", dataContainer is the data container which is attached to your tree and properyId is the property id of the container field which contains the text you want to filter.

Note that the above code is untested because I currently can't access the appropriate development tools.

Upvotes: 3

Related Questions