Skip to content

Tree Examples

Instances of this class provide a selectable user interface object that displays a hierarchy of items and issues notification when an item in the hierarchy is selected.

Snippet

Tree  Snippet

Example demonstrating TreeSnippet.

TreeSnippet.java
package dev.equo;

import dev.equo.swt.Config;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;

public class TreeSnippet {

public static void main (String [] args) {
    Config.forceEquo();
    Display display = new Display ();
    Shell shell = new Shell (display);
    shell.setText("TreeSnippet");
    shell.setLayout (new FillLayout ());
    final Tree tree = new Tree (shell, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL);
    for (int i=0; i<4; i++) {
        TreeItem item0 = new TreeItem (tree, 0);
        item0.setText ("Item " + i);
        for (int j=0; j<4; j++) {
            TreeItem item1 = new TreeItem (item0, 0);
            item1.setText ("SubItem " + i + " " + j);
            for (int k=0; k<4; k++) {
                TreeItem item2 = new TreeItem (item1, 0);
                item2.setText ("SubItem " + i + " " + j + " " + k);
            }
        }
    }
    tree.addListener (SWT.Selection, e -> {
        String string = "";
        for (TreeItem item : tree.getSelection ())
            string += item + " ";
        System.out.println ("Selection={" + string + "}");
    });
    tree.addListener (SWT.DefaultSelection, e -> {
        String string = "";
        for (TreeItem item : tree.getSelection ())
            string += item + " ";
        System.out.println ("DefaultSelection={" + string + "}");
    });
    tree.addListener (SWT.Expand, e -> System.out.println ("Expand={" + e.item + "}"));
    tree.addListener (SWT.Collapse, e -> System.out.println ("Collapse={" + e.item + "}"));
    tree.getItems () [0].setExpanded (true);
    shell.pack ();
    shell.setSize(250,  300);
    shell.open ();
    while (!shell.isDisposed ()) {
        if (!display.readAndDispatch ()) display.sleep ();
    }
    display.dispose ();
}
}

View on GitHub

With J Face Tree Viewer Example

Tree  With J Face Tree Viewer Example

Example demonstrating TreeWithJFaceTreeViewerExample.

TreeWithJFaceTreeViewerExample.java
package dev.equo;

import dev.equo.swt.Config;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.*;

import java.util.ArrayList;
import java.util.List;

public class TreeWithJFaceTreeViewerExample extends ApplicationWindow {

    public TreeWithJFaceTreeViewerExample() {
        super(null);
    }

    @Override
    protected Control createContents(Composite parent) {
        TreeViewer treeViewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
        treeViewer.setContentProvider(new ViewContentProvider());
        treeViewer.setLabelProvider(new ViewLabelProvider());
        treeViewer.setInput(createModel());

        treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
            public void selectionChanged(SelectionChangedEvent event) {
                IStructuredSelection selection = (IStructuredSelection) event.getSelection();
                Object selectedNode = selection.getFirstElement();

                if (selectedNode instanceof TreeNode) {
                    TreeNode node = (TreeNode) selectedNode;
                    if (!node.hasChildren()) { // It's a leaf
                        System.out.println("Leaf node clicked: " + node.getName());
                    }
                }
            }
        });

        return treeViewer.getControl();
    }

    private List<TreeNode> createModel() {
        List<TreeNode> roots = new ArrayList<>();

        // Three-level tree
        TreeNode root1 = new TreeNode("Root 1 (3 Levels)");
        TreeNode child1_1 = new TreeNode("Child 1.1");
        TreeNode leaf1_1_1 = new TreeNode("Leaf 1.1.1");
        TreeNode leaf1_1_2 = new TreeNode("Leaf 1.1.2");
        TreeNode leaf1_1_3 = new TreeNode("Leaf 1.1.3");
        TreeNode leaf1_1_4 = new TreeNode("Leaf 1.1.4");
        child1_1.addChild(leaf1_1_1);
        child1_1.addChild(leaf1_1_2);
        child1_1.addChild(leaf1_1_3);
        child1_1.addChild(leaf1_1_4);
        root1.addChild(child1_1);
        roots.add(root1);

        // Four-level tree
        TreeNode root2 = new TreeNode("Root 2 (4 Levels)");
        TreeNode child2_1 = new TreeNode("Child 2.1");
        TreeNode child2_1_1 = new TreeNode("Child 2.1.1");
        TreeNode leaf2_1_1_1 = new TreeNode("Leaf 2.1.1.1");
        child2_1_1.addChild(leaf2_1_1_1);
        child2_1.addChild(child2_1_1);
        root2.addChild(child2_1);
        roots.add(root2);

        // Another three-level tree for variety
        TreeNode root3 = new TreeNode("Root 3 (3 Levels)");
        TreeNode child3_1 = new TreeNode("Child 3.1");
        TreeNode leaf3_1_1 = new TreeNode("Leaf 3.1.1");
        child3_1.addChild(leaf3_1_1);
        root3.addChild(child3_1);
        roots.add(root3);


        return roots;
    }

    public static void main(String[] args) {
        Config.useEquo(Tree.class);
        Config.useEquo(TreeItem.class);
        Config.useEquo(TreeColumn.class);
        TreeWithJFaceTreeViewerExample window = new TreeWithJFaceTreeViewerExample();
        window.setBlockOnOpen(true);
        window.open();
        Display.getCurrent().dispose();
    }

    @Override
    protected void configureShell(Shell shell) {
        super.configureShell(shell);
        shell.setText("Tree with JFace TreeViewer Example");
        shell.setSize(400, 300);
    }
}

View on GitHub