Example usage for org.eclipse.jface.util OpenStrategy getOpenMethod

List of usage examples for org.eclipse.jface.util OpenStrategy getOpenMethod

Introduction

In this page you can find the example usage for org.eclipse.jface.util OpenStrategy getOpenMethod.

Prototype

public static int getOpenMethod() 

Source Link

Document

This method is internal to the framework; it should not be implemented outside the framework.

Usage

From source file:com.google.dart.tools.search.ui.text.AbstractTextSearchViewPage.java

License:Open Source License

private void createViewer(Composite parent, int layout) {
    if ((layout & FLAG_LAYOUT_FLAT) != 0) {
        TableViewer viewer = createTableViewer(parent);
        fViewer = viewer;/*from w w w . j av a2  s. c o  m*/
        configureTableViewer(viewer);
    } else if ((layout & FLAG_LAYOUT_TREE) != 0) {
        TreeViewer viewer = createTreeViewer(parent);
        fViewer = viewer;
        configureTreeViewer(viewer);
        fCollapseAllAction.setViewer(viewer);
        fExpandAllAction.setViewer(viewer);
    }

    fCopyToClipboardAction.setViewer(fViewer);
    fSelectAllAction.setViewer(fViewer);

    IToolBarManager tbm = getSite().getActionBars().getToolBarManager();
    tbm.removeAll();
    SearchView.createToolBarGroups(tbm);
    fillToolbar(tbm);
    tbm.update(false);

    new OpenAndLinkWithEditorHelper(fViewer) {

        @Override
        protected void activate(ISelection selection) {
            final int currentMode = OpenStrategy.getOpenMethod();
            try {
                OpenStrategy.setOpenMethod(OpenStrategy.DOUBLE_CLICK);
                handleOpen(new OpenEvent(fViewer, selection));
            } finally {
                OpenStrategy.setOpenMethod(currentMode);
            }
        }

        @Override
        protected void linkToEditor(ISelection selection) {
            // not supported by this part
        }

        @Override
        protected void open(ISelection selection, boolean activate) {
            handleOpen(new OpenEvent(fViewer, selection));
        }

    };

    fViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            fCurrentMatchIndex = -1;
        }
    });

    fViewer.addSelectionChangedListener(fViewerAdapter);

    Menu menu = fMenu.createContextMenu(fViewer.getControl());
    fViewer.getControl().setMenu(menu);

    updateLayoutActions();
    getViewPart().updateLabel();
}

From source file:com.google.dart.tools.ui.internal.libraryview.LibraryExplorerActionGroup.java

License:Open Source License

/**
 * This handles double click actions to expand or collapse expandable elements in the Library
 * Explorer./*from   w  ww  . j  a  v a2s .c  om*/
 */
void handleDoubleClick(DoubleClickEvent event) {
    TreeViewer viewer = part.getTreeViewer();
    IStructuredSelection selection = (IStructuredSelection) event.getSelection();
    Object element = selection.getFirstElement();
    if (viewer.isExpandable(element)) {

        IAction openAction = navigateActionGroup.getEditAction();
        if (openAction != null && openAction.isEnabled()
                && OpenStrategy.getOpenMethod() == OpenStrategy.DOUBLE_CLICK) {
            return;
        }
        if (selection instanceof ITreeSelection) {
            TreePath[] paths = ((ITreeSelection) selection).getPathsFor(element);
            for (int i = 0; i < paths.length; i++) {
                viewer.setExpandedState(paths[i], !viewer.getExpandedState(paths[i]));
            }
        } else {
            viewer.setExpandedState(element, !viewer.getExpandedState(element));
        }
    }
    // if the Library Explorer ever has projects as top level elements, we may need to revisit this
    //    else if (element instanceof IProject && !((IProject) element).isOpen()) {
    //      OpenProjectAction openProjectAction = fProjectActionGroup.getOpenProjectAction();
    //      if (openProjectAction.isEnabled()) {
    //        openProjectAction.run();
    //      }
    //    }
}

From source file:com.google.gwt.eclipse.oophm.breadcrumbs.BreadcrumbItemDropDown.java

License:Open Source License

/**
 * Opens the drop down menu.//ww w.  j  a va 2 s . c  om
 */
