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

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

Introduction

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

Prototype

public int getItemHeight() 

Source Link

Document

Returns the height of the area which would be used to display one of the items in the tree.

Usage

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

public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setText("Snippet 220");
    shell.setBounds(10, 10, 350, 200);/*  w  w w .  j av  a 2 s .c o m*/
    Image xImage = new Image(display, 16, 16);
    GC gc = new GC(xImage);
    gc.setForeground(display.getSystemColor(SWT.COLOR_RED));
    gc.drawLine(1, 1, 14, 14);
    gc.drawLine(1, 14, 14, 1);
    gc.drawOval(2, 2, 11, 11);
    gc.dispose();
    final int IMAGE_MARGIN = 2;
    final Tree tree = new Tree(shell, SWT.CHECK);
    tree.setBounds(10, 10, 300, 150);
    TreeItem item = new TreeItem(tree, SWT.NONE);
    item.setText("root item");
    for (int i = 0; i < 4; i++) {
        TreeItem newItem = new TreeItem(item, SWT.NONE);
        newItem.setText("descendent " + i);
        if (i % 2 == 0)
            newItem.setData(xImage);
        item.setExpanded(true);
        item = newItem;
    }

    /*
     * NOTE: MeasureItem and PaintItem are called repeatedly.  Therefore it is
     * critical for performance that these methods be as efficient as possible.
     */
    tree.addListener(SWT.MeasureItem, event -> {
        TreeItem item1 = (TreeItem) event.item;
        Image trailingImage = (Image) item1.getData();
        if (trailingImage != null) {
            event.width += trailingImage.getBounds().width + IMAGE_MARGIN;
        }
    });
    tree.addListener(SWT.PaintItem, event -> {
        TreeItem item1 = (TreeItem) event.item;
        Image trailingImage = (Image) item1.getData();
        if (trailingImage != null) {
            int x = event.x + event.width + IMAGE_MARGIN;
            int itemHeight = tree.getItemHeight();
            int imageHeight = trailingImage.getBounds().height;
            int y = event.y + (itemHeight - imageHeight) / 2;
            event.gc.drawImage(trailingImage, x, y);
        }
    });

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

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

public static void main(String[] args) {
    final Display display = new Display();
    Shell shell = new Shell(display);
    shell.setText("Snippet 296");
    shell.setBounds(10, 10, 300, 300);/*from   w w w .j a v  a  2  s .co m*/
    final ScrolledComposite sc = new ScrolledComposite(shell, SWT.VERTICAL);
    sc.setBounds(10, 10, 280, 200);
    final int clientWidth = sc.getClientArea().width;

    final Tree tree = new Tree(sc, SWT.NONE);
    for (int i = 0; i < 99; i++) {
        TreeItem item = new TreeItem(tree, SWT.NONE);
        item.setText("item " + i);
        new TreeItem(item, SWT.NONE).setText("child");
    }
    sc.setContent(tree);
    int prefHeight = tree.computeSize(SWT.DEFAULT, SWT.DEFAULT).y;
    tree.setSize(clientWidth, prefHeight);
    /*
     * The following listener ensures that the Tree is always large
     * enough to not need to show its own vertical scrollbar.
     */
    tree.addTreeListener(new TreeListener() {
        @Override
        public void treeExpanded(TreeEvent e) {
            int prefHeight = tree.computeSize(SWT.DEFAULT, SWT.DEFAULT).y;
            tree.setSize(clientWidth, prefHeight);
        }

        @Override
        public void treeCollapsed(TreeEvent e) {
            int prefHeight = tree.computeSize(SWT.DEFAULT, SWT.DEFAULT).y;
            tree.setSize(clientWidth, prefHeight);
        }
    });
    /*
     * The following listener ensures that a newly-selected item
     * in the Tree is always visible.
     */
    tree.addSelectionListener(widgetSelectedAdapter(e -> {
        TreeItem[] selectedItems = tree.getSelection();
        if (selectedItems.length > 0) {
            Rectangle itemRect = selectedItems[0].getBounds();
            Rectangle area = sc.getClientArea();
            Point origin = sc.getOrigin();
            if (itemRect.x < origin.x || itemRect.y < origin.y
                    || itemRect.x + itemRect.width > origin.x + area.width
                    || itemRect.y + itemRect.height > origin.y + area.height) {
                sc.setOrigin(itemRect.x, itemRect.y);
            }
        }
    }));
    /*
     * The following listener scrolls the Tree one item at a time
     * in response to MouseWheel events.
     */
    tree.addListener(SWT.MouseWheel, event -> {
        Point origin = sc.getOrigin();
        if (event.count < 0) {
            origin.y = Math.min(origin.y + tree.getItemHeight(), tree.getSize().y);
        } else {
            origin.y = Math.max(origin.y - tree.getItemHeight(), 0);
        }
        sc.setOrigin(origin);
    });

    Button downButton = new Button(shell, SWT.PUSH);
    downButton.setBounds(10, 220, 120, 30);
    downButton.setText("Down 10px");
    downButton.addListener(SWT.Selection, event -> sc.setOrigin(0, sc.getOrigin().y + 10));
    Button upButton = new Button(shell, SWT.PUSH);
    upButton.setBounds(140, 220, 120, 30);
    upButton.setText("Up 10px");
    upButton.addListener(SWT.Selection, event -> sc.setOrigin(0, sc.getOrigin().y - 10));
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch())
            display.sleep();
    }
    display.dispose();
}

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

