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

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

Introduction

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

Prototype

public void setMenu(Menu menu) 

Source Link

Document

Sets the receiver's pop up menu to the argument.

Usage

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

public static void main(String[] args) {
    final Display display = new Display();
    Shell shell = new Shell(display);
    shell.setText("Snippet 97");
    final Tree tree = new Tree(shell, SWT.BORDER | SWT.MULTI);
    final Menu menu = new Menu(shell, SWT.POP_UP);
    tree.setMenu(menu);
    for (int i = 0; i < 12; i++) {
        TreeItem item = new TreeItem(tree, SWT.NONE);
        item.setText("Item " + i);
    }// ww w .j  a v a2  s  .  c o  m
    menu.addListener(SWT.Show, event -> {
        MenuItem[] menuItems = menu.getItems();
        for (int i1 = 0; i1 < menuItems.length; i1++) {
            menuItems[i1].dispose();
        }
        TreeItem[] treeItems = tree.getSelection();
        for (int i2 = 0; i2 < treeItems.length; i2++) {
            MenuItem menuItem = new MenuItem(menu, SWT.PUSH);
            menuItem.setText(treeItems[i2].getText());
        }
    });
    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: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);
    for (int i = 0; i < 12; i++) {
        TreeItem item = new TreeItem(tree, SWT.NONE);
        item.setText("Item " + i);
    }/*from ww w . jav a2s. c  om*/
    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:MenuItemEnableDynamically.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);
    final Menu menu = new Menu(shell, SWT.POP_UP);
    tree.setMenu(menu);
    for (int i = 0; i < 12; i++) {
        TreeItem treeItem = new TreeItem(tree, SWT.NONE);
        treeItem.setText("Item " + i);
        MenuItem menuItem = new MenuItem(menu, SWT.PUSH);
        menuItem.setText(treeItem.getText());
    }/*from  www  .j  a  v  a 2s  . c om*/
    menu.addListener(SWT.Show, new Listener() {
        public void handleEvent(Event event) {
            MenuItem[] menuItems = menu.getItems();
            TreeItem[] treeItems = tree.getSelection();
            for (int i = 0; i < menuItems.length; i++) {
                String text = menuItems[i].getText();
                int index = 0;
                while (index < treeItems.length) {
                    if (treeItems[index].getText().equals(text))
                        break;
                    index++;
                }
                menuItems[i].setEnabled(index != treeItems.length);
            }
        }
    });
    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.Snippet73.java