public void showMenu() {
    if (DEBUG)
        System.out.println("BreadcrumbItemDropDown.showMenu()"); //$NON-NLS-1$

    if (!fEnabled || fMenuIsShown)
        return;

    fMenuIsShown = true;

    fShell = new Shell(fToolBar.getShell(), SWT.TOOL | SWT.ON_TOP);
    if (DEBUG)
        System.out.println("   creating new shell"); //$NON-NLS-1$

    GridLayout layout = new GridLayout(1, false);
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    fShell.setLayout(layout);

    Composite composite = new Composite(fShell, SWT.NONE);
    composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    GridLayout gridLayout = new GridLayout(1, false);
    gridLayout.marginHeight = 0;
    gridLayout.marginWidth = 0;
    composite.setLayout(gridLayout);

    fDropDownViewer = new ProblemTreeViewer(composite, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL);
    fDropDownViewer.setUseHashlookup(true);

    final Tree tree = (Tree) fDropDownViewer.getControl();
    tree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

    Object input = fParent.getData();
    fParent.getViewer().configureDropDownViewer(fDropDownViewer, input);
    fDropDownViewer.setInput(input);

    setShellBounds(fShell);

    fDropDownViewer.addOpenListener(new IOpenListener() {
        public void open(OpenEvent event) {
            if (DEBUG)
                System.out.println("BreadcrumbItemDropDown.showMenu()$treeViewer>open"); //$NON-NLS-1$

            ISelection selection = event.getSelection();
            if (!(selection instanceof IStructuredSelection))
                return;

            Object element = ((IStructuredSelection) selection).getFirstElement();
            if (element == null)
                return;

            openElement(element);
        }
    });

    tree.addMouseListener(new MouseListener() {
        public void mouseDoubleClick(MouseEvent e) {
        }

        public void mouseDown(MouseEvent e) {
        }

        public void mouseUp(MouseEvent e) {
            if (DEBUG)
                System.out.println("BreadcrumbItemDropDown.showMenu()$treeViewer>mouseUp"); //$NON-NLS-1$

            if (e.button != 1)
                return;

            if ((OpenStrategy.getOpenMethod() & OpenStrategy.SINGLE_CLICK) != 0)
                return;

            Item item = tree.getItem(new Point(e.x, e.y));
            if (item == null)
                return;

            openElement(item.getData());
        }
    });

    tree.addMouseMoveListener(new MouseMoveListener() {
        TreeItem fLastItem = null;

        public void mouseMove(MouseEvent e) {
            if (tree.equals(e.getSource())) {
                Object o = tree.getItem(new Point(e.x, e.y));
                if (o instanceof TreeItem) {
                    Rectangle clientArea = tree.getClientArea();
                    TreeItem currentItem = (TreeItem) o;
                    if (!o.equals(fLastItem)) {
                        fLastItem = (TreeItem) o;
                        tree.setSelection(new TreeItem[] { fLastItem });
                    } else if (e.y - clientArea.y < tree.getItemHeight() / 4) {
                        // Scroll up
                        if (currentItem.getParentItem() == null) {
                            int index = tree.indexOf((TreeItem) o);
                            if (index < 1)
                                return;

                            fLastItem = tree.getItem(index - 1);
                            tree.setSelection(new TreeItem[] { fLastItem });
                        } else {
                            Point p = tree.toDisplay(e.x, e.y);
                            Item item = fDropDownViewer.scrollUp(p.x, p.y);
                            if (item instanceof TreeItem) {
                                fLastItem = (TreeItem) item;
                                tree.setSelection(new TreeItem[] { fLastItem });
                            }
                        }
                    } else if (clientArea.y + clientArea.height - e.y < tree.getItemHeight() / 4) {
                        // Scroll down
                        if (currentItem.getParentItem() == null) {
                            int index = tree.indexOf((TreeItem) o);
                            if (index >= tree.getItemCount() - 1)
                                return;

                            fLastItem = tree.getItem(index + 1);
                            tree.setSelection(new TreeItem[] { fLastItem });
                        } else {
                            Point p = tree.toDisplay(e.x, e.y);
                            Item item = fDropDownViewer.scrollDown(p.x, p.y);
                            if (item instanceof TreeItem) {
                                fLastItem = (TreeItem) item;
                                tree.setSelection(new TreeItem[] { fLastItem });
                            }
                        }
                    }
                }
            }
        }
    });

    tree.addKeyListener(new KeyListener() {
        public void keyPressed(KeyEvent e) {
            if (e.keyCode == SWT.ARROW_UP) {
                TreeItem[] selection = tree.getSelection();
                if (selection.length != 1)
                    return;

                int selectionIndex = tree.indexOf(selection[0]);
                if (selectionIndex != 0)
                    return;

                fShell.close();
            }
        }

        public void keyReleased(KeyEvent e) {
        }
    });

    fDropDownViewer.addTreeListener(new ITreeViewerListener() {
        public void treeCollapsed(TreeExpansionEvent event) {
        }

        public void treeExpanded(TreeExpansionEvent event) {
            tree.setRedraw(false);
            fShell.getDisplay().asyncExec(new Runnable() {
                public void run() {
                    if (fShell.isDisposed())
                        return;

                    try {
                        resizeShell(fShell);
                    } finally {
                        tree.setRedraw(true);
                    }
                }
            });
        }
    });

    int index = fParent.getViewer().getIndexOfItem(fParent);
    if (index < fParent.getViewer().getItemCount() - 1) {
        BreadcrumbItem childItem = fParent.getViewer().getItem(index + 1);
        Object child = childItem.getData();

        fDropDownViewer.setSelection(new StructuredSelection(child), true);

        TreeItem[] selection = tree.getSelection();
        if (selection.length > 0) {
            tree.setTopItem(selection[0]);
        }
    }

    fShell.setVisible(true);
    installCloser(fShell);
}

From source file:com.jointlogic.breadcrumbs.sampleapp.api.TreeViewerDropDown.java

License:Open Source License

/**
 * Creates the viewer and installs the listeners.
 * /*from   w ww .j  av a2  s. c  om*/
 * @param composite
 *            Parent control of the viewer.
 * @param site
 *            Breadcrumb site for the viewer.
 * @param path
 *            Path to the element for which the drop-down is being opened.
 * @return The control created for the viewer.
 */
