Example usage for org.eclipse.swt.widgets Tree Tree

List of usage examples for org.eclipse.swt.widgets Tree Tree

Introduction

In this page you can find the example usage for org.eclipse.swt.widgets Tree Tree.

Prototype

public Tree(Composite parent, int style) 

Source Link

Document

Constructs a new instance of this class given its parent and a style value describing its behavior and appearance.

Usage

From source file:MenuFillDynamically.java

public static void main(String[] args) {
    final Display display = new Display();
    Shell shell = new Shell(display);
    final Tree tree = new Tree(shell, SWT.BORDER | SWT.MULTI);
    final Menu menu = new Menu(shell, SWT.POP_UP);
    tree.setMenu(menu);//from  w  w  w .  ja  v  a 2  s .c  o  m
    for (int i = 0; i < 12; i++) {
        TreeItem item = new TreeItem(tree, SWT.NONE);
        item.setText("Item " + i);
    }
    menu.addListener(SWT.Show, new Listener() {
        public void handleEvent(Event event) {
            MenuItem[] menuItems = menu.getItems();
            for (int i = 0; i < menuItems.length; i++) {
                menuItems[i].dispose();
            }
            TreeItem[] treeItems = tree.getSelection();
            for (int i = 0; i < treeItems.length; i++) {
                MenuItem menuItem = new MenuItem(menu, SWT.PUSH);
                menuItem.setText(treeItems[i].getText());
            }
        }
    });
    tree.setSize(200, 200);
    shell.setSize(300, 300);
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch())
            display.sleep();
    }
    display.dispose();
}

From source file:org.eclipse.swt.snippets.Snippet80.java

public static void main(String[] args) {
    final Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setText("Snippet 80");
    shell.setLayout(new FillLayout());
    final Tree tree = new Tree(shell, SWT.BORDER | SWT.MULTI);
    for (int i = 0; i < 2; i++) {
        TreeItem item = new TreeItem(tree, SWT.NONE);
        item.setText("item " + i);
        for (int j = 0; j < 2; j++) {
            TreeItem subItem = new TreeItem(item, SWT.NONE);
            subItem.setText("item " + j);
            for (int k = 0; k < 2; k++) {
                TreeItem subsubItem = new TreeItem(subItem, SWT.NONE);
                subsubItem.setText("item " + k);
            }/* w w w.  j ava 2  s  .c  om*/
        }
    }

    tree.addSelectionListener(widgetSelectedAdapter(e -> {
        TreeItem[] selection = tree.getSelection();
        TreeItem[] revisedSelection = new TreeItem[0];
        for (int i = 0; i < selection.length; i++) {
            String text = selection[i].getText();
            if (text.indexOf('1') > 0) {
                TreeItem[] newSelection = new TreeItem[revisedSelection.length + 1];
                System.arraycopy(revisedSelection, 0, newSelection, 0, revisedSelection.length);
                newSelection[revisedSelection.length] = selection[i];
                revisedSelection = newSelection;
            }
        }
        tree.setSelection(revisedSelection);
    }));

    shell.setSize(300, 300);
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch())
            display.sleep();
    }
    display.dispose();
}

From source file:org.eclipse.swt.snippets.Snippet292.java

