Example usage for org.eclipse.jface.action IMenuManager isVisible

List of usage examples for org.eclipse.jface.action IMenuManager isVisible

Introduction

In this page you can find the example usage for org.eclipse.jface.action IMenuManager isVisible.

Prototype

boolean isVisible();

Source Link

Document

Returns whether this contribution item is visibile within its manager.

Usage

From source file:com.aptana.ide.editors.unified.actions.UnifiedActionContributor.java

License:Open Source License

/**
 * Add actions to the editor's menus.//from w  ww  . j  av a 2  s .c o  m
 * 
 * @param menu
 */
public void contributeToMenu(IMenuManager menu) {
    if (fShowDocAction == null) {
        return;
    }

    super.contributeToMenu(menu);

    IMenuManager editMenu = menu.findMenuUsingPath(IWorkbenchActionConstants.M_EDIT);
    if (editMenu != null) {
        editMenu.appendToGroup(IWorkbenchActionConstants.MB_ADDITIONS, fShowDocAction);
        editMenu.add(this.fCodeFormatAction);
        editMenu.setVisible(true);
    }

    if (fOpenDeclarationAction != null) {
        IMenuManager navigateMenu = menu.findMenuUsingPath(IWorkbenchActionConstants.M_NAVIGATE);
        if (navigateMenu != null) {
            navigateMenu.appendToGroup(IWorkbenchActionConstants.OPEN_EXT, fOpenDeclarationAction);
            navigateMenu.setVisible(true);
        }
    }

    if (fQuickOutlineAction != null) {
        IMenuManager navigateMenu = menu.findMenuUsingPath(IWorkbenchActionConstants.M_NAVIGATE);
        if (navigateMenu != null) {
            navigateMenu.appendToGroup(IWorkbenchActionConstants.OPEN_EXT, fQuickOutlineAction);
            navigateMenu.setVisible(true);
        }
    }

    IMenuManager gotoMenu = menu.findMenuUsingPath("navigate/goTo"); //$NON-NLS-1$
    if (gotoMenu != null) {
        gotoMenu.add(new Separator("additions2")); //$NON-NLS-1$
        gotoMenu.appendToGroup("additions2", fGotoMatchingBracket); //$NON-NLS-1$
        if (!gotoMenu.isVisible())
            gotoMenu.setVisible(true);
    }

}

From source file:ext.org.eclipse.jdt.internal.ui.actions.CategoryFilterActionGroup.java

License:Open Source License

public void contributeToViewMenu(IMenuManager menuManager) {
    menuManager.add(new Separator(CATEGORY_MENU_GROUP_NAME));
    menuManager.appendToGroup(CATEGORY_MENU_GROUP_NAME, fMenuAction);
    fMenuListener = new IMenuListener() {
        public void menuAboutToShow(IMenuManager manager) {
            if (!manager.isVisible())
                return;
            updateMenu(manager);/*w  w w . ja  v  a 2s  .c om*/
        }
    };
    menuManager.addMenuListener(fMenuListener);
    fMenuManager = menuManager;
}

From source file:net.enilink.komma.edit.ui.action.ActionMenuManager.java

License:Open Source License

public void updateAll(boolean force) {
    update(force);/*from  www  .j a  v  a2s .  co  m*/

    IContributionItem[] items = getRealItems();
    for (int i = 0; i < items.length; ++i) {
        IContributionItem ci = items[i];
        if (ci instanceof IMenuManager) {
            IMenuManager mm = (IMenuManager) ci;
            if (mm.isVisible()) {
                mm.updateAll(force);
            }
        }
    }
}

From source file:net.refractions.udig.project.ui.internal.tool.display.ToolManager.java

License:Open Source License

/**
 * Used to contribute Tools to the provided menu manger.
 * <p>//from   w  w w .  ja v  a  2 s  .c o m
 * The following contributions are made:
 * <ul>
 * <li>navigate: forward and backward buttons
 * <li>map: an entry for each tool category
 * </ul>
 */