public Control createDropDown(final Composite composite, final IBreadcrumbDropDownSite site,
        final TreePath path) {

    this.fDropDownSite = site;
    this.fDropDownViewer = createTreeViewer(composite, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL, path);

    this.fDropDownViewer.addOpenListener(new IOpenListener() {
        @Override
        public void open(final OpenEvent event) {
            if (DEBUG) {
                System.out.println("BreadcrumbItemDropDown.showMenu()$treeViewer>open"); //$NON-NLS-1$
            }

            openElement(event.getSelection());
        }
    });

    final Tree tree = this.fDropDownViewer.getTree();

    tree.addMouseListener(new MouseListener() {
        @Override
        public void mouseUp(final MouseEvent e) {
            if (DEBUG) {
                System.out.println("BreadcrumbItemDropDown.showMenu()$treeViewer>mouseUp"); //$NON-NLS-1$
            }

            if (e.button != 1) {
                return;
            }

            if ((OpenStrategy.getOpenMethod() & OpenStrategy.SINGLE_CLICK) != 0) {
                return;
            }

            TreeItem item = tree.getItem(new Point(e.x, e.y));
            if (item == null) {
                return;
            }

            final List pathElements = new LinkedList();
            while (item != null) {
                final Object data = item.getData();
                if (data == null) {
                    return;
                }
                pathElements.add(0, data);
                item = item.getParentItem();
            }

            openElement(new TreeSelection(new TreePath(pathElements.toArray())));
        }

        @Override
        public void mouseDown(final MouseEvent e) {
        }

        @Override
        public void mouseDoubleClick(final MouseEvent e) {
        }
    });

    tree.addMouseMoveListener(new MouseMoveListener() {
        TreeItem fLastItem = null;
        long fLastScrollTime = 0;

        @Override
        public void mouseMove(final MouseEvent e) {
            if (tree.equals(e.getSource())) {
                final Object o = tree.getItem(new Point(e.x, e.y));
                if (this.fLastItem == null ^ o == null) {
                    tree.setCursor(o == null ? null : tree.getDisplay().getSystemCursor(SWT.CURSOR_HAND));
                }
                if (o instanceof TreeItem) {
                    final TreeItem currentItem = (TreeItem) o;
                    if (!o.equals(this.fLastItem)) {
                        this.fLastItem = (TreeItem) o;
                        tree.setSelection(new TreeItem[] { this.fLastItem });
                    } else if (System.currentTimeMillis() > this.fLastScrollTime + MOUSE_MOVE_SCROLL_DELAY) {
                        if (e.y < tree.getItemHeight() / 4) {
                            // Scroll up
                            if (currentItem.getParentItem() == null) {
                                final int index = tree.indexOf((TreeItem) o);
                                if (index < 1) {
                                    return;
                                }

                                this.fLastItem = tree.getItem(index - 1);
                                tree.setSelection(new TreeItem[] { this.fLastItem });
                            } else {
                                final Point p = tree.toDisplay(e.x, e.y);
                                final Item item = TreeViewerDropDown.this.fDropDownViewer.scrollUp(p.x, p.y);
                                this.fLastScrollTime = System.currentTimeMillis();
                                if (item instanceof TreeItem) {
                                    this.fLastItem = (TreeItem) item;
                                    tree.setSelection(new TreeItem[] { this.fLastItem });
                                }
                            }
                        } else if (e.y > tree.getBounds().height - tree.getItemHeight() / 4) {
                            // Scroll down
                            if (currentItem.getParentItem() == null) {
                                final int index = tree.indexOf((TreeItem) o);
                                if (index >= tree.getItemCount() - 1) {
                                    return;
                                }

                                this.fLastItem = tree.getItem(index + 1);
                                tree.setSelection(new TreeItem[] { this.fLastItem });
                            } else {
                                final Point p = tree.toDisplay(e.x, e.y);
                                final Item item = TreeViewerDropDown.this.fDropDownViewer.scrollDown(p.x, p.y);
                                this.fLastScrollTime = System.currentTimeMillis();
                                if (item instanceof TreeItem) {
                                    this.fLastItem = (TreeItem) item;
                                    tree.setSelection(new TreeItem[] { this.fLastItem });
                                }
                            }
                        }
                    }
                } else if (o == null) {
                    this.fLastItem = null;
                }
            }
        }
    });

    tree.addKeyListener(new KeyListener() {
        @Override
        public void keyPressed(final KeyEvent e) {
            if (e.keyCode == SWT.ARROW_UP) {
                // No elements in the tree (bug 262961).
                if (tree.getItemCount() == 0) {
                    TreeViewerDropDown.this.fDropDownSite.close();
                    return;
                }

                final TreeItem[] selection = tree.getSelection();
                if (selection.length != 1) {
                    return;
                }

                final int selectionIndex = tree.indexOf(selection[0]);
                if (selectionIndex != 0) {
                    return;
                }

                TreeViewerDropDown.this.fDropDownSite.close();
            }
        }

        @Override
        public void keyReleased(final KeyEvent e) {
        }
    });

    this.fDropDownViewer.addTreeListener(new ITreeViewerListener() {
        @Override
        public void treeCollapsed(final TreeExpansionEvent event) {
        }

        @Override
        public void treeExpanded(final TreeExpansionEvent event) {
            tree.setRedraw(false);
            new UIJob(tree.getDisplay(), "") {
                {
                    setSystem(true);
                }

                @Override
                public IStatus runInUIThread(final IProgressMonitor monitor) {
                    if (!tree.isDisposed()) {
                        try {
                            TreeViewerDropDown.this.fDropDownSite.updateSize();
                        } finally {
                            tree.setRedraw(true);
                        }
                    }
                    return Status.OK_STATUS;
                }
            }.schedule();
        }

    });

    return tree;
}