public static void main(String[] args) {
    final Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setText("Snippet 292");
    final Group group = new Group(shell, SWT.NONE);
    group.setText("Group");
    group.setLayout(new GridLayout());
    final Tree tree = new Tree(group, SWT.BORDER);
    for (int i = 0; i < 5; i++) {
        TreeItem treeItem = new TreeItem(tree, SWT.NONE);
        treeItem.setText("TreeItem " + i);
        for (int j = 0; j < 3; j++) {
            TreeItem subItem = new TreeItem(treeItem, SWT.NONE);
            subItem.setText("SubItem " + i + "-" + j);
        }/*  w w w  . j a  v  a  2  s  .  c o m*/
        if (i % 3 == 0)
            treeItem.setExpanded(true);
    }
    new Button(group, SWT.PUSH).setText("Button");
    final Label label = new Label(shell, SWT.NONE);
    label.addListener(SWT.Dispose, e -> {
        Image image = label.getImage();
        if (image != null)
            image.dispose();
    });
    Button button = new Button(shell, SWT.PUSH);
    button.setText("Snapshot");
    button.addListener(SWT.Selection, e -> {
        Image image = label.getImage();
        if (image != null)
            image.dispose();
        image = new Image(display, group.getBounds());
        GC gc = new GC(image);
        boolean success = group.print(gc);
        gc.dispose();
        label.setImage(image);
        if (!success) {
            MessageBox messageBox = new MessageBox(shell, SWT.OK | SWT.PRIMARY_MODAL);
            messageBox.setMessage("Sorry, taking a snapshot is not supported on your platform");
            messageBox.open();
        }
    });
    GridLayout layout = new GridLayout(2, true);
    shell.setLayout(layout);
    group.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    label.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    button.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
    shell.pack();
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch())
            display.sleep();
    }
    display.dispose();
}

From source file:TreePopulateLazy.java

public static void main(String[] args) {
    Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setLayout(new FillLayout());
    final Tree tree = new Tree(shell, SWT.VIRTUAL | SWT.BORDER);
    tree.addListener(SWT.SetData, new Listener() {
        public void handleEvent(Event event) {
            TreeItem item = (TreeItem) event.item;
            TreeItem parentItem = item.getParentItem();
            String text = null;/*from   w  w w  .  j ava  2 s. c  o m*/
            if (parentItem == null) {
                text = "node " + tree.indexOf(item);
            } else {
                text = parentItem.getText() + " - " + parentItem.indexOf(item);
            }
            item.setText(text);
            item.setItemCount(10);
        }
    });
    tree.setItemCount(20);
    shell.setSize(400, 300);
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch())
            display.sleep();
    }
    display.dispose();
}

From source file:org.eclipse.swt.snippets.Snippet287.java

public static void main(String[] args) {
    final String SEARCH_STRING = "4b";

    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setText("Snippet 287");
    shell.setBounds(10, 10, 300, 300);//w w w .  j  av  a  2  s. c o m
    shell.setLayout(new GridLayout());

    /* create the Tree */
    tree = new Tree(shell, SWT.FULL_SELECTION);
    tree.setLinesVisible(true);
    tree.setLayoutData(new GridData(GridData.FILL_BOTH));
    for (int i = 0; i < 3; i++) {
        new TreeColumn(tree, SWT.NONE).setWidth(90);
    }
    int index = 0;
    for (int i = 0; i < 3; i++) {
        TreeItem item = createItem(null, index++);
        for (int j = 0; j < i; j++) {
            item = createItem(item, index++);
        }
    }

    Button button = new Button(shell, SWT.PUSH);
    button.setText("Find '" + SEARCH_STRING + "'");
    button.addListener(SWT.Selection, event -> {
        int itemCount = tree.getItemCount();
        for (int i = 0; i < itemCount; i++) {
            TreeItem item = tree.getItem(i);
            boolean success = find(item, SEARCH_STRING);
            if (success) {
                System.out.println("Found it");
                return;
            }
        }
        System.out.println("Did not find it");
    });
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch())
            display.sleep();
    }
    display.dispose();
}

From source file:org.eclipse.swt.snippets.Snippet221.java

