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

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

Introduction

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

Prototype

int SINGLE_CLICK

To view the source code for org.eclipse.jface.util OpenStrategy SINGLE_CLICK.

Click Source Link

Document

Single click will open the item.

Usage

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

License:Open Source License

/**
 * Opens the drop down menu.// ww w  .  java 2  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.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.
 * // w w w  .  j a  va 2 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:de.walware.ecommons.ui.breadcrumb.BreadcrumbItemDropDown.java

License:Open Source License

/**
 * Opens the drop down menu./*from w w  w  . j  av  a2 s  .co m*/
 */
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./*w  w w  .  ja v a2 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:org.dawnsci.common.widgets.breadcrumb.BreadcrumbItemDropDown.java

License:Open Source License

/**
 * Opens the drop down menu.//from   www  . jav  a2  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, 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();
}

From source file:org.eclipse.birt.report.designer.internal.ui.editors.breadcrumb.BreadcrumbItemDropDown.java

License:Open Source License

/**
 * Opens the drop down menu.//from   w ww .j a va2 s. com
 */
public void showMenu() {

    if (!fEnabled || fMenuIsShown)
        return;

    fMenuIsShown = true;

    fShell = new Shell(fToolBar.getShell(), SWT.RESIZE | SWT.TOOL | SWT.ON_TOP);

    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 TreeViewer(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) {

            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 (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 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:org.eclipse.debug.internal.ui.viewers.breadcrumb.TreeViewerDropDown.java

License:Open Source License

/**
 * Creates the viewer and installs the listeners.
 * /*from   w ww.  jav  a2s .  co  m*/
 * @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(Composite composite, IBreadcrumbDropDownSite site, TreePath path) {

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

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

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

    final Tree tree = fDropDownViewer.getTree();

    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;

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

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

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

        public void mouseDown(MouseEvent e) {
        }

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

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

        public void mouseMove(MouseEvent e) {
            if (tree.equals(e.getSource())) {
                Object o = tree.getItem(new Point(e.x, e.y));
                if (fLastItem == null ^ o == null) {
                    tree.setCursor(o == null ? null : tree.getDisplay().getSystemCursor(SWT.CURSOR_HAND));
                }
                if (o instanceof TreeItem) {
                    TreeItem currentItem = (TreeItem) o;
                    if (!o.equals(fLastItem)) {
                        fLastItem = (TreeItem) o;
                        tree.setSelection(new TreeItem[] { fLastItem });
                    } else if (System.currentTimeMillis() > (fLastScrollTime + MOUSE_MOVE_SCROLL_DELAY)) {
                        if (e.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);
                                fLastScrollTime = System.currentTimeMillis();
                                if (item instanceof TreeItem) {
                                    fLastItem = (TreeItem) item;
                                    tree.setSelection(new TreeItem[] { fLastItem });
                                }
                            }
                        } else if (e.y > tree.getBounds().height - 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);
                                fLastScrollTime = System.currentTimeMillis();
                                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) {
                // No elements in the tree (bug 262961).
                if (tree.getItemCount() == 0) {
                    fDropDownSite.close();
                    return;
                }

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

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

                fDropDownSite.close();
            }
        }

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

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

        public void treeExpanded(TreeExpansionEvent event) {
            tree.setRedraw(false);
            new UIJob(tree.getDisplay(), IInternalDebugCoreConstants.EMPTY_STRING) {
                {
                    setSystem(true);
                }

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

    });

    return tree;
}

From source file:org.eclipse.rcptt.ctx.preferences.impl.PreferencesContextProcessor.java

License:Open Source License

private void processOpenStrategy(Preferences preferences) {
    // Check some special cases
    boolean openOnSingleClick = preferences.getBoolean("OPEN_ON_SINGLE_CLICK", false);
    boolean selectOnHover = preferences.getBoolean("SELECT_ON_HOVER", false);
    boolean openAfterDelay = preferences.getBoolean("OPEN_AFTER_DELAY", false);
    int singleClickMethod = openOnSingleClick ? OpenStrategy.SINGLE_CLICK : OpenStrategy.DOUBLE_CLICK;
    if (openOnSingleClick) {
        if (selectOnHover) {
            singleClickMethod |= OpenStrategy.SELECT_ON_HOVER;
        }//from  ww w . j  av  a  2s  .  co  m
        if (openAfterDelay) {
            singleClickMethod |= OpenStrategy.ARROW_KEYS_OPEN;
        }
    }
    OpenStrategy.setOpenMethod(singleClickMethod);
}

From source file:org.eclipse.rcptt.tesla.recording.core.swt.JFaceRecordingProcessor.java

License:Open Source License

public void recordOpenStrategyEvent(OpenStrategy str, SelectionEvent e) {
    if (OpenStrategy.getOpenMethod() == OpenStrategy.SINGLE_CLICK) {
        if (e.widget != null) {
            FindResult element = getSWTProcessor().getLocator().findElement(e.widget, false, false, false);
            if (element != null) {
                ControlUIElement el = new ControlUIElement(element.element, getRecorder());
                el.click();//from www.  j  a  v a2 s  .  c om
            }
        }
    }
}

From source file:org.eclipse.ui.internal.dialogs.WorkbenchPreferencePage.java

License:Open Source License

/**
 * The user has pressed Ok. Store/apply this page's values appropriately.
 *//*from w  w  w. j  a v  a  2s. c  o  m*/
public boolean performOk() {
    IPreferenceStore store = getPreferenceStore();

    // store the keep cycle part dialogs sticky preference
    store.setValue(IPreferenceConstants.STICKY_CYCLE, stickyCycleButton.getSelection());
    store.setValue(IPreferenceConstants.OPEN_ON_SINGLE_CLICK, openOnSingleClick);
    store.setValue(IPreferenceConstants.SELECT_ON_HOVER, selectOnHover);
    store.setValue(IPreferenceConstants.OPEN_AFTER_DELAY, openAfterDelay);
    store.setValue(IPreferenceConstants.RUN_IN_BACKGROUND, showUserDialogButton.getSelection());
    store.setValue(IPreferenceConstants.WORKBENCH_SAVE_INTERVAL, saveInterval.getIntValue());
    PrefUtil.getAPIPreferenceStore().setValue(IWorkbenchPreferenceConstants.SHOW_MEMORY_MONITOR,
            showHeapStatusButton.getSelection());
    updateHeapStatus(showHeapStatusButton.getSelection());

    int singleClickMethod = openOnSingleClick ? OpenStrategy.SINGLE_CLICK : OpenStrategy.DOUBLE_CLICK;
    if (openOnSingleClick) {
        if (selectOnHover) {
            singleClickMethod |= OpenStrategy.SELECT_ON_HOVER;
        }
        if (openAfterDelay) {
            singleClickMethod |= OpenStrategy.ARROW_KEYS_OPEN;
        }
    }
    OpenStrategy.setOpenMethod(singleClickMethod);

    PrefUtil.savePrefs();
    return true;
}