2011-05-23 5 views
5

Quiero agregar en una aplicación SWT/JFace una funcionalidad de búsqueda que filtra un TableViewer cuando el usuario ingresa texto en el campo de texto de búsqueda.Cómo agregar un ViewerFilter en un JFace TableViewer que se actualiza dinámicamente?

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

¿Debo eliminar el filtro y crear uno nuevo en el detector de modificaciones o hay una solución mejor?

Respuesta

0

org.eclipse.ui.dialogs.FilteredTree está específicamente disponible para tal fin. ¿Por qué no puedes usar eso?

+0

Yo trabajo con tableviewer y no un treeviewer pero puedo evitar usar el mismo principio. Pero el gran problema es que no estoy en una aplicación RCP, así que no puedo usar WorkbenchJob. – fluminis

+1

¿Por qué no puede usar WorkbenchJob en RCP? Es una API y también se puede usar en aplicaciones RCP. –

+2

El problema es: ¡estoy * NO * en RCP! – fluminis

Cuestiones relacionadas