public static void main(String[] args) {
    final Display display = new Display();
    Shell shell = new Shell(display);
    shell.setText("Snippet 322");
    shell.setBounds(10, 10, 300, 300);/*  ww  w  .ja  va2 s  .  c  om*/
    final ScrolledComposite sc = new ScrolledComposite(shell, SWT.VERTICAL);
    sc.setBounds(10, 10, 280, 200);
    final int clientWidth = sc.getClientArea().width;

    final Tree tree = new Tree(sc, SWT.NONE);
    for (int i = 0; i < 99; i++) {
        TreeItem item = new TreeItem(tree, SWT.NONE);
        item.setText("item " + i);
        new TreeItem(item, SWT.NONE).setText("child");
    }
    sc.setContent(tree);
    int prefHeight = tree.computeSize(SWT.DEFAULT, SWT.DEFAULT).y;
    tree.setSize(clientWidth, prefHeight);
    /*
     * The following listener ensures that the Tree is always large
     * enough to not need to show its own vertical scrollbar.
     */
    tree.addTreeListener(new TreeListener() {
        @Override
        public void treeExpanded(TreeEvent e) {
            int prefHeight = tree.computeSize(SWT.DEFAULT, SWT.DEFAULT).y;
            tree.setSize(clientWidth, prefHeight);
        }

        @Override
        public void treeCollapsed(TreeEvent e) {
            int prefHeight = tree.computeSize(SWT.DEFAULT, SWT.DEFAULT).y;
            tree.setSize(clientWidth, prefHeight);
        }
    });
    /*
     * The following listener ensures that a newly-selected item
     * in the Tree is always visible.
     */
    tree.addSelectionListener(widgetSelectedAdapter(e -> {
        TreeItem[] selectedItems = tree.getSelection();
        if (selectedItems.length > 0) {
            Rectangle itemRect = selectedItems[0].getBounds();
            Rectangle area = sc.getClientArea();
            Point origin = sc.getOrigin();
            if (itemRect.x < origin.x || itemRect.y < origin.y
                    || itemRect.x + itemRect.width > origin.x + area.width
                    || itemRect.y + itemRect.height > origin.y + area.height) {
                sc.setOrigin(itemRect.x, itemRect.y);
            }
        }
    }));
    /*
     * The following listener scrolls the Tree one item at a time
     * in response to MouseWheel events.
     */
    tree.addListener(SWT.MouseWheel, event -> {
        Point origin = sc.getOrigin();
        if (event.count < 0) {
            origin.y = Math.min(origin.y + tree.getItemHeight(), tree.getSize().y);
        } else {
            origin.y = Math.max(origin.y - tree.getItemHeight(), 0);
        }
        sc.setOrigin(origin);
    });

    Button disableButton = new Button(shell, SWT.PUSH);
    disableButton.setBounds(10, 220, 120, 30);
    disableButton.setText("Disable");
    disableButton.addListener(SWT.Selection, event -> tree.setEnabled(false));
    Button enableButton = new Button(shell, SWT.PUSH);
    enableButton.setBounds(140, 220, 120, 30);
    enableButton.setText("Enable");
    enableButton.addListener(SWT.Selection, event -> tree.setEnabled(true));

    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  w w  w  .ja  va  2  s  .co  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);
}