public static void main(String[] args) {
    final Display display = new Display();
    Shell shell = new Shell(display);
    shell.setText("Snippet 221");
    shell.setLayout(new FillLayout());
    final Tree tree = new Tree(shell, SWT.FULL_SELECTION | SWT.BORDER);
    tree.setHeaderVisible(true);//w ww  .  j  a  v  a 2s .c  o m
    TreeColumn column0 = new TreeColumn(tree, SWT.LEFT);
    column0.setText("Column 0");
    TreeColumn column1 = new TreeColumn(tree, SWT.LEFT);
    column1.setText("Column 1");
    TreeColumn column2 = new TreeColumn(tree, SWT.LEFT);
    column2.setText("Column 2");
    for (int i = 0; i < 9; i++) {
        TreeItem item = new TreeItem(tree, SWT.NONE);
        item.setText("item " + i);
        item.setText(1, "column 1 - " + i);
        item.setText(2, "column 2 - " + i);
        for (int j = 0; j < 9; j++) {
            TreeItem subItem = new TreeItem(item, SWT.NONE);
            subItem.setText("item " + i + " " + j);
            subItem.setText(1, "column 1 - " + i + " " + j);
            subItem.setText(2, "column 2 - " + i + " " + j);
            for (int k = 0; k < 9; k++) {
                TreeItem subsubItem = new TreeItem(subItem, SWT.NONE);
                subsubItem.setText("item " + i + " " + j + " " + k);
                subsubItem.setText(1, "column 1 - " + i + " " + j + " " + k);
                subsubItem.setText(2, "column 2 - " + i + " " + j + " " + k);
            }
        }
    }
    column0.pack();
    column1.pack();
    column2.pack();

    Heartbeat = () -> {
        if (!Tracking || tree.isDisposed())
            return;
        Point cursor = display.getCursorLocation();
        cursor = display.map(null, tree, cursor);
        Scroll(tree, cursor.x, cursor.y);
        display.timerExec(ScrollSpeed, Heartbeat);
    };
    Listener listener = event -> {
        switch (event.type) {
        case SWT.MouseEnter:
            Tracking = true;
            display.timerExec(0, Heartbeat);
            break;
        case SWT.MouseExit:
            Tracking = false;
            break;
        }
    };
    tree.addListener(SWT.MouseEnter, listener);
    tree.addListener(SWT.MouseExit, listener);
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch())
            display.sleep();
    }
    display.dispose();
}

From source file:org.eclipse.swt.snippets.Snippet111.java

public static void main(String[] args) {
    final Display display = new Display();
    final Color black = display.getSystemColor(SWT.COLOR_BLACK);
    Shell shell = new Shell(display);
    shell.setText("Snippet 111");
    shell.setLayout(new FillLayout());
    final Tree tree = new Tree(shell, SWT.BORDER);
    for (int i = 0; i < 16; i++) {
        TreeItem itemI = new TreeItem(tree, SWT.NONE);
        itemI.setText("Item " + i);
        for (int j = 0; j < 16; j++) {
            TreeItem itemJ = new TreeItem(itemI, SWT.NONE);
            itemJ.setText("Item " + j);
        }/*from  w w w . j  a  va  2s  . c  om*/
    }
    final TreeItem[] lastItem = new TreeItem[1];
    final TreeEditor editor = new TreeEditor(tree);
    tree.addListener(SWT.Selection, event -> {
        final TreeItem item = (TreeItem) event.item;
        if (item != null && item == lastItem[0]) {
            boolean showBorder = true;
            final Composite composite = new Composite(tree, SWT.NONE);
            if (showBorder)
                composite.setBackground(black);
            final Text text = new Text(composite, SWT.NONE);
            final int inset = showBorder ? 1 : 0;
            composite.addListener(SWT.Resize, e1 -> {
                Rectangle rect1 = composite.getClientArea();
                text.setBounds(rect1.x + inset, rect1.y + inset, rect1.width - inset * 2,
                        rect1.height - inset * 2);
            });
            Listener textListener = e2 -> {
                switch (e2.type) {
                case SWT.FocusOut:
                    item.setText(text.getText());
                    composite.dispose();
                    break;
                case SWT.Verify:
                    String newText = text.getText();
                    String leftText = newText.substring(0, e2.start);
                    String rightText = newText.substring(e2.end, newText.length());
                    GC gc = new GC(text);
                    Point size = gc.textExtent(leftText + e2.text + rightText);
                    gc.dispose();
                    size = text.computeSize(size.x, SWT.DEFAULT);
                    editor.horizontalAlignment = SWT.LEFT;
                    Rectangle itemRect = item.getBounds(), rect2 = tree.getClientArea();
                    editor.minimumWidth = Math.max(size.x, itemRect.width) + inset * 2;
                    int left = itemRect.x, right = rect2.x + rect2.width;
                    editor.minimumWidth = Math.min(editor.minimumWidth, right - left);
                    editor.minimumHeight = size.y + inset * 2;
                    editor.layout();
                    break;
                case SWT.Traverse:
                    switch (e2.detail) {
                    case SWT.TRAVERSE_RETURN:
                        item.setText(text.getText());
                        //FALL THROUGH
                    case SWT.TRAVERSE_ESCAPE:
                        composite.dispose();
                        e2.doit = false;
                    }
                    break;
                }
            };
            text.addListener(SWT.FocusOut, textListener);
            text.addListener(SWT.Traverse, textListener);
            text.addListener(SWT.Verify, textListener);
            editor.setEditor(composite, item);
            text.setText(item.getText());
            text.selectAll();
            text.setFocus();
        }
        lastItem[0] = item;
    });
    shell.pack();
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch())
            display.sleep();
    }
    display.dispose();
}