public void contributeToMenu(IMenuManager manager) {
    IMenuManager navigateMenu = manager.findMenuUsingPath(IWorkbenchActionConstants.M_NAVIGATE);

    if (navigateMenu == null) {
        // I would like to arrange for the Navigate menu to already
        // be in place before the ToolManager is kicked into action
        // (this is part of the missions to have uDig plugins walk
        //  softly when being hosted in other RCP applications)
        // See UDIGActionBarAdvisor for hosting requirements.
        navigateMenu = new MenuManager(Messages.ToolManager_menu_manager_title,
                IWorkbenchActionConstants.M_NAVIGATE);

        IContributionItem additions = manager.find(IWorkbenchActionConstants.MB_ADDITIONS);
        if (additions == null || !(additions instanceof GroupMarker)) {
            manager.add(navigateMenu);
        } else {
            manager.appendToGroup(IWorkbenchActionConstants.MB_ADDITIONS, navigateMenu);
        }
        navigateMenu.add(new GroupMarker(IWorkbenchActionConstants.NAV_START));
        navigateMenu.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
        navigateMenu.add(new GroupMarker(IWorkbenchActionConstants.NAV_END));
    }
    IWorkbench workbench = PlatformUI.getWorkbench();
    IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
    // we are using the global BACK and FORWARD actions here
    // and will register "handlers" for these commands 
    navigateMenu.appendToGroup(IWorkbenchActionConstants.NAV_END, ActionFactory.BACK.create(window));
    navigateMenu.appendToGroup(IWorkbenchActionConstants.NAV_END, ActionFactory.FORWARD.create(window));

    if (!manager.isVisible()) {
        // since this is the top level menu bar why would it not be visible?
        manager.setVisible(true);
    }
    IMenuManager mapMenu = manager.findMenuUsingPath("map");
    if (mapMenu == null) {
        // Once again the hosting RCP application should of provided
        // us with a Map menu; but let's be careful and make our own here
        // if needed.
        // See UDIGActionBarAdvisor for hosting requirements.
        mapMenu = new MenuManager(Messages.ToolManager_menu_manager_title, "map");
        manager.add(mapMenu);
        mapMenu.add(new GroupMarker("mapStart"));
        mapMenu.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
        mapMenu.add(new GroupMarker("mapEnd"));
    }
    // churn through each category and add stuff as needed
    // note we check with the cmdService to see what we if the actionSet
    // associated with this cateogry is turned on by the
    // current perspective.
    for (MenuToolCategory category : menuCategories) {
        category.contribute(manager);
    }
}

From source file:org.eclipse.gmf.runtime.gef.ui.internal.actions.MenuManagerEx.java

License:Open Source License

/**
 * Incrementally builds the menu from the contribution items.
 * This method leaves out double separators and separators in the first 
 * or last position./*from  w ww .ja  v  a 2 s  .co  m*/
 *
 * @param force <code>true</code> means update even if not dirty,
 *   and <code>false</code> for normal incremental updating
 * @param recursive <code>true</code> means recursively update 
 *   all submenus, and <code>false</code> means just this menu
 */