public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setText("Snippet 73");
    final Tree tree = new Tree(shell, SWT.BORDER | SWT.MULTI);
    final Menu menu = new Menu(shell, SWT.POP_UP);
    tree.setMenu(menu);
    for (int i = 0; i < 12; i++) {
        TreeItem treeItem = new TreeItem(tree, SWT.NONE);
        treeItem.setText("Item " + i);
        MenuItem menuItem = new MenuItem(menu, SWT.PUSH);
        menuItem.setText(treeItem.getText());
    }//w  w  w  . j  a  v  a2  s .c o m
    menu.addListener(SWT.Show, event -> {
        MenuItem[] menuItems = menu.getItems();
        TreeItem[] treeItems = tree.getSelection();
        for (int i = 0; i < menuItems.length; i++) {
            String text = menuItems[i].getText();
            int index = 0;
            while (index < treeItems.length) {
                if (treeItems[index].getText().equals(text))
                    break;
                index++;
            }
            menuItems[i].setEnabled(index != treeItems.length);
        }
    });
    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:org.eclipse.swt.snippets.Snippet312.java

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

    final Tree tree = new Tree(shell, SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER);
    tree.setHeaderVisible(true);//from  w  w w .j  av  a 2 s.c  o  m
    final Menu headerMenu = new Menu(shell, SWT.POP_UP);
    final TreeColumn columnName = new TreeColumn(tree, SWT.NONE);
    columnName.setText("Name");
    columnName.setWidth(150);
    createMenuItem(headerMenu, columnName);
    final TreeColumn columnSize = new TreeColumn(tree, SWT.NONE);
    columnSize.setText("Size");
    columnSize.setWidth(150);
    createMenuItem(headerMenu, columnSize);
    final TreeColumn columnType = new TreeColumn(tree, SWT.NONE);
    columnType.setText("Type");
    columnType.setWidth(150);
    createMenuItem(headerMenu, columnType);
    final TreeColumn columnDate = new TreeColumn(tree, SWT.NONE);
    columnDate.setText("Date");
    columnDate.setWidth(150);
    createMenuItem(headerMenu, columnDate);
    final TreeColumn columnOwner = new TreeColumn(tree, SWT.NONE);
    columnOwner.setText("Owner");
    columnOwner.setWidth(0);
    columnOwner.setResizable(false);
    createMenuItem(headerMenu, columnOwner);

    for (int i = 0; i < files.length; i++) {
        TreeItem item = new TreeItem(tree, SWT.NONE);
        item.setText(files[i]);
        TreeItem subItem = new TreeItem(item, SWT.NONE);
        subItem.setText("node");
    }

    final Menu treeMenu = new Menu(shell, SWT.POP_UP);
    MenuItem item = new MenuItem(treeMenu, SWT.PUSH);
    item.setText("Open");
    item = new MenuItem(treeMenu, SWT.PUSH);
    item.setText("Open With");
    new MenuItem(treeMenu, SWT.SEPARATOR);
    item = new MenuItem(treeMenu, SWT.PUSH);
    item.setText("Cut");
    item = new MenuItem(treeMenu, SWT.PUSH);
    item.setText("Copy");
    item = new MenuItem(treeMenu, SWT.PUSH);
    item.setText("Paste");
    new MenuItem(treeMenu, SWT.SEPARATOR);
    item = new MenuItem(treeMenu, SWT.PUSH);
    item.setText("Delete");

    tree.addListener(SWT.MenuDetect, event -> {
        Point pt = display.map(null, tree, new Point(event.x, event.y));
        Rectangle clientArea = tree.getClientArea();
        boolean header = clientArea.y <= pt.y && pt.y < (clientArea.y + tree.getHeaderHeight());
        tree.setMenu(header ? headerMenu : treeMenu);
    });

    /* IMPORTANT: Dispose the menus (only the current menu, set with setMenu(), will be automatically disposed) */
    tree.addListener(SWT.Dispose, event -> {
        headerMenu.dispose();
        treeMenu.dispose();
    });

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

From source file:fr.inria.soctrace.framesoc.ui.piechart.view.StatisticsPieChartView.java

