Как добавить ViewerFilter в JFace TableViewer, который обновляется динамически? - PullRequest
6 голосов
/ 23 мая 2011

Я хочу добавить в приложение SWT / JFace функцию поиска, которая фильтрует TableViewer, когда пользователь вводит текст в текстовое поле поиска.

final Text filterText = new Text(parent, SWT.NONE);
filterText.addModifyListener(new ModifyListener() {
    @Override
    public void modifyText(ModifyEvent arg0) {
        //TODO how to update the viewer filter with the new text ?
    }
});

TableViewer tableViewer = new TableViewer(...);

ViewerFilter filterViewer = new ViewerFilter() {
    @Override
    public boolean select(Viewer viewer, Object parentElement, Object element) {
        if (filterText.getText() == "") {
            return true;
        }
        //do my stuff to know if element need to be filtered or not
        return false;
    }
};
tableViewer.addFilter(filterViewer);

Нужно ли удалить фильтр и создать новый в слушателе изменений или есть лучшее решение?

Ответы [ 2 ]

4 голосов
/ 23 мая 2011

По сути, вам нужен способ передачи введенного текста в фильтр, в вашем методе select вы должны фильтровать на основе этого текста, а в слушателе вашего текстового виджета передать текст в фильтр и вызвать viewer.refresh() on ваш стол.

Этот пример должен вам помочь: http://www.vogella.com/tutorials/EclipseJFaceTableAdvanced/article.html#jfacetable_filter

0 голосов
/ 23 мая 2011

org.eclipse.ui.dialogs.FilteredTree специально доступен для этой цели.Почему ты не можешь использовать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...