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

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

Introduction

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

Prototype

public TreeItem getItem(Point point) 

Source Link

Document

Returns the item at the given point in the receiver or null if no such item exists.

Usage

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

public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setText("Snippet 90");
    final Tree tree = new Tree(shell, SWT.BORDER | SWT.MULTI);
    for (int i = 0; i < 12; i++) {
        TreeItem treeItem = new TreeItem(tree, SWT.NONE);
        treeItem.setText("Item " + i);
    }//from  w  w w  .java2s  .c  o m
    tree.addListener(SWT.MouseDown, event -> {
        Point point = new Point(event.x, event.y);
        TreeItem item = tree.getItem(point);
        if (item != null) {
            System.out.println("Mouse down: " + item);
        }
    });
    Rectangle clientArea = shell.getClientArea();
    tree.setBounds(clientArea.x, clientArea.y, 200, 200);
    shell.setSize(300, 300);
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch())
            display.sleep();
    }
    display.dispose();
}

From source file:TreeItemMousePostion.java

public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    final Tree tree = new Tree(shell, SWT.BORDER | SWT.MULTI);
    for (int i = 0; i < 12; i++) {
        TreeItem treeItem = new TreeItem(tree, SWT.NONE);
        treeItem.setText("Item " + i);
    }//from  w w w.j  a v  a2s.  c o m
    tree.addListener(SWT.MouseDown, new Listener() {
        public void handleEvent(Event event) {
            Point point = new Point(event.x, event.y);
            TreeItem item = tree.getItem(point);
            if (item != null) {
                System.out.println("Mouse down: " + item);
            }
        }
    });
    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.Snippet226.java

public static void main(String[] args) {
    final Display display = new Display();
    Shell shell = new Shell(display);
    shell.setText("Custom gradient selection for Tree");
    shell.setLayout(new FillLayout());
    final Tree tree = new Tree(shell, SWT.MULTI | SWT.FULL_SELECTION);
    tree.setHeaderVisible(true);//from w w  w . ja va2s .c  o  m
    tree.setLinesVisible(true);
    int columnCount = 4;
    for (int i = 0; i < columnCount; i++) {
        TreeColumn column = new TreeColumn(tree, SWT.NONE);
        column.setText("Column " + i);
    }
    int itemCount = 3;
    for (int i = 0; i < itemCount; i++) {
        TreeItem item1 = new TreeItem(tree, SWT.NONE);
        item1.setText("item " + i);
        for (int c = 1; c < columnCount; c++) {
            item1.setText(c, "item [" + i + "-" + c + "]");
        }
        for (int j = 0; j < itemCount; j++) {
            TreeItem item2 = new TreeItem(item1, SWT.NONE);
            item2.setText("item [" + i + " " + j + "]");
            for (int c = 1; c < columnCount; c++) {
                item2.setText(c, "item [" + i + " " + j + "-" + c + "]");
            }
            for (int k = 0; k < itemCount; k++) {
                TreeItem item3 = new TreeItem(item2, SWT.NONE);
                item3.setText("item [" + i + " " + j + " " + k + "]");
                for (int c = 1; c < columnCount; c++) {
                    item3.setText(c, "item [" + i + " " + j + " " + k + "-" + c + "]");
                }
            }
        }
    }

    /*
     * 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.EraseItem, event -> {
        event.detail &= ~SWT.HOT;
        if ((event.detail & SWT.SELECTED) != 0) {
            GC gc = event.gc;
            Rectangle area = tree.getClientArea();
            /*
             * If you wish to paint the selection beyond the end of
             * last column, you must change the clipping region.
             */
            int columnCount1 = tree.getColumnCount();
            if (event.index == columnCount1 - 1 || columnCount1 == 0) {
                int width = area.x + area.width - event.x;
                if (width > 0) {
                    Region region = new Region();
                    gc.getClipping(region);
                    region.add(event.x, event.y, width, event.height);
                    gc.setClipping(region);
                    region.dispose();
                }
            }
            gc.setAdvanced(true);
            if (gc.getAdvanced())
                gc.setAlpha(127);
            Rectangle rect = event.getBounds();
            Color foreground = gc.getForeground();
            Color background = gc.getBackground();
            gc.setForeground(display.getSystemColor(SWT.COLOR_RED));
            gc.setBackground(display.getSystemColor(SWT.COLOR_LIST_BACKGROUND));
            gc.fillGradientRectangle(0, rect.y, 500, rect.height, false);
            // restore colors for subsequent drawing
            gc.setForeground(foreground);
            gc.setBackground(background);
            event.detail &= ~SWT.SELECTED;
        }
    });
    for (int i = 0; i < columnCount; i++) {
        tree.getColumn(i).pack();
    }
    tree.setSelection(tree.getItem(0));
    shell.setSize(500, 200);
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch())
            display.sleep();
    }
    display.dispose();
}

