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

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

Introduction

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

Prototype

public TreeItem getTopItem() 

Source Link

Document

Returns the item which is currently at the top of the receiver.

Usage

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

public static void main(String[] args) {
    final Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setText("Snippet 254");
    RowLayout layout = new RowLayout(SWT.VERTICAL);
    layout.fill = true;//from  w  ww  . j av a 2  s . c om
    layout.wrap = false;
    shell.setLayout(layout);
    final Tree tree = new Tree(shell, SWT.NONE);
    for (int i = 0; i < 32; i++) {
        TreeItem item0 = new TreeItem(tree, SWT.NONE);
        item0.setText("Item " + i + " is quite long");
        for (int j = 0; j < 3; j++) {
            TreeItem item1 = new TreeItem(item0, SWT.NONE);
            item1.setText("Item " + i + " " + j + " is quite long");
            for (int k = 0; k < 3; k++) {
                TreeItem item2 = new TreeItem(item1, SWT.NONE);
                item2.setText("Item " + i + " " + j + " " + k + " is quite long");
                for (int l = 0; l < 3; l++) {
                    TreeItem item3 = new TreeItem(item2, SWT.NONE);
                    item3.setText("Item " + i + " " + j + " " + k + " " + l + " is quite long");
                }
            }
        }
    }
    tree.setLayoutData(new RowData(200, 200));
    final Button button = new Button(shell, SWT.PUSH);
    button.setText("Visible Items []");
    button.addListener(SWT.Selection, e -> {
        int visibleCount = 0;
        Rectangle rect = tree.getClientArea();
        TreeItem item = tree.getTopItem();
        while (item != null) {
            visibleCount++;
            Rectangle itemRect = item.getBounds();
            if (itemRect.y + itemRect.height > rect.y + rect.height) {
                break;
            }
            item = nextItem(tree, item);
        }
        button.setText("Visible Items [" + visibleCount + "]");
    });
    shell.pack();
    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 . jav  a  2 s. com*/
    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();
}