Java tutorial
import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ILabelProviderListener; import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.ListViewer; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerFilter; import org.eclipse.jface.window.ApplicationWindow; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; public class MainClass extends ApplicationWindow { private ItemFilter filter = new ItemFilter(); public MainClass() { super(null); setBlockOnOpen(true); open(); Display.getCurrent().dispose(); } protected void configureShell(Shell shell) { super.configureShell(shell); shell.setText("Food List"); } protected Control createContents(Composite parent) { Composite composite = new Composite(parent, SWT.NONE); composite.setLayout(new GridLayout(1, false)); Button filterButton = new Button(composite, SWT.CHECK); filterButton.setText("&Show only healthy"); final ListViewer lv = new ListViewer(composite); lv.setContentProvider(new ItemContentProvider()); lv.setLabelProvider(new ItemLabelProvider()); lv.setInput(new ItemList()); filterButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { if (((Button) event.widget).getSelection()) lv.addFilter(filter); else lv.removeFilter(filter); } }); parent.pack(); return composite; } public static void main(String[] args) { new MainClass(); } } class MyItem { private String name; private boolean visible; public MyItem(String name, boolean healthy) { this.name = name; this.visible = healthy; } public boolean isVisible() { return visible; } public String getName() { return name; } } class ItemFilter extends ViewerFilter { public boolean select(Viewer arg0, Object arg1, Object arg2) { return ((MyItem) arg2).isVisible(); } } class ItemList { private ArrayList foods; public ItemList() { foods = new ArrayList(); foods.add(new MyItem("A", true)); foods.add(new MyItem("B", false)); foods.add(new MyItem("C", true)); foods.add(new MyItem("D", false)); foods.add(new MyItem("E", true)); foods.add(new MyItem("F", false)); foods.add(new MyItem("G", true)); foods.add(new MyItem("H", false)); foods.add(new MyItem("I", true)); foods.add(new MyItem("K", false)); } public List getFoods() { return Collections.unmodifiableList(foods); } } class ItemLabelProvider implements ILabelProvider { public Image getImage(Object arg0) { return null; } public String getText(Object arg0) { return ((MyItem) arg0).getName(); } public void addListener(ILabelProviderListener arg0) { } public void dispose() { } public boolean isLabelProperty(Object arg0, String arg1) { return false; } public void removeListener(ILabelProviderListener arg0) { } } class ItemContentProvider implements IStructuredContentProvider { public Object[] getElements(Object arg0) { return ((ItemList) arg0).getFoods().toArray(); } public void dispose() { } public void inputChanged(Viewer arg0, Object arg1, Object arg2) { } }