Java tutorial
/* SWT/JFace in Action GUI Design with Eclipse 3.0 Matthew Scarpino, Stephen Holder, Stanford Ng, and Laurent Mihalkovic ISBN: 1932394273 Publisher: Manning */ import java.util.ArrayList; import java.util.List; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.Viewer; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Composite; public class Ch8TreeComposite extends Composite { public Ch8TreeComposite(Composite parent) { super(parent, SWT.NULL); populateControl(); } protected void populateControl() { FillLayout compositeLayout = new FillLayout(); setLayout(compositeLayout); int[] selectionStyle = { SWT.SINGLE, SWT.MULTI }; int[] checkStyle = { SWT.NONE, SWT.CHECK }; for (int selection = 0; selection < selectionStyle.length; selection++) { for (int check = 0; check < checkStyle.length; check++) { int style = selectionStyle[selection] | checkStyle[check]; createTreeViewer(style); } } } private void createTreeViewer(int style) { TreeViewer viewer = new TreeViewer(this, style); viewer.setContentProvider(new ITreeContentProvider() { public Object[] getChildren(Object parentElement) { return ((TreeNode) parentElement).getChildren().toArray(); } public Object getParent(Object element) { return ((TreeNode) element).getParent(); } public boolean hasChildren(Object element) { return ((TreeNode) element).getChildren().size() > 0; } public Object[] getElements(Object inputElement) { return ((TreeNode) inputElement).getChildren().toArray(); } public void dispose() { } public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { } }); viewer.setInput(getRootNode()); } private TreeNode getRootNode() { TreeNode root = new TreeNode("root"); root.addChild(new TreeNode("child 1").addChild(new TreeNode("subchild 1"))); root.addChild(new TreeNode("child 2") .addChild(new TreeNode("subchild 2").addChild(new TreeNode("grandchild 1")))); return root; } } class TreeNode { private String name; private List children = new ArrayList(); private TreeNode parent; public TreeNode(String n) { name = n; } protected Object getParent() { return parent; } public TreeNode addChild(TreeNode child) { children.add(child); child.parent = this; return this; } public List getChildren() { return children; } public String toString() { return name; } }