From source file:com.puppetlabs.geppetto.pp.dsl.ui.editor.findrefs.PPReferenceSearchViewPage.java

License:Open Source License

protected OpenAndLinkWithEditorHelper createOpenAndLinkWithEditorHandler() {
    return new OpenAndLinkWithEditorHelper(viewer) {
        @Override/*from  ww  w  . j a v a  2s.c o  m*/
        protected void activate(ISelection selection) {
            final int currentMode = OpenStrategy.getOpenMethod();
            try {
                OpenStrategy.setOpenMethod(OpenStrategy.DOUBLE_CLICK);
                handleOpen(new OpenEvent(viewer, selection));
            } finally {
                OpenStrategy.setOpenMethod(currentMode);
            }
        }

        @Override
        protected void linkToEditor(ISelection selection) {
            // not supported by this part
        }

        @Override
        protected void open(ISelection selection, boolean activate) {
            handleOpen(new OpenEvent(viewer, selection));
        }
    };
}

From source file:com.puppetlabs.geppetto.puppetdb.ui.views.PuppetResourceEventsView.java

License:Open Source License

@Override
public void createPartControl(Composite parent) {
    Composite treeComp = new Composite(parent, SWT.NONE);
    viewer = new TreeViewer(treeComp, SWT.VIRTUAL | SWT.V_SCROLL);
    viewer.setContentProvider(new TreeNodeContentProvider(viewer));
    viewer.addDoubleClickListener(this);
    viewer.getTree().addKeyListener(this);
    ColumnViewerToolTipSupport.enableFor(viewer, ToolTip.NO_RECREATE);

    new OpenAndLinkWithEditorHelper(viewer) {

        @Override//from   w  w w .  j ava  2s . co m
        protected void activate(ISelection selection) {
            final int currentMode = OpenStrategy.getOpenMethod();
            try {
                OpenStrategy.setOpenMethod(OpenStrategy.DOUBLE_CLICK);
                handleOpen(selection);
            } finally {
                OpenStrategy.setOpenMethod(currentMode);
            }
        }

        @Override
        protected void linkToEditor(ISelection selection) {
            // not supported by this part
        }

        @Override
        protected void open(ISelection selection, boolean activate) {
            handleOpen(selection);
        }

    };
    viewer.addSelectionChangedListener(this);

    Tree tree = viewer.getTree();

    TreeColumnLayout layout = new TreeColumnLayout();
    treeComp.setLayout(layout);

    tree.setLinesVisible(true);
    tree.setHeaderVisible(true);
    createColumn("_UI_Description_title", layout, 600, new TreeNodeLabelProvider(0), true, LEFT);
    createColumn("_UI_Type_title", layout, 100, new TreeNodeLabelProvider(1), false, LEFT);
    createColumn("_UI_Title_title", layout, 150, new TreeNodeLabelProvider(2), true, LEFT);
    createColumn("_UI_Path_title", layout, 300, new TreeNodeLabelProvider(3), true, LEFT);
    createColumn("_UI_Line_title", layout, 50, new TreeNodeLabelProvider(4), false, RIGHT);
    createColumn("_UI_Timestamp_title", layout, 130, new TreeNodeLabelProvider(5), false, LEFT);
    createActions(tree);
    viewer.setInput(getPuppetDBConnections(viewer, puppetDBManager));
}

From source file:de.walware.ecommons.ui.breadcrumb.BreadcrumbItemDropDown.java

License:Open Source License

/**
 * Opens the drop down menu.//from w  ww. jav a2  s .c om
 */
