Фильтр дерева в Ваадине - PullRequest
0 голосов
/ 07 июля 2011

Я хочу скрыть листья из дерева ваадинов в соответствии с текстом в каком-либо окне редактирования (при изменении текста). То есть, если текст в поле ввода «ab», я хочу показать только листы с текстом, начинающимся с «ab». и если текст пуст, я хочу показать все листья.

Как я могу это сделать?

1 Ответ

3 голосов
/ 25 июля 2011

Вам потребуется отфильтровать контейнер данных, который прикреплен к дереву.

В версии 6.6.0 был представлен новый API-интерфейс фильтров, который позволяет создавать собственные фильтры.Я еще не пробовал новый API, но в вашем случае он должен работать следующим образом:

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);
    }
});

, в котором textField является вашим «окном редактирования», dataContainer - это контейнер данных, который прикреплен к вашему дереву, а ProperyId - это идентификатор свойства поля контейнера, которое содержит текст, который вы хотите отфильтровать.

Обратите внимание, что приведенный выше код не проверен, поскольку в настоящее время я не могу получить доступ к соответствующим инструментам разработки.

...