From source file:org.eclipse.swt.snippets.Snippet91.java

public static void main(String[] args) {

    final Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setText("Snippet 91");
    shell.setLayout(new FillLayout());
    final Tree tree = new Tree(shell, SWT.BORDER);
    for (int i = 0; i < 3; i++) {
        TreeItem item = new TreeItem(tree, SWT.NONE);
        item.setText("item " + i);
        for (int j = 0; j < 3; j++) {
            TreeItem subItem = new TreeItem(item, SWT.NONE);
            subItem.setText("item " + i + " " + j);
            for (int k = 0; k < 3; k++) {
                TreeItem subsubItem = new TreeItem(subItem, SWT.NONE);
                subsubItem.setText("item " + i + " " + j + " " + k);
            }//  w  w  w.j  av  a  2  s  .c  om
        }
    }

    Transfer[] types = new Transfer[] { TextTransfer.getInstance() };
    int operations = DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_LINK;

    final DragSource source = new DragSource(tree, operations);
    source.setTransfer(types);
    final TreeItem[] dragSourceItem = new TreeItem[1];
    source.addDragListener(new DragSourceListener() {
        @Override
        public void dragStart(DragSourceEvent event) {
            TreeItem[] selection = tree.getSelection();
            if (selection.length > 0 && selection[0].getItemCount() == 0) {
                event.doit = true;
                dragSourceItem[0] = selection[0];
            } else {
                event.doit = false;
            }
        }

        @Override
        public void dragSetData(DragSourceEvent event) {
            event.data = dragSourceItem[0].getText();
        }

        @Override
        public void dragFinished(DragSourceEvent event) {
            if (event.detail == DND.DROP_MOVE)
                dragSourceItem[0].dispose();
            dragSourceItem[0] = null;
        }
    });

    DropTarget target = new DropTarget(tree, operations);
    target.setTransfer(types);
    target.addDropListener(new DropTargetAdapter() {
        @Override
        public void dragOver(DropTargetEvent event) {
            event.feedback = DND.FEEDBACK_EXPAND | DND.FEEDBACK_SCROLL;
            if (event.item != null) {
                TreeItem item = (TreeItem) event.item;
                Point pt = display.map(null, tree, event.x, event.y);
                Rectangle bounds = item.getBounds();
                if (pt.y < bounds.y + bounds.height / 3) {
                    event.feedback |= DND.FEEDBACK_INSERT_BEFORE;
                } else if (pt.y > bounds.y + 2 * bounds.height / 3) {
                    event.feedback |= DND.FEEDBACK_INSERT_AFTER;
                } else {
                    event.feedback |= DND.FEEDBACK_SELECT;
                }
            }
        }

        @Override
        public void drop(DropTargetEvent event) {
            if (event.data == null) {
                event.detail = DND.DROP_NONE;
                return;
            }
            String text = (String) event.data;
            if (event.item == null) {
                TreeItem item = new TreeItem(tree, SWT.NONE);
                item.setText(text);
            } else {
                TreeItem item = (TreeItem) event.item;
                Point pt = display.map(null, tree, event.x, event.y);
                Rectangle bounds = item.getBounds();
                TreeItem parent = item.getParentItem();
                if (parent != null) {
                    TreeItem[] items = parent.getItems();
                    int index = 0;
                    for (int i = 0; i < items.length; i++) {
                        if (items[i] == item) {
                            index = i;
                            break;
                        }
                    }
                    if (pt.y < bounds.y + bounds.height / 3) {
                        TreeItem newItem = new TreeItem(parent, SWT.NONE, index);
                        newItem.setText(text);
                    } else if (pt.y > bounds.y + 2 * bounds.height / 3) {
                        TreeItem newItem = new TreeItem(parent, SWT.NONE, index + 1);
                        newItem.setText(text);
                    } else {
                        TreeItem newItem = new TreeItem(item, SWT.NONE);
                        newItem.setText(text);
                    }

                } else {
                    TreeItem[] items = tree.getItems();
                    int index = 0;
                    for (int i = 0; i < items.length; i++) {
                        if (items[i] == item) {
                            index = i;
                            break;
                        }
                    }
                    if (pt.y < bounds.y + bounds.height / 3) {
                        TreeItem newItem = new TreeItem(tree, SWT.NONE, index);
                        newItem.setText(text);
                    } else if (pt.y > bounds.y + 2 * bounds.height / 3) {
                        TreeItem newItem = new TreeItem(tree, SWT.NONE, index + 1);
                        newItem.setText(text);
                    } else {
                        TreeItem newItem = new TreeItem(item, SWT.NONE);
                        newItem.setText(text);
                    }
                }

            }
        }
    });

    shell.setSize(400, 400);
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch())
            display.sleep();
    }
    display.dispose();
}