public void showMenu() {
    if (DEBUG) {
        System.out.println("BreadcrumbItemDropDown.showMenu()"); //$NON-NLS-1$
    }

    if (!fEnabled || fMenuIsShown) {
        return;
    }

    fShell = new Shell(fToolBar.getShell(), SWT.RESIZE | SWT.TOOL | SWT.ON_TOP);
    if (DEBUG) {
        System.out.println("   creating new shell"); //$NON-NLS-1$
    }

    try {
        fMenuIsShown = true;

        final GridLayout layout = new GridLayout(1, false);
        layout.marginHeight = 0;
        layout.marginWidth = 0;
        fShell.setLayout(layout);

        final Composite composite = new Composite(fShell, SWT.NONE);
        composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
        final GridLayout gridLayout = new GridLayout(1, false);
        gridLayout.marginHeight = 0;
        gridLayout.marginWidth = 0;
        composite.setLayout(gridLayout);

        fDropDownViewer = createViewer(composite);
        fDropDownViewer.setUseHashlookup(true);

        final Tree tree = (Tree) fDropDownViewer.getControl();
        tree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

        final Object input = fParent.getData();
        fParent.getViewer().configureDropDownViewer(fDropDownViewer, input);
        fDropDownViewer.setInput(input);

        setShellBounds(fShell);

        fDropDownViewer.addOpenListener(new IOpenListener() {

            @Override
            public void open(final OpenEvent event) {
                if (DEBUG) {
                    System.out.println("BreadcrumbItemDropDown.showMenu()$treeViewer>open"); //$NON-NLS-1$
                }

                final ISelection selection = event.getSelection();
                if (!(selection instanceof IStructuredSelection)) {
                    return;
                }

                final Object element = ((IStructuredSelection) selection).getFirstElement();
                if (element == null) {
                    return;
                }

                openElement(element);
            }

        });

        tree.addMouseListener(new MouseListener() {

            @Override
            public void mouseUp(final MouseEvent e) {
                if (DEBUG) {
                    System.out.println("BreadcrumbItemDropDown.showMenu()$treeViewer>mouseUp"); //$NON-NLS-1$
                }

                if (e.button != 1) {
                    return;
                }

                if ((OpenStrategy.getOpenMethod() & OpenStrategy.SINGLE_CLICK) != 0) {
                    return;
                }

                final Item item = tree.getItem(new Point(e.x, e.y));
                if (item == null) {
                    return;
                }

                openElement(item.getData());
            }

            @Override
            public void mouseDown(final MouseEvent e) {
            }

            @Override
            public void mouseDoubleClick(final MouseEvent e) {
            }

        });

        tree.addMouseMoveListener(new MouseMoveListener() {
            TreeItem fLastItem = null;

            @Override
            public void mouseMove(final MouseEvent e) {
                if (tree.equals(e.getSource())) {
                    final Object o = tree.getItem(new Point(e.x, e.y));
                    if (o instanceof TreeItem) {
                        final Rectangle clientArea = tree.getClientArea();
                        final TreeItem currentItem = (TreeItem) o;
                        if (!o.equals(fLastItem)) {
                            fLastItem = (TreeItem) o;
                            tree.setSelection(new TreeItem[] { fLastItem });
                        } else if (e.y - clientArea.y < tree.getItemHeight() / 4) {
                            // Scroll up
                            if (currentItem.getParentItem() == null) {
                                final int index = tree.indexOf((TreeItem) o);
                                if (index < 1) {
                                    return;
                                }

                                fLastItem = tree.getItem(index - 1);
                                tree.setSelection(new TreeItem[] { fLastItem });
                            } else {
                                final Point p = tree.toDisplay(e.x, e.y);
                                final Item item = fDropDownViewer.scrollUp(p.x, p.y);
                                if (item instanceof TreeItem) {
                                    fLastItem = (TreeItem) item;
                                    tree.setSelection(new TreeItem[] { fLastItem });
                                }
                            }
                        } else if (clientArea.y + clientArea.height - e.y < tree.getItemHeight() / 4) {
                            // Scroll down
                            if (currentItem.getParentItem() == null) {
                                final int index = tree.indexOf((TreeItem) o);
                                if (index >= tree.getItemCount() - 1) {
                                    return;
                                }

                                fLastItem = tree.getItem(index + 1);
                                tree.setSelection(new TreeItem[] { fLastItem });
                            } else {
                                final Point p = tree.toDisplay(e.x, e.y);
                                final Item item = fDropDownViewer.scrollDown(p.x, p.y);
                                if (item instanceof TreeItem) {
                                    fLastItem = (TreeItem) item;
                                    tree.setSelection(new TreeItem[] { fLastItem });
                                }
                            }
                        }
                    }
                }
            }

        });

        tree.addKeyListener(new KeyListener() {

            @Override
            public void keyPressed(final KeyEvent e) {
                if (e.keyCode == SWT.ARROW_UP) {
                    final TreeItem[] selection = tree.getSelection();
                    if (selection.length != 1) {
                        return;
                    }

                    final int selectionIndex = tree.indexOf(selection[0]);
                    if (selectionIndex != 0) {
                        return;
                    }

                    fShell.close();
                }
            }

            @Override
            public void keyReleased(final KeyEvent e) {
            }

        });

        tree.setMenu(fDropDownMenuManager.createContextMenu(tree));

        fDropDownViewer.addTreeListener(new ITreeViewerListener() {

            @Override
            public void treeCollapsed(final TreeExpansionEvent event) {
            }

            @Override
            public void treeExpanded(final TreeExpansionEvent event) {
                tree.setRedraw(false);
                fShell.getDisplay().asyncExec(new Runnable() {
                    @Override
                    public void run() {
                        if (fShell.isDisposed()) {
                            return;
                        }

                        try {
                            resizeShell(fShell);
                        } finally {
                            tree.setRedraw(true);
                        }
                    }
                });
            }

        });

        final int index = fParent.getViewer().getIndexOfItem(fParent);
        if (index < fParent.getViewer().getItemCount() - 1) {
            final BreadcrumbItem childItem = fParent.getViewer().getItem(index + 1);
            final Object child = childItem.getData();

            fDropDownViewer.setSelection(new StructuredSelection(child), true);

            final TreeItem[] selection = tree.getSelection();
            if (selection.length > 0) {
                tree.setTopItem(selection[0]);
            }
        }

        fShell.setVisible(true);
        installCloser(fShell);
    } catch (final RuntimeException e) {
        fMenuIsShown = false;
        fShell.close();
        throw e;
    }
}

From source file:ext.org.eclipse.jdt.internal.ui.javaeditor.breadcrumb.BreadcrumbItemDropDown.java

License:Open Source License

/**
 * Opens the drop down menu./*from w ww  . j a  va2  s .  c o  m*/
 */
