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

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

Introduction

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

Prototype

public int indexOf(TreeColumn column) 

Source Link

Document

Searches the receiver's list starting at the first column (index 0) until a column is found that is equal to the argument, and returns the index of that column.

Usage

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

public static void main(String[] args) {
    Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setText("Snippet 202");
    shell.setLayout(new FillLayout());
    final Tree tree = new Tree(shell, SWT.VIRTUAL | SWT.BORDER);
    tree.addListener(SWT.SetData, event -> {
        TreeItem item = (TreeItem) event.item;
        TreeItem parentItem = item.getParentItem();
        String text = null;//from  w  ww .  j  av  a 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: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;//  w  ww .  j  av  a 2s . c  om
            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:TreeItemLines.java

public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setText("Multiple lines in a TreeItem");
    shell.setLayout(new FillLayout());
    final Tree tree = new Tree(shell, SWT.MULTI | SWT.FULL_SELECTION);
    tree.setHeaderVisible(true);//w ww . jav a  2  s. c om
    tree.setLinesVisible(true);
    int columnCount = 4;
    for (int i = 0; i < columnCount; i++) {
        TreeColumn column = new TreeColumn(tree, SWT.NONE);
        column.setText("Column " + i);
        column.setWidth(100);
    }
    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.
     */
    Listener paintListener = new Listener() {
        public void handleEvent(Event event) {
            switch (event.type) {
            case SWT.MeasureItem: {
                TreeItem item = (TreeItem) event.item;
                String text = getText(item, event.index);
                Point size = event.gc.textExtent(text);
                event.width = size.x;
                event.height = Math.max(event.height, size.y);
                break;
            }
            case SWT.PaintItem: {
                TreeItem item = (TreeItem) event.item;
                String text = getText(item, event.index);
                Point size = event.gc.textExtent(text);
                int offset2 = event.index == 0 ? Math.max(0, (event.height - size.y) / 2) : 0;
                event.gc.drawText(text, event.x, event.y + offset2, true);
                break;
            }
            case SWT.EraseItem: {
                event.detail &= ~SWT.FOREGROUND;
                break;
            }
            }
        }

        String getText(TreeItem item, int column) {
            String text = item.getText(column);
            if (column != 0) {
                TreeItem parent = item.getParentItem();
                int index = parent == null ? tree.indexOf(item) : parent.indexOf(item);
                if ((index + column) % 3 == 1) {
                    text += "\nnew line";
                }
                if ((index + column) % 3 == 2) {
                    text += "\nnew line\nnew line";
                }
            }
            return text;
        }
    };
    tree.addListener(SWT.MeasureItem, paintListener);
    tree.addListener(SWT.PaintItem, paintListener);
    tree.addListener(SWT.EraseItem, paintListener);

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

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

public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setText("Multiple lines in a TreeItem");
    shell.setLayout(new FillLayout());
    final Tree tree = new Tree(shell, SWT.MULTI | SWT.FULL_SELECTION);
    tree.setHeaderVisible(true);/* ww  w  . j a  v  a 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);
        column.setWidth(100);
    }
    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.
     */
    Listener paintListener = new Listener() {
        @Override
        public void handleEvent(Event event) {
            switch (event.type) {
            case SWT.MeasureItem: {
                TreeItem item = (TreeItem) event.item;
                String text = getText(item, event.index);
                Point size = event.gc.textExtent(text);
                event.width = size.x;
                event.height = Math.max(event.height, size.y);
                break;
            }
            case SWT.PaintItem: {
                TreeItem item = (TreeItem) event.item;
                String text = getText(item, event.index);
                Point size = event.gc.textExtent(text);
                int offset2 = event.index == 0 ? Math.max(0, (event.height - size.y) / 2) : 0;
                event.gc.drawText(text, event.x, event.y + offset2, true);
                break;
            }
            case SWT.EraseItem: {
                event.detail &= ~SWT.FOREGROUND;
                break;
            }
            }
        }

        String getText(TreeItem item, int column) {
            String text = item.getText(column);
            if (column != 0) {
                TreeItem parent = item.getParentItem();
                int index = parent == null ? tree.indexOf(item) : parent.indexOf(item);
                if ((index + column) % 3 == 1) {
                    text += "\nnew line";
                }
                if ((index + column) % 3 == 2) {
                    text += "\nnew line\nnew line";
                }
            }
            return text;
        }
    };
    tree.addListener(SWT.MeasureItem, paintListener);
    tree.addListener(SWT.PaintItem, paintListener);
    tree.addListener(SWT.EraseItem, paintListener);

    shell.setSize(600, 400);
    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);//  w w w.  j  a v  a2 s .  c  o m
    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 TreeItem PreviousItem(Tree tree, TreeItem item) {
    if (item == null)
        return null;
    TreeItem childItem = item;/*  www . j a  v a  2s  . c  o  m*/
    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  ava 2s .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  w w . j a va  2  s . 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();
                }
            }
        }
    }
}