From source file:TreeTableGradient.java

public static void main(String[] args) {
    final Display display = new Display();
    Shell shell = new Shell(display);
    shell.setText("Custom gradient selection for Tree");
    shell.setLayout(new FillLayout());
    final Tree tree = new Tree(shell, SWT.MULTI | SWT.FULL_SELECTION);
    tree.setHeaderVisible(true);//  w w w .  j  a va 2 s.c  o  m
    tree.setLinesVisible(true);
    int columnCount = 4;
    for (int i = 0; i < columnCount; i++) {
        TreeColumn column = new TreeColumn(tree, SWT.NONE);
        column.setText("Column " + i);
    }
    int itemCount = 3;
    for (int i = 0; i < itemCount; i++) {
        TreeItem item1 = new TreeItem(tree, SWT.NONE);
        item1.setText("item " + i);
        for (int c = 1; c < columnCount; c++) {
            item1.setText(c, "item [" + i + "-" + c + "]");
        }
        for (int j = 0; j < itemCount; j++) {
            TreeItem item2 = new TreeItem(item1, SWT.NONE);
            item2.setText("item [" + i + " " + j + "]");
            for (int c = 1; c < columnCount; c++) {
                item2.setText(c, "item [" + i + " " + j + "-" + c + "]");
            }
            for (int k = 0; k < itemCount; k++) {
                TreeItem item3 = new TreeItem(item2, SWT.NONE);
                item3.setText("item [" + i + " " + j + " " + k + "]");
                for (int c = 1; c < columnCount; c++) {
                    item3.setText(c, "item [" + i + " " + j + " " + k + "-" + c + "]");
                }
            }
        }
    }

    /*
     * 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.EraseItem, new Listener() {
        public void handleEvent(Event event) {
            if ((event.detail & SWT.SELECTED) != 0) {
                GC gc = event.gc;
                Rectangle area = tree.getClientArea();
                /*
                 * If you wish to paint the selection beyond the end of last column,
                 * you must change the clipping region.
                 */
                int columnCount = tree.getColumnCount();
                if (event.index == columnCount - 1 || columnCount == 0) {
                    int width = area.x + area.width - event.x;
                    if (width > 0) {
                        Region region = new Region();
                        gc.getClipping(region);
                        region.add(event.x, event.y, width, event.height);
                        gc.setClipping(region);
                        region.dispose();
                    }
                }
                gc.setAdvanced(true);
                if (gc.getAdvanced())
                    gc.setAlpha(127);
                Rectangle rect = event.getBounds();
                Color foreground = gc.getForeground();
                Color background = gc.getBackground();
                gc.setForeground(display.getSystemColor(SWT.COLOR_RED));
                gc.setBackground(display.getSystemColor(SWT.COLOR_LIST_BACKGROUND));
                gc.fillGradientRectangle(0, rect.y, 500, rect.height, false);
                // restore colors for subsequent drawing
                gc.setForeground(foreground);
                gc.setBackground(background);
                event.detail &= ~SWT.SELECTED;
            }
        }
    });
    for (int i = 0; i < columnCount; i++) {
        tree.getColumn(i).pack();
    }
    tree.setSelection(tree.getItem(0));
    shell.setSize(500, 200);
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch())
            display.sleep();
    }
    display.dispose();
}

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