public void showMenu() {
    if (DEBUG)
        System.out.println("BreadcrumbItemDropDown.showMenu()"); //$NON-NLS-1$

    if (!fEnabled || fMenuIsShown)
        return;

    fMenuIsShown = true;

    fShell = new Shell(fToolBar.getShell(), SWT.RESIZE | SWT.TOOL | SWT.ON_TOP);
    if (DEBUG)
        System.out.println("   creating new shell"); //$NON-NLS-1$

    GridLayout layout = new GridLayout(1, false);
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    fShell.setLayout(layout);

    Composite composite = new Composite(fShell, SWT.NONE);
    composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    GridLayout gridLayout = new GridLayout(1, false);
    gridLayout.marginHeight = 0;
    gridLayout.marginWidth = 0;
    composite.setLayout(gridLayout);

    fDropDownViewer = new ProblemTreeViewer(composite, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL);
    fDropDownViewer.setUseHashlookup(true);

    final Tree tree = (Tree) fDropDownViewer.getControl();
    tree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

    Object input = fParent.getData();
    fParent.getViewer().configureDropDownViewer(fDropDownViewer, input);
    fDropDownViewer.setInput(input);

    setShellBounds(fShell);

    fShell.addControlListener(new ControlAdapter() {
        /*
         * @see org.eclipse.swt.events.ControlAdapter#controlResized(org.eclipse.swt.events.ControlEvent)
         */
        @Override
        public void controlResized(ControlEvent e) {
            if (isResizingProgrammatically)
                return;

            Point size = fShell.getSize();
            getDialogSettings().put(DIALOG_HEIGHT, size.y);
        }
    });

    fDropDownViewer.addOpenListener(new IOpenListener() {
        public void open(OpenEvent event) {
            if (DEBUG)
                System.out.println("BreadcrumbItemDropDown.showMenu()$treeViewer>open"); //$NON-NLS-1$

            ISelection selection = event.getSelection();
            if (!(selection instanceof IStructuredSelection))
                return;

            Object element = ((IStructuredSelection) selection).getFirstElement();
            if (element == null)
                return;

            openElement(element);
        }
    });

    tree.addMouseListener(new MouseListener() {
        public void mouseUp(MouseEvent e) {
            if (DEBUG)
                System.out.println("BreadcrumbItemDropDown.showMenu()$treeViewer>mouseUp"); //$NON-NLS-1$

            if (e.button != 1)
                return;

            if ((OpenStrategy.getOpenMethod() & OpenStrategy.SINGLE_CLICK) != 0)
                return;

            Item item = tree.getItem(new Point(e.x, e.y));
            if (item == null)
                return;

            openElement(item.getData());
        }

        public void mouseDown(MouseEvent e) {
        }

        public void mouseDoubleClick(MouseEvent e) {
        }
    });

    tree.addMouseMoveListener(new MouseMoveListener() {
        TreeItem fLastItem = null;

        public void mouseMove(MouseEvent e) {
            if (tree.equals(e.getSource())) {
                Object o = tree.getItem(new Point(e.x, e.y));
                if ((o != null && !o.equals(fLastItem)) || (fLastItem != null && o == null)) {
                    boolean showHandPointer = false;
                    if (o instanceof TreeItem) {
                        Object itemData = ((TreeItem) o).getData();
                        if (itemData instanceof IJavaElement) {
                            int elementType = ((IJavaElement) itemData).getElementType();
                            if (elementType != IJavaElement.JAVA_PROJECT
                                    && elementType != IJavaElement.PACKAGE_FRAGMENT
                                    && elementType != IJavaElement.PACKAGE_FRAGMENT_ROOT) {
                                showHandPointer = true;
                            }
                        } else if (itemData instanceof IFile) {
                            showHandPointer = true;
                        } else if (itemData instanceof IJarEntryResource) {
                            showHandPointer = ((IJarEntryResource) itemData).isFile();
                        }
                    }
                    tree.setCursor(showHandPointer ? tree.getDisplay().getSystemCursor(SWT.CURSOR_HAND) : null);
                }
                if (o instanceof TreeItem) {
                    Rectangle clientArea = tree.getClientArea();
                    TreeItem currentItem = (TreeItem) o;
                    if (!o.equals(fLastItem)) {
                        fLastItem = (TreeItem) o;
                        tree.setSelection(new TreeItem[] { fLastItem });
                    } else if (e.y - clientArea.y < tree.getItemHeight() / 4) {
                        // Scroll up
                        if (currentItem.getParentItem() == null) {
                            int index = tree.indexOf((TreeItem) o);
                            if (index < 1)
                                return;

                            fLastItem = tree.getItem(index - 1);
                            tree.setSelection(new TreeItem[] { fLastItem });
                        } else {
                            Point p = tree.toDisplay(e.x, e.y);
                            Item item = fDropDownViewer.scrollUp(p.x, p.y);
                            if (item instanceof TreeItem) {
                                fLastItem = (TreeItem) item;
                                tree.setSelection(new TreeItem[] { fLastItem });
                            }
                        }
                    } else if (clientArea.y + clientArea.height - e.y < tree.getItemHeight() / 4) {
                        // Scroll down
                        if (currentItem.getParentItem() == null) {
                            int index = tree.indexOf((TreeItem) o);
                            if (index >= tree.getItemCount() - 1)
                                return;

                            fLastItem = tree.getItem(index + 1);
                            tree.setSelection(new TreeItem[] { fLastItem });
                        } else {
                            Point p = tree.toDisplay(e.x, e.y);
                            Item item = fDropDownViewer.scrollDown(p.x, p.y);
                            if (item instanceof TreeItem) {
                                fLastItem = (TreeItem) item;
                                tree.setSelection(new TreeItem[] { fLastItem });
                            }
                        }
                    }
                } else if (o == null) {
                    fLastItem = null;
                }
            }
        }
    });

    tree.addKeyListener(new KeyListener() {
        public void keyPressed(KeyEvent e) {
            if (e.keyCode == SWT.ARROW_UP) {
                TreeItem[] selection = tree.getSelection();
                if (selection.length != 1)
                    return;

                int selectionIndex = tree.indexOf(selection[0]);
                if (selectionIndex != 0)
                    return;

                fShell.close();
            }
        }

        public void keyReleased(KeyEvent e) {
        }
    });

    fDropDownViewer.addTreeListener(new ITreeViewerListener() {
        public void treeCollapsed(TreeExpansionEvent event) {
        }

        public void treeExpanded(TreeExpansionEvent event) {
            tree.setRedraw(false);
            fShell.getDisplay().asyncExec(new Runnable() {
                public void run() {
                    if (fShell.isDisposed())
                        return;

                    try {
                        resizeShell(fShell);
                    } finally {
                        tree.setRedraw(true);
                    }
                }
            });
        }
    });

    int index = fParent.getViewer().getIndexOfItem(fParent);
    if (index < fParent.getViewer().getItemCount() - 1) {
        BreadcrumbItem childItem = fParent.getViewer().getItem(index + 1);
        Object child = childItem.getData();

        fDropDownViewer.setSelection(new StructuredSelection(child), true);

        TreeItem[] selection = tree.getSelection();
        if (selection.length > 0) {
            tree.setTopItem(selection[0]);
        }
    }

    fShell.setVisible(true);
    installCloser(fShell);
}