From source file:org.eclipse.swt.snippets.Snippet240.java

public static void main(String[] args) {
    final Display display = new Display();
    Shell shell = new Shell(display);
    shell.setText("Text spans two columns in a TreeItem");
    shell.setLayout(new FillLayout());
    final Tree tree = new Tree(shell, SWT.MULTI | SWT.FULL_SELECTION);
    tree.setHeaderVisible(true);//from   ww w . j av a  2 s  . c om
    int columnCount = 4;
    for (int i = 0; i < columnCount; i++) {
        TreeColumn column = new TreeColumn(tree, SWT.NONE);
        column.setText("Column " + i);
    }
    int itemCount = 8;
    for (int i = 0; i < itemCount; i++) {
        TreeItem item = new TreeItem(tree, SWT.NONE);
        item.setText(0, "item " + i + " a");
        item.setText(3, "item " + i + " d");
        for (int j = 0; j < 3; j++) {
            TreeItem subItem = new TreeItem(item, SWT.NONE);
            subItem.setText(0, "subItem " + i + "-" + j + " a");
            subItem.setText(3, "subItem " + i + "-" + j + " d");
        }
    }
    /*
     * NOTE: MeasureItem, PaintItem and EraseItem are called repeatedly.
     * Therefore, it is critical for performance that these methods be
     * as efficient as possible.
     */
    final String string = "text that spans two columns";
    GC gc = new GC(tree);
    final Point extent = gc.stringExtent(string);
    gc.dispose();
    final Color red = display.getSystemColor(SWT.COLOR_RED);
    Listener paintListener = event -> {
        switch (event.type) {
        case SWT.MeasureItem: {
            if (event.index == 1 || event.index == 2) {
                event.width = extent.x / 2;
                event.height = Math.max(event.height, extent.y + 2);
            }
            break;
        }
        case SWT.PaintItem: {
            if (event.index == 1 || event.index == 2) {
                int offset = 0;
                if (event.index == 2) {
                    TreeColumn column1 = tree.getColumn(1);
                    offset = column1.getWidth();
                }
                event.gc.setForeground(red);
                int y = event.y + (event.height - extent.y) / 2;
                event.gc.drawString(string, event.x - offset, y, true);
            }
            break;
        }
        }
    };
    tree.addListener(SWT.MeasureItem, paintListener);
    tree.addListener(SWT.PaintItem, paintListener);
    for (int i = 0; i < columnCount; i++) {
        tree.getColumn(i).pack();
    }
    shell.pack();
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch())
            display.sleep();
    }
    display.dispose();
}