public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setText("Snippet 360");
    shell.setLayout(new GridLayout());

    // create a a tree with 3 columns and fill with data
    final Tree tree = new Tree(shell, SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION);
    tree.setLayoutData(new GridData(GridData.FILL_BOTH));
    tree.setHeaderVisible(true);/*from  w  w w .j a v  a  2s . c  om*/
    TreeColumn column1 = new TreeColumn(tree, SWT.NONE);
    TreeColumn column2 = new TreeColumn(tree, SWT.NONE);
    TreeColumn column3 = new TreeColumn(tree, SWT.NONE);
    for (int i = 0; i < 9; i++) {
        TreeItem item = new TreeItem(tree, SWT.NONE);
        item.setText(new String[] { "root " + i + " 0", "root " + i + " 1", "root " + i + " 2" });
        for (int j = 0; j < 9; j++) {
            TreeItem item2 = new TreeItem(item, SWT.NONE);
            item2.setText(new String[] { "child " + j + " 0", "child " + j + " 1", "child " + j + " 2" });
            TreeItem current = item2;
            for (int k = 0; k < 5; k++) {
                TreeItem item3 = new TreeItem(current, SWT.NONE);
                item3.setText(new String[] { "descendent " + k + " 0", "descendent " + k + " 1",
                        "descendent " + k + " 2" });
                current = item3;
            }
        }
    }
    column1.setWidth(200);
    column2.setWidth(100);
    column3.setWidth(100);

    // create a TreeCursor to navigate around the tree
    final TreeCursor cursor = new TreeCursor(tree, SWT.NONE);
    // create an editor to edit the cell when the user hits "ENTER"
    // while over a cell in the tree
    final ControlEditor editor = new ControlEditor(cursor);
    editor.grabHorizontal = true;
    editor.grabVertical = true;

    cursor.addSelectionListener(new SelectionAdapter() {
        // when the TreeEditor is over a cell, select the corresponding row
        // in the tree
        @Override
        public void widgetSelected(SelectionEvent e) {
            tree.setSelection(new TreeItem[] { cursor.getRow() });
        }

        // when the user hits "ENTER" in the TreeCursor, pop up a text
        // editor so that they can change the text of the cell
        @Override
        public void widgetDefaultSelected(SelectionEvent e) {
            final Text text = new Text(cursor, SWT.NONE);
            TreeItem row = cursor.getRow();
            int column = cursor.getColumn();
            text.setText(row.getText(column));
            text.addKeyListener(keyPressedAdapter(event -> {
                // close the text editor and copy the data over
                // when the user hits "ENTER"
                if (event.character == SWT.CR) {
                    TreeItem localRow = cursor.getRow();
                    int localColumn = cursor.getColumn();
                    localRow.setText(localColumn, text.getText());
                    text.dispose();
                }
                // close the text editor when the user hits "ESC"
                if (event.character == SWT.ESC) {
                    text.dispose();
                }
            }));
            editor.setEditor(text);
            text.setFocus();
        }
    });
    // Hide the TreeCursor when the user hits the "MOD1" or "MOD2" key.
    // This allows the user to select multiple items in the tree.
    cursor.addKeyListener(keyPressedAdapter(e -> {
        if (e.keyCode == SWT.MOD1 || e.keyCode == SWT.MOD2 || (e.stateMask & SWT.MOD1) != 0
                || (e.stateMask & SWT.MOD2) != 0) {
            cursor.setVisible(false);
        }
    }));
    // Show the TreeCursor when the user releases the "MOD2" or "MOD1" key.
    // This signals the end of the multiple selection task.
    tree.addKeyListener(new KeyListener() {
        @Override
        public void keyReleased(KeyEvent e) {
            if (e.keyCode == SWT.MOD1 && (e.stateMask & SWT.MOD2) != 0)
                return;
            if (e.keyCode == SWT.MOD2 && (e.stateMask & SWT.MOD1) != 0)
                return;
            if (e.keyCode != SWT.MOD1 && (e.stateMask & SWT.MOD1) != 0)
                return;
            if (e.keyCode != SWT.MOD2 && (e.stateMask & SWT.MOD2) != 0)
                return;

            TreeItem[] selection = tree.getSelection();
            TreeItem row = (selection.length == 0) ? tree.getItem(tree.indexOf(tree.getTopItem()))
                    : selection[0];
            tree.showItem(row);
            cursor.setSelection(row, cursor.getColumn());
            cursor.setVisible(true);
            cursor.setFocus();
        }

        @Override
        public void keyPressed(KeyEvent e) {
            switch (e.keyCode) {
            case SWT.ARROW_LEFT:
            case SWT.ARROW_RIGHT: {
                if ((e.stateMask & SWT.MOD1) != 0) {
                    TreeItem[] selection = tree.getSelection();
                    if (selection.length > 0) {
                        selection[0].setExpanded(e.keyCode == SWT.ARROW_RIGHT);
                    }
                    break;
                }
            }
            }
        }
    });

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

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