From source file:ext.org.eclipse.jdt.internal.ui.packageview.PackageExplorerActionGroup.java

License:Open Source License

void handleDoubleClick(DoubleClickEvent event) {
    TreeViewer viewer = fPart.getTreeViewer();
    IStructuredSelection selection = (IStructuredSelection) event.getSelection();
    Object element = selection.getFirstElement();
    if (viewer.isExpandable(element)) {
        if (doubleClickGoesInto()) {
            // don't zoom into compilation units and class files
            if (element instanceof ICompilationUnit || element instanceof IClassFile)
                return;
            if (element instanceof IOpenable || element instanceof IContainer
                    || element instanceof IWorkingSet) {
                fZoomInAction.run();//  ww  w. java2s  .  c o m
            }
        } else {
            IAction openAction = fNavigateActionGroup.getOpenAction();
            if (openAction != null && openAction.isEnabled()
                    && OpenStrategy.getOpenMethod() == OpenStrategy.DOUBLE_CLICK)
                return;
            if (selection instanceof ITreeSelection) {
                TreePath[] paths = ((ITreeSelection) selection).getPathsFor(element);
                for (int i = 0; i < paths.length; i++) {
                    viewer.setExpandedState(paths[i], !viewer.getExpandedState(paths[i]));
                }
            } else {
                viewer.setExpandedState(element, !viewer.getExpandedState(element));
            }
        }
    } else if (element instanceof IProject && !((IProject) element).isOpen()) {
        OpenProjectAction openProjectAction = fProjectActionGroup.getOpenProjectAction();
        if (openProjectAction.isEnabled()) {
            openProjectAction.run();
        }
    }
}

From source file:org.dawnsci.common.widgets.breadcrumb.BreadcrumbItemDropDown.java

License:Open Source License

/**
 * Opens the drop down menu.//  w  w  w  . j av  a2s.co m
 */