From source file:org.eclipse.swt.snippets.Snippet232.java

public static void main(String[] args) {
    final Display display = new Display();
    Shell shell = new Shell(display);
    shell.setLayout(new FillLayout());
    shell.setText("Show results as a bar chart in Tree");
    final Tree tree = new Tree(shell, SWT.BORDER);
    tree.setHeaderVisible(true);//  w w  w  .ja va2  s . c o m
    tree.setLinesVisible(true);
    TreeColumn column1 = new TreeColumn(tree, SWT.NONE);
    column1.setText("Bug Status");
    column1.setWidth(100);
    final TreeColumn column2 = new TreeColumn(tree, SWT.NONE);
    column2.setText("Percent");
    column2.setWidth(200);
    String[] states = new String[] { "Resolved", "New", "Won't Fix", "Invalid" };
    String[] teams = new String[] { "UI", "SWT", "OSGI" };
    for (int i = 0; i < teams.length; i++) {
        TreeItem item = new TreeItem(tree, SWT.NONE);
        item.setText(teams[i]);
        for (int j = 0; j < states.length; j++) {
            TreeItem subItem = new TreeItem(item, SWT.NONE);
            subItem.setText(states[j]);
        }
    }

    /*
     * NOTE: MeasureItem, PaintItem and EraseItem are called repeatedly.
     * Therefore, it is critical for performance that these methods be
     * as efficient as possible.
     */
    tree.addListener(SWT.PaintItem, new Listener() {
        int[] percents = new int[] { 50, 30, 5, 15 };

        @Override
        public void handleEvent(Event event) {
            if (event.index == 1) {
                TreeItem item = (TreeItem) event.item;
                TreeItem parent = item.getParentItem();
                if (parent != null) {
                    GC gc = event.gc;
                    int index = parent.indexOf(item);
                    int percent = percents[index];
                    Color foreground = gc.getForeground();
                    Color background = gc.getBackground();
                    gc.setForeground(display.getSystemColor(SWT.COLOR_RED));
                    gc.setBackground(display.getSystemColor(SWT.COLOR_YELLOW));
                    int width = (column2.getWidth() - 1) * percent / 100;
                    gc.fillGradientRectangle(event.x, event.y, width, event.height, true);
                    Rectangle rect2 = new Rectangle(event.x, event.y, width - 1, event.height - 1);
                    gc.drawRectangle(rect2);
                    gc.setForeground(display.getSystemColor(SWT.COLOR_LIST_FOREGROUND));
                    String text = percent + "%";
                    Point size = event.gc.textExtent(text);
                    int offset = Math.max(0, (event.height - size.y) / 2);
                    gc.drawText(text, event.x + 2, event.y + offset, true);
                    gc.setForeground(background);
                    gc.setBackground(foreground);
                }
            }
        }
    });

    shell.pack();
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch())
            display.sleep();
    }
    display.dispose();
}