2011-05-23 94 views
5

我想在SWT/JFace應用程序中添加一個搜索功能,以便在用戶在搜索文本字段中輸入文本時過濾TableViewer。如何在動態更新的JFace TableViewer上添加ViewerFilter?

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 fitered or not 
     return false; 
    } 
}; 
tableViewer.addFilter(filterViewer); 

我是否需要刪除過濾器並在修改偵聽器中創建一個新的或有更好的解決方案嗎?

回答

0

org.eclipse.ui.dialogs.FilteredTree專門用於該目的。你爲什麼不能使用它?

+0

我TableViewer的,而不是一個TreeViewer中工作,但我可以解決使用相同的原則。但是最大的問題是我不在RCP應用程序中,所以我不能使用WorkbenchJob。 – fluminis 2011-05-23 12:24:58

+1

爲什麼你不能在RCP中使用WorkbenchJob?它是一個API,也可以用於RCP應用程序。 – 2011-05-23 15:52:21

+2

問題是:我*不*在RCP! – fluminis 2011-05-25 05:28:20

相關問題