public void showMenu() {
    if (DEBUG)
        System.out.println("BreadcrumbItemDropDown.showMenu()"); //$NON-NLS-1$

    if (!fEnabled || fMenuIsShown)
        return;

    fMenuIsShown = true;

    fShell = new Shell(fToolBar.getShell(), SWT.RESIZE | SWT.TOOL | SWT.ON_TOP);
    if (DEBUG)
        System.out.println("   creating new shell"); //$NON-NLS-1$

    GridLayout layout = new GridLayout(1, false);
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    fShell.setLayout(layout);

    Composite composite = new Composite(fShell, SWT.NONE);
    composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    GridLayout gridLayout = new GridLayout(1, false);
    gridLayout.marginHeight = 0;
    gridLayout.marginWidth = 0;
    composite.setLayout(gridLayout);

    fDropDownViewer = new ProblemTreeViewer(composite, treeSwitches);
    fDropDownViewer.setUseHashlookup(true);

    final Tree tree = (Tree) fDropDownViewer.getControl();
    tree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

    Object input = fParent.getData();
    fParent.getViewer().configureDropDownViewer(fDropDownViewer, input);
    fDropDownViewer.setInput(input);

    setShellBounds(fShell);

    fShell.addControlListener(new ControlAdapter() {
        /*
         * @see org.eclipse.swt.events.ControlAdapter#controlResized(org.eclipse.swt.events.ControlEvent)
         */
        @Override
        public void controlResized(ControlEvent e) {
            if (isResizingProgrammatically)
                return;

            Point size = fShell.getSize();
            getDialogSettings().put(DIALOG_HEIGHT, size.y);
        }
    });

    fDropDownViewer.addOpenListener(new IOpenListener() {
        public void open(OpenEvent event) {
            if (DEBUG)
                System.out.println("BreadcrumbItemDropDown.showMenu()$treeViewer>open"); //$NON-NLS-1$

            ISelection selection = event.getSelection();
            if (!(selection instanceof IStructuredSelection))
                return;

            Object element = ((IStructuredSelection) selection).getFirstElement();
            if (element == null)
                return;

            openElement(element);
        }
    });

    tree.addMouseListener(new MouseListener() {
        public void mouseUp(MouseEvent e) {
            if (DEBUG)
                System.out.println("BreadcrumbItemDropDown.showMenu()$treeViewer>mouseUp"); //$NON-NLS-1$

            if (e.button != 1)
                return;

            if ((OpenStrategy.getOpenMethod() & OpenStrategy.SINGLE_CLICK) != 0)
                return;

            Item item = tree.getItem(new Point(e.x, e.y));
            if (item == null)
                return;

            openElement(item.getData());
        }

        public void mouseDown(MouseEvent e) {
        }

        public void mouseDoubleClick(MouseEvent e) {
        }
    });

    tree.addMouseMoveListener(new MouseMoveListener() {
        TreeItem fLastItem = null;

        public void mouseMove(MouseEvent e) {
            if (tree.equals(e.getSource())) {
                Object o = tree.getItem(new Point(e.x, e.y));
                if ((o != null && !o.equals(fLastItem)) || (fLastItem != null && o == null)) {
                    boolean showHandPointer = false;
                    if (o instanceof TreeItem) {
                        Object itemData = ((TreeItem) o).getData();
                        if (itemData instanceof IJavaElement) {
                            int elementType = ((IJavaElement) itemData).getElementType();
                            if (elementType != IJavaElement.JAVA_PROJECT
                                    && elementType != IJavaElement.PACKAGE_FRAGMENT
                                    && elementType != IJavaElement.PACKAGE_FRAGMENT_ROOT) {
                                showHandPointer = true;
                            }
                        } else if (itemData instanceof IFile) {
                            showHandPointer = true;
                        } else if (itemData instanceof IJarEntryResource) {
                            showHandPointer = ((IJarEntryResource) itemData).isFile();
                        }
                    }
                    tree.setCursor(showHandPointer ? tree.getDisplay().getSystemCursor(SWT.CURSOR_HAND) : null);
                }
                if (o instanceof TreeItem) {
                    Rectangle clientArea = tree.getClientArea();
                    TreeItem currentItem = (TreeItem) o;
                    if (!o.equals(fLastItem)) {
                        fLastItem = (TreeItem) o;
                        tree.setSelection(new TreeItem[] { fLastItem });
                    } else if (e.y - clientArea.y < tree.getItemHeight() / 4) {
                        // Scroll up
                        if (currentItem.getParentItem() == null) {
                            int index = tree.indexOf((TreeItem) o);
                            if (index < 1)
                                return;

                            fLastItem = tree.getItem(index - 1);
                            tree.setSelection(new TreeItem[] { fLastItem });
                        } else {
                            Point p = tree.toDisplay(e.x, e.y);
                            Item item = fDropDownViewer.scrollUp(p.x, p.y);
                            if (item instanceof TreeItem) {
                                fLastItem = (TreeItem) item;
                                tree.setSelection(new TreeItem[] { fLastItem });
                            }
                        }
                    } else if (clientArea.y + clientArea.height - e.y < tree.getItemHeight() / 4) {
                        // Scroll down
                        if (currentItem.getParentItem() == null) {
                            int index = tree.indexOf((TreeItem) o);
                            if (index >= tree.getItemCount() - 1)
                                return;

                            fLastItem = tree.getItem(index + 1);
                            tree.setSelection(new TreeItem[] { fLastItem });
                        } else {
                            Point p = tree.toDisplay(e.x, e.y);
                            Item item = fDropDownViewer.scrollDown(p.x, p.y);
                            if (item instanceof TreeItem) {
                                fLastItem = (TreeItem) item;
                                tree.setSelection(new TreeItem[] { fLastItem });
                            }
                        }
                    }
                } else if (o == null) {
                    fLastItem = null;
                }
            }
        }
    });

    tree.addKeyListener(new KeyListener() {
        public void keyPressed(KeyEvent e) {
            if (e.keyCode == SWT.ARROW_UP) {
                TreeItem[] selection = tree.getSelection();
                if (selection.length != 1)
                    return;

                int selectionIndex = tree.indexOf(selection[0]);
                if (selectionIndex != 0)
                    return;

                fShell.close();
            }
        }

        public void keyReleased(KeyEvent e) {
        }
    });

    fDropDownViewer.addTreeListener(new ITreeViewerListener() {
        public void treeCollapsed(TreeExpansionEvent event) {
        }

        public void treeExpanded(TreeExpansionEvent event) {
            tree.setRedraw(false);
            fShell.getDisplay().asyncExec(new Runnable() {
                public void run() {
                    if (fShell.isDisposed())
                        return;

                    try {
                        resizeShell(fShell);
                    } finally {
                        tree.setRedraw(true);
                    }
                }
            });
        }
    });

    int index = fParent.getViewer().getIndexOfItem(fParent);
    if (index < fParent.getViewer().getItemCount() - 1) {
        BreadcrumbItem childItem = fParent.getViewer().getItem(index + 1);
        Object child = childItem.getData();

        fDropDownViewer.setSelection(new StructuredSelection(child), true);

        TreeItem[] selection = tree.getSelection();
        if (selection.length > 0) {
            tree.setTopItem(selection[0]);
        }
    }

    fShell.setVisible(true);
    installCloser(fShell);
    tree.setFocus();
}