protected void update(boolean force, boolean recursive) {
    if (isDirty() || force) {
        if (menu != null && !menu.isDisposed()) {

            // clean contains all active items without double separators
            IContributionItem[] items = getItems();
            List clean = new ArrayList(items.length);
            IContributionItem separator = null;
            for (int i = 0; i < items.length; ++i) {
                IContributionItem ci = items[i];
                if (!shouldDisplay(ci)) {
                    continue;
                }
                if (ci.isSeparator()) {
                    // delay creation until necessary 
                    // (handles both adjacent separators, and separator at end)
                    separator = ci;
                } else {
                    if (separator != null) {
                        if (clean.size() > 0) // no separator if first item
                            clean.add(separator);
                        separator = null;
                    }
                    clean.add(ci);
                }
            }

            // remove obsolete (removed or non active)
            Item[] mi = menu.getItems();
            for (int i = 0; i < mi.length; i++) {
                Object data = mi[i].getData();
                if (data == null || !clean.contains(data)
                        || (data instanceof IContributionItem && ((IContributionItem) data).isDynamic()))
                    mi[i].dispose();
            }

            // add new
            mi = menu.getItems();
            int srcIx = 0;
            int destIx = 0;
            for (Iterator e = clean.iterator(); e.hasNext();) {
                IContributionItem src = (IContributionItem) e.next();
                IContributionItem dest;

                // get corresponding item in SWT widget
                if (srcIx < mi.length)
                    dest = (IContributionItem) mi[srcIx].getData();
                else
                    dest = null;

                if (dest != null && src.equals(dest)) {
                    srcIx++;
                    destIx++;
                } else if (dest != null && dest.isSeparator() && src.isSeparator()) {
                    mi[srcIx].setData(src);
                    srcIx++;
                    destIx++;
                } else {
                    int start = menu.getItemCount();
                    src.fill(menu, destIx);
                    int newItems = menu.getItemCount() - start;
                    Item[] tis = menu.getItems();
                    for (int i = 0; i < newItems; i++)
                        tis[destIx + i].setData(src);
                    destIx += newItems;
                }

                // May be we can optimize this call. If the menu has just
                // been created via the call src.fill(fMenuBar, destIx) then
                // the menu has already been updated with update(true) 
                // (see MenuManager). So if force is true we do it again. But
                // we can't set force to false since then information for the
                // sub sub menus is lost.
                if (recursive) {
                    if (src instanceof IMenuManager)
                        ((IMenuManager) src).updateAll(force);
                }

            }

            setDirty(false);

            updateMenuItem();
        }
    } else {
        // I am not dirty. Check if I must recursivly walk down the hierarchy.
        if (recursive) {
            IContributionItem[] items = getItems();
            for (int i = 0; i < items.length; ++i) {
                IContributionItem ci = items[i];
                if (ci instanceof IMenuManager) {
                    IMenuManager mm = (IMenuManager) ci;
                    if (mm.isVisible()) {
                        mm.updateAll(force);
                    }
                }
            }
        }
    }
}

From source file:org.infoglue.igide.view.actions.ActionsHandler.java

License:Open Source License

private void hookContextMenu() {
    Logger.logConsole("hookContextMenu");
    MenuManager menuMgr = new MenuManager("#PopupMenu");
    menuMgr.setRemoveAllWhenShown(true);
    menuMgr.addMenuListener(new IMenuListener() {
        public void menuAboutToShow(IMenuManager manager) {
            try {
                ISelection selection = viewer.getSelection();
                Logger.logConsole("selection:" + selection);
                ContentNode node = (ContentNode) ((IStructuredSelection) selection).getFirstElement();
                Logger.logConsole("node:" + node);
                fillContextMenu(node, manager);
            } catch (Exception e) {
                Logger.logConsole("Error:" + e.getMessage());
            } finally {
                fillContextMenu(manager);
            }/*from ww  w  .  j a v  a2  s .  c om*/
            Logger.logConsole("Ready to show:" + manager);
            Logger.logConsole("Ready to show:" + manager.getItems());
            Logger.logConsole("Ready to show:" + manager.getItems() + ":" + manager.isVisible());
        }
    });
    Menu menu = menuMgr.createContextMenu(viewer.getControl());
    Logger.logConsole("menu:" + menu);
    viewer.getControl().setMenu(menu);
    Logger.logConsole("viewer:" + viewer);
    viewPart.getSite().registerContextMenu(menuMgr, viewPart.getSite().getSelectionProvider());
    viewPart.getSite().registerContextMenu(menuMgr, viewer);
    Logger.logConsole("Site:" + viewPart.getSite() + ":" + viewPart.getSite().getRegisteredName());
}