private void createContextMenu() {
    final Tree tree = tableTreeViewer.getTree();
    final Menu menu = new Menu(tree);
    tree.setMenu(menu);
    menu.addMenuListener(new MenuAdapter() {

        private boolean allLeaves = false;
        private boolean allMerged = false;

        @Override/*from w  w w . j a  v  a  2  s .c  o m*/
        public void menuShown(MenuEvent e) {

            // clean menu
            MenuItem[] items = menu.getItems();
            for (int i = 0; i < items.length; i++) {
                items[i].dispose();
            }

            // get current selection
            final List<String> rows = new ArrayList<>();
            getSelectedRows(rows);

            // exclude
            if (allLeaves && rows.size() > 0) {
                MenuItem hide = new MenuItem(menu, SWT.NONE);
                hide.setText("Exclude " + ((rows.size() > 1) ? "Items" : "Item") + " from Statistics");
                hide.addSelectionListener(new SelectionAdapter() {
                    @Override
                    public void widgetSelected(SelectionEvent e) {
                        currentDescriptor.excluded.addAll(rows);
                        refresh();
                        refreshTableFilter();
                        tableTreeViewer.collapseAll();
                    }
                });
            }

            // merge
            if (allLeaves && rows.size() > 1) {
                MenuItem merge = new MenuItem(menu, SWT.NONE);
                merge.setText("Merge Items");
                merge.addSelectionListener(new SelectionAdapter() {
                    @Override
                    public void widgetSelected(SelectionEvent e) {
                        MergeItemsDialog dlg = new MergeItemsDialog(getSite().getShell());
                        if (dlg.open() == Dialog.OK) {
                            MergedItem mergedItem = new MergedItem();
                            mergedItem.setBaseItems(rows);
                            if (!currentDescriptor.loader.checkLabel(dlg.getLabel())) {
                                MessageDialog.openError(getSite().getShell(), "Error",
                                        "Illegal label: '" + dlg.getLabel() + "'. Labels must be unique.");
                                return;
                            }
                            mergedItem.setColor(dlg.getColor());
                            mergedItem.setLabel(dlg.getLabel());
                            currentDescriptor.merged.addMergedItem(mergedItem);
                            refresh();
                            tableTreeViewer.collapseAll();
                        }
                    }
                });
            }

            if (!currentDescriptor.excluded.isEmpty() || !currentDescriptor.merged.isEmpty()) {
                new MenuItem(menu, SWT.SEPARATOR);
            }

            // restore merged
            if (!currentDescriptor.merged.isEmpty() && allMerged) {
                MenuItem restore = new MenuItem(menu, SWT.NONE);
                restore.setText("Unmerge Items");
                restore.addSelectionListener(new SelectionAdapter() {
                    @Override
                    public void widgetSelected(SelectionEvent e) {
                        currentDescriptor.merged.removeMergedItems(rows);
                        refresh();
                        refreshTableFilter();
                        tableTreeViewer.collapseAll();
                    }
                });
            }

            // restore excluded
            if (!currentDescriptor.excluded.isEmpty()) {
                MenuItem restore = new MenuItem(menu, SWT.NONE);
                restore.setText("Restore Excluded Items");
                restore.addSelectionListener(new SelectionAdapter() {
                    @Override
                    public void widgetSelected(SelectionEvent e) {
                        currentDescriptor.excluded = new ArrayList<>();
                        refresh();
                        refreshTableFilter();
                        tableTreeViewer.collapseAll();
                    }
                });
            }

            // restore all merged
            if (!currentDescriptor.merged.isEmpty()) {
                MenuItem restore = new MenuItem(menu, SWT.NONE);
                restore.setText("Unmerge All Merged Items");
                restore.addSelectionListener(new SelectionAdapter() {
                    @Override
                    public void widgetSelected(SelectionEvent e) {
                        currentDescriptor.merged.removeAllMergedItems();
                        refresh();
                        refreshTableFilter();
                        tableTreeViewer.collapseAll();
                    }
                });
            }

        }

        private void getSelectedRows(List<String> rows) {
            final IStructuredSelection sel = (IStructuredSelection) tableTreeViewer.getSelection();
            if (sel.isEmpty()) {
                allLeaves = false;
                allMerged = false;
                return;
            }
            @SuppressWarnings("unchecked")
            Iterator<StatisticsTableRow> it = (Iterator<StatisticsTableRow>) sel.iterator();
            allLeaves = true;
            allMerged = true;
            while (it.hasNext()) {
                StatisticsTableRow r = it.next();
                try {
                    rows.add(r.get(StatisticsTableColumn.NAME));
                    allLeaves = allLeaves && !r.hasChildren();
                    if (currentDescriptor.loader.isAggregationSupported()) {
                        if (r.get(StatisticsTableColumn.NAME)
                                .equals(currentDescriptor.loader.getAggregatedLabel())) {
                            allMerged = false;
                        } else {
                            allMerged = allMerged && r.hasChildren();
                        }
                    } else {
                        allMerged = allMerged && r.hasChildren();
                    }
                } catch (SoCTraceException e) {
                    e.printStackTrace();
                }
            }
            return;
        }

    });
}