The class org.eclipse.ui.dialogs.FilteredTree is an easy way to filter tree elements. It provides automatically a text field for restricting the entries in the table.
For example a simple application could look like the following.
The following is a small description how to use this (using a Eclipse RCP example).
Create a new Eclipse RCP project, e.g. de.vogella.rcp.intro.filteredtree, using the “Eclipse application with a view” template.
Create the following content and lable provider (they are dead simple).
package de.vogella.rcp.intro.filteredtree;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
public class TreeContentProvider implements ITreeContentProvider {
@Override
public Object[] getChildren(Object arg0) {
return null;
}
@Override
public Object getParent(Object arg0) {
return null;
}
@Override
public boolean hasChildren(Object arg0) {
return false;
}
@Override
public Object[] getElements(Object arg0) {
String[] array = { "Habelman", "Hans", "Jim", "Joe" };
return array;
}
@Override
public void dispose() {
}
@Override
public void inputChanged(Viewer arg0, Object arg1, Object arg2) {
}
}
package de.vogella.rcp.intro.filteredtree;
import org.eclipse.jface.viewers.LabelProvider;
public class TreeLabelProvider extends LabelProvider {
@Override
public String getText(Object element) {
String name = (String) element;
return name;
}
}
Then change the View.java to the following to use the FilteredTree in your application.
package de.vogella.rcp.intro.filteredtree;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.dialogs.FilteredTree;
import org.eclipse.ui.dialogs.PatternFilter;
import org.eclipse.ui.part.ViewPart;
public class View extends ViewPart {
public static final String ID = "de.vogella.intro.rcp.filteredtree.view";
private TreeViewer viewer;
public void createPartControl(Composite parent) {
PatternFilter filter = new PatternFilter();
FilteredTree tree = new FilteredTree(parent, SWT.MULTI | SWT.H_SCROLL
| SWT.V_SCROLL, filter, true);
viewer = tree.getViewer();
viewer.setContentProvider(new TreeContentProvider());
viewer.setLabelProvider(new TreeLabelProvider());
viewer.setInput(getViewSite());
}
/**
* Passing the focus request to the viewer's control.
*/
public void setFocus() {
viewer.getControl().setFocus();
}
}