static void Scroll(Tree tree, int x, int y) {
    TreeItem item = tree.getItem(new Point(x, y));
    if (item == null)
        return;/*from ww  w.  jav  a 2 s.  c o  m*/
    Rectangle area = tree.getClientArea();
    int headerHeight = tree.getHeaderHeight();
    int itemHeight = tree.getItemHeight();
    TreeItem nextItem = null;
    if (y < area.y + headerHeight + 2 * itemHeight) {
        nextItem = PreviousItem(tree, item);
    }
    if (y > area.y + area.height - 2 * itemHeight) {
        nextItem = NextItem(tree, item);
    }
    if (nextItem != null)
        tree.showItem(nextItem);
}

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

static TreeItem PreviousItem(Tree tree, TreeItem item) {
    if (item == null)
        return null;
    TreeItem childItem = item;//w  w w .ja  va  2 s . c  om
    TreeItem parentItem = childItem.getParentItem();
    int index = parentItem == null ? tree.indexOf(childItem) : parentItem.indexOf(childItem);
    if (index == 0) {
        return parentItem;
    } else {
        TreeItem nextItem = parentItem == null ? tree.getItem(index - 1) : parentItem.getItem(index - 1);
        int count = nextItem.getItemCount();
        while (count > 0 && nextItem.getExpanded()) {
            nextItem = nextItem.getItem(count - 1);
            count = nextItem.getItemCount();
        }
        return nextItem;
    }
}

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

static TreeItem nextItem(Tree tree, TreeItem item) {
    if (item == null)
        return null;
    if (item.getExpanded() && item.getItemCount() > 0)
        return item.getItem(0);
    TreeItem childItem = item;//from w w  w .  j a va 2 s . c o m
    TreeItem parentItem = childItem.getParentItem();
    int index = parentItem == null ? tree.indexOf(childItem) : parentItem.indexOf(childItem);
    int count = parentItem == null ? tree.getItemCount() : parentItem.getItemCount();
    while (true) {
        if (index + 1 < count)
            return parentItem == null ? tree.getItem(index + 1) : parentItem.getItem(index + 1);
        if (parentItem == null)
            return null;
        childItem = parentItem;
        parentItem = childItem.getParentItem();
        index = parentItem == null ? tree.indexOf(childItem) : parentItem.indexOf(childItem);
        count = parentItem == null ? tree.getItemCount() : parentItem.getItemCount();
    }
}

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

static TreeItem NextItem(Tree tree, TreeItem item) {
    if (item == null)
        return null;
    if (item.getExpanded()) {
        return item.getItem(0);
    } else {//w ww .ja v a 2s.  c  o m
        TreeItem childItem = item;
        TreeItem parentItem = childItem.getParentItem();
        int index = parentItem == null ? tree.indexOf(childItem) : parentItem.indexOf(childItem);
        int count = parentItem == null ? tree.getItemCount() : parentItem.getItemCount();
        while (true) {
            if (index + 1 < count) {
                return parentItem == null ? tree.getItem(index + 1) : parentItem.getItem(index + 1);
            } else {
                if (parentItem == null) {
                    return null;
                } else {
                    childItem = parentItem;
                    parentItem = childItem.getParentItem();
                    index = parentItem == null ? tree.indexOf(childItem) : parentItem.indexOf(childItem);
                    count = parentItem == null ? tree.getItemCount() : parentItem.getItemCount();
                }
            }
        }
    }
}

From source file:org.eclipse.swt.examples.controlexample.TreeTab.java

@Override
protected void specialPopupMenuItems(Menu menu, Event event) {
    MenuItem item = new MenuItem(menu, SWT.PUSH);
    item.setText("getItem(Point) on mouse coordinates");
    final Tree t = (Tree) event.widget;
    menuMouseCoords = t.toControl(new Point(event.x, event.y));
    item.addSelectionListener(widgetSelectedAdapter(e -> {
        eventConsole.append("getItem(Point(" + menuMouseCoords + ")) returned: " + t.getItem(menuMouseCoords));
        eventConsole.append("\n");
    }));/*www  .  j a  va  2  s .com*/
}