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

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

Introduction

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

Prototype

@Override
    public boolean isVisible() 

Source Link

Usage

From source file:net.yatomiya.e4.ui.workbench.renderers.swt.MenuManagerRenderer.java

License:Open Source License

/**
 * @param menuManager//ww  w  . j av  a  2  s  . c o  m
 * @param menuModel
 */
public void reconcileManagerToModel(MenuManager menuManager, MMenu menuModel) {
    List<MMenuElement> modelChildren = menuModel.getChildren();

    HashSet<MMenuItem> oldModelItems = new HashSet<>();
    HashSet<MMenu> oldMenus = new HashSet<>();
    HashSet<MMenuSeparator> oldSeps = new HashSet<>();
    for (MMenuElement itemModel : modelChildren) {
        if (OpaqueElementUtil.isOpaqueMenuSeparator(itemModel)) {
            oldSeps.add((MMenuSeparator) itemModel);
        } else if (OpaqueElementUtil.isOpaqueMenuItem(itemModel)) {
            oldModelItems.add((MMenuItem) itemModel);
        } else if (OpaqueElementUtil.isOpaqueMenu(itemModel)) {
            oldMenus.add((MMenu) itemModel);
        }
    }

    IContributionItem[] items = menuManager.getItems();
    for (int src = 0, dest = 0; src < items.length; src++, dest++) {
        IContributionItem item = items[src];

        if (item instanceof SubContributionItem) {
            // get the wrapped contribution item
            item = ((SubContributionItem) item).getInnerItem();
        }

        if (item instanceof MenuManager) {
            MenuManager childManager = (MenuManager) item;
            MMenu childModel = getMenuModel(childManager);
            if (childModel == null) {
                MMenu legacyModel = OpaqueElementUtil.createOpaqueMenu();
                legacyModel.setElementId(childManager.getId());
                legacyModel.setVisible(childManager.isVisible());
                legacyModel.setLabel(childManager.getMenuText());

                linkModelToManager(legacyModel, childManager);
                OpaqueElementUtil.setOpaqueItem(legacyModel, childManager);
                if (modelChildren.size() > dest) {
                    modelChildren.add(dest, legacyModel);
                } else {
                    modelChildren.add(legacyModel);
                }
                reconcileManagerToModel(childManager, legacyModel);
            } else {
                if (OpaqueElementUtil.isOpaqueMenu(childModel)) {
                    oldMenus.remove(childModel);
                }
                if (modelChildren.size() > dest) {
                    if (modelChildren.get(dest) != childModel) {
                        modelChildren.remove(childModel);
                        modelChildren.add(dest, childModel);
                    }
                } else {
                    modelChildren.add(childModel);
                }
                if (childModel instanceof MPopupMenu) {
                    if (((MPopupMenu) childModel).getContext() == null) {
                        IEclipseContext lclContext = getContext(menuModel);
                        if (lclContext != null) {
                            ((MPopupMenu) childModel)
                                    .setContext(lclContext.createChild(childModel.getElementId()));
                        }
                    }
                }

                if (childModel.getChildren().size() != childManager.getSize()) {
                    reconcileManagerToModel(childManager, childModel);
                }
            }
        } else if (item.isSeparator() || item.isGroupMarker()) {
            MMenuElement menuElement = getMenuElement(item);
            if (menuElement == null) {
                MMenuSeparator legacySep = OpaqueElementUtil.createOpaqueMenuSeparator();
                legacySep.setElementId(item.getId());
                legacySep.setVisible(item.isVisible());
                OpaqueElementUtil.setOpaqueItem(legacySep, item);
                linkModelToContribution(legacySep, item);
                if (modelChildren.size() > dest) {
                    modelChildren.add(dest, legacySep);
                } else {
                    modelChildren.add(legacySep);
                }
            } else if (OpaqueElementUtil.isOpaqueMenuSeparator(menuElement)) {
                MMenuSeparator legacySep = (MMenuSeparator) menuElement;
                oldSeps.remove(legacySep);
                if (modelChildren.size() > dest) {
                    if (modelChildren.get(dest) != legacySep) {
                        modelChildren.remove(legacySep);
                        modelChildren.add(dest, legacySep);
                    }
                } else {
                    modelChildren.add(legacySep);
                }
            }
        } else {
            MMenuElement menuElement = getMenuElement(item);
            if (menuElement == null) {
                MMenuItem legacyItem = OpaqueElementUtil.createOpaqueMenuItem();
                legacyItem.setElementId(item.getId());
                legacyItem.setVisible(item.isVisible());
                OpaqueElementUtil.setOpaqueItem(legacyItem, item);
                linkModelToContribution(legacyItem, item);
                if (modelChildren.size() > dest) {
                    modelChildren.add(dest, legacyItem);
                } else {
                    modelChildren.add(legacyItem);
                }
            } else if (OpaqueElementUtil.isOpaqueMenuItem(menuElement)) {
                MMenuItem legacyItem = (MMenuItem) menuElement;
                oldModelItems.remove(legacyItem);
                if (modelChildren.size() > dest) {
                    if (modelChildren.get(dest) != legacyItem) {
                        modelChildren.remove(legacyItem);
                        modelChildren.add(dest, legacyItem);
                    }
                } else {
                    modelChildren.add(legacyItem);
                }
            }
        }
    }
    if (!oldModelItems.isEmpty()) {
        modelChildren.removeAll(oldModelItems);
        for (MMenuItem model : oldModelItems) {
            IContributionItem ici = (IContributionItem) OpaqueElementUtil.getOpaqueItem(model);
            clearModelToContribution(model, ici);
        }
    }
    if (!oldMenus.isEmpty()) {
        modelChildren.removeAll(oldMenus);
        for (MMenu oldMenu : oldMenus) {
            MenuManager oldManager = getManager(oldMenu);
            clearModelToManager(oldMenu, oldManager);
        }
    }
    if (!oldSeps.isEmpty()) {
        modelChildren.removeAll(oldSeps);
        for (MMenuSeparator model : oldSeps) {
            IContributionItem item = (IContributionItem) OpaqueElementUtil.getOpaqueItem(model);
            clearModelToContribution(model, item);
        }
    }
}

From source file:net.yatomiya.e4.ui.workbench.renderers.swt.StackRenderer.java

License:Open Source License

/**
 * Determine whether the given view menu has any visible menu items.
 *
 * @param viewMenu/*from w  ww .ja v  a 2 s .c  o m*/
 *            the view menu to check
 * @param part
 *            the view menu's parent part
 * @return <tt>true</tt> if the specified view menu has visible children,
 *         <tt>false</tt> otherwise
 */
private boolean hasVisibleMenuItems(MMenu viewMenu, MPart part) {
    if (!viewMenu.isToBeRendered() || !viewMenu.isVisible()) {
        return false;
    }

    for (MMenuElement menuElement : viewMenu.getChildren()) {
        if (menuElement.isToBeRendered() && menuElement.isVisible()) {
            if (OpaqueElementUtil.isOpaqueMenuItem(menuElement)
                    || OpaqueElementUtil.isOpaqueMenuSeparator(menuElement)) {
                IContributionItem item = (IContributionItem) OpaqueElementUtil.getOpaqueItem(menuElement);
                if (item != null && item.isVisible()) {
                    return true;
                }
            } else {
                return true;
            }
        }
    }

    Object menuRenderer = viewMenu.getRenderer();
    if (menuRenderer instanceof MenuManagerRenderer) {
        MenuManager manager = ((MenuManagerRenderer) menuRenderer).getManager(viewMenu);
        if (manager != null && manager.isVisible()) {
            return true;
        }
    }

    Control control = (Control) part.getWidget();
    if (control != null) {
        Menu menu = (Menu) renderer.createGui(viewMenu, control.getShell(), part.getContext());
        if (menu != null) {
            menuRenderer = viewMenu.getRenderer();
            if (menuRenderer instanceof MenuManagerRenderer) {
                MenuManagerRenderer menuManagerRenderer = (MenuManagerRenderer) menuRenderer;
                MenuManager manager = menuManagerRenderer.getManager(viewMenu);
                if (manager != null) {
                    // remark ourselves as dirty so that the menu will be
                    // reconstructed
                    manager.markDirty();
                }
            }
            return menu.getItemCount() != 0;
        }
    }
    return false;
}

From source file:org.eclipse.e4.demo.split.renderer.swt.SplitStackRenderer.java

License:Open Source License

/**
 * Determine whether the given view menu has any visible menu items.
 * //from   w w w.  ja  v  a  2 s .c o m
 * @param viewMenu
 *            the view menu to check
 * @param part
 *            the view menu's parent part
 * @return <tt>true</tt> if the specified view menu has visible children,
 *         <tt>false</tt> otherwise
 */
private boolean hasVisibleMenuItems(MMenu viewMenu, MPart part) {
    if (!viewMenu.isToBeRendered() || !viewMenu.isVisible()) {
        return false;
    }

    for (MMenuElement menuElement : viewMenu.getChildren()) {
        if (menuElement.isToBeRendered() && menuElement.isVisible()) {
            if (menuElement instanceof MOpaqueMenuItem) {
                IContributionItem item = (IContributionItem) ((MOpaqueMenuItem) menuElement).getOpaqueItem();
                if (item != null && item.isVisible()) {
                    return true;
                }
            } else if (menuElement instanceof MOpaqueMenuSeparator) {
                IContributionItem item = (IContributionItem) ((MOpaqueMenuSeparator) menuElement)
                        .getOpaqueItem();
                if (item != null && item.isVisible()) {
                    return true;
                }
            } else {
                return true;
            }
        }
    }

    Object menuRenderer = viewMenu.getRenderer();
    if (menuRenderer instanceof MenuManagerRenderer) {
        MenuManager manager = ((MenuManagerRenderer) menuRenderer).getManager(viewMenu);
        if (manager != null && manager.isVisible()) {
            return true;
        }
    }

    Control control = (Control) part.getWidget();
    if (control != null) {
        Menu menu = (Menu) renderer.createGui(viewMenu, control.getShell(), part.getContext());
        if (menu != null) {
            menuRenderer = viewMenu.getRenderer();
            if (menuRenderer instanceof MenuManagerRenderer) {
                MenuManagerRenderer menuManagerRenderer = (MenuManagerRenderer) menuRenderer;
                MenuManager manager = menuManagerRenderer.getManager(viewMenu);
                if (manager != null) {
                    // remark ourselves as dirty so that the menu will be
                    // reconstructed
                    manager.markDirty();
                }
            }
            return menu.getItemCount() != 0;
        }
    }
    return false;
}

From source file:org.eclipse.e4.ui.tests.workbench.MMenuItemTest.java

License:Open Source License

public void testMenuBarVisibility() throws Exception {
    MWindow window = BasicFactoryImpl.eINSTANCE.createWindow();
    MMenu menuBar = MenuFactoryImpl.eINSTANCE.createMenu();
    menuBar.setElementId("org.eclipse.ui.main.menu");
    window.setMainMenu(menuBar);// w ww.ja va 2  s.  c  o  m

    MMenu fileMenu = MenuFactoryImpl.eINSTANCE.createMenu();
    fileMenu.setElementId("file");
    fileMenu.setLabel("File");
    menuBar.getChildren().add(fileMenu);

    MMenuItem item1 = MenuFactoryImpl.eINSTANCE.createDirectMenuItem();
    item1.setElementId("item1");
    item1.setLabel("item1");
    fileMenu.getChildren().add(item1);

    MMenuSeparator sep = MenuFactoryImpl.eINSTANCE.createMenuSeparator();
    sep.setElementId("group1");
    fileMenu.getChildren().add(sep);

    MMenuItem item2 = MenuFactoryImpl.eINSTANCE.createDirectMenuItem();
    item2.setElementId("item2");
    item2.setLabel("item2");
    fileMenu.getChildren().add(item2);

    MApplication application = ApplicationFactoryImpl.eINSTANCE.createApplication();
    application.getChildren().add(window);
    application.setContext(appContext);
    appContext.set(MApplication.class.getName(), application);
    createMenuContribution(application);

    wb = new E4Workbench(window, appContext);
    wb.createAndRunUI(window);

    MenuManagerRenderer renderer = getRenderer(appContext, menuBar);
    MenuManager manager = renderer.getManager(menuBar);
    manager.updateAll(true);

    assertEquals(2, manager.getSize());

    MenuManager vanishManager = (MenuManager) manager.getItems()[1];
    assertEquals("vanish", vanishManager.getId());

    assertFalse(vanishManager.isVisible());
    assertNull(vanishManager.getMenu());

    appContext.set("mmc1", Boolean.TRUE);

    assertTrue(vanishManager.isVisible());
    assertNotNull(vanishManager.getMenu());

    appContext.remove("mmc1");

    assertFalse(vanishManager.isVisible());
    Menu vanishMenu = vanishManager.getMenu();
    if (vanishMenu != null) {
        assertTrue(vanishMenu.isDisposed());
    }

    appContext.set("mmc1", Boolean.TRUE);

    assertTrue(vanishManager.isVisible());
    assertNotNull(vanishManager.getMenu());
    assertFalse(vanishManager.getMenu().isDisposed());
}

From source file:org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerRenderer.java

License:Open Source License

/**
 * @param menuManager/*from  www .  j  av a 2s.  c o  m*/
 * @param menuModel
 */
public void reconcileManagerToModel(MenuManager menuManager, MMenu menuModel) {
    List<MMenuElement> modelChildren = menuModel.getChildren();

    HashSet<MOpaqueMenuItem> oldModelItems = new HashSet<MOpaqueMenuItem>();
    HashSet<MOpaqueMenu> oldMenus = new HashSet<MOpaqueMenu>();
    HashSet<MOpaqueMenuSeparator> oldSeps = new HashSet<MOpaqueMenuSeparator>();
    for (MMenuElement itemModel : modelChildren) {
        if (itemModel instanceof MOpaqueMenuSeparator) {
            oldSeps.add((MOpaqueMenuSeparator) itemModel);
        } else if (itemModel instanceof MOpaqueMenuItem) {
            oldModelItems.add((MOpaqueMenuItem) itemModel);
        } else if (itemModel instanceof MOpaqueMenu) {
            oldMenus.add((MOpaqueMenu) itemModel);
        }
    }

    IContributionItem[] items = menuManager.getItems();
    for (int src = 0, dest = 0; src < items.length; src++, dest++) {
        IContributionItem item = items[src];
        if (item instanceof MenuManager) {
            MenuManager childManager = (MenuManager) item;
            MMenu childModel = getMenuModel(childManager);
            if (childModel == null) {
                MMenu legacyModel = MenuFactoryImpl.eINSTANCE.createOpaqueMenu();
                legacyModel.setElementId(childManager.getId());
                legacyModel.setVisible(childManager.isVisible());
                linkModelToManager(legacyModel, childManager);
                modelChildren.add(dest, legacyModel);
                reconcileManagerToModel(childManager, legacyModel);
            } else {
                if (childModel instanceof MOpaqueMenu) {
                    oldMenus.remove(childModel);
                }
                if (modelChildren.size() > dest) {
                    if (modelChildren.get(dest) != childModel) {
                        modelChildren.remove(childModel);
                        modelChildren.add(dest, childModel);
                    }
                } else {
                    modelChildren.add(childModel);
                }
                if (childModel instanceof MPopupMenu) {
                    if (((MPopupMenu) childModel).getContext() == null) {
                        IEclipseContext lclContext = getContext(menuModel);
                        if (lclContext != null) {
                            ((MPopupMenu) childModel)
                                    .setContext(lclContext.createChild(childModel.getElementId()));
                        }
                    }
                }
            }
        } else if (item.isSeparator() || item.isGroupMarker()) {
            MMenuElement menuElement = getMenuElement(item);
            if (menuElement == null) {
                MOpaqueMenuSeparator legacySep = MenuFactoryImpl.eINSTANCE.createOpaqueMenuSeparator();
                legacySep.setElementId(item.getId());
                legacySep.setVisible(item.isVisible());
                legacySep.setOpaqueItem(item);
                linkModelToContribution(legacySep, item);
                modelChildren.add(dest, legacySep);
            } else if (menuElement instanceof MOpaqueMenuSeparator) {
                MOpaqueMenuSeparator legacySep = (MOpaqueMenuSeparator) menuElement;
                oldSeps.remove(legacySep);
                if (modelChildren.size() > dest) {
                    if (modelChildren.get(dest) != legacySep) {
                        modelChildren.remove(legacySep);
                        modelChildren.add(dest, legacySep);
                    }
                } else {
                    modelChildren.add(legacySep);
                }
            }
        } else {
            MMenuElement menuElement = getMenuElement(item);
            if (menuElement == null) {
                MOpaqueMenuItem legacyItem = MenuFactoryImpl.eINSTANCE.createOpaqueMenuItem();
                legacyItem.setElementId(item.getId());
                legacyItem.setVisible(item.isVisible());
                legacyItem.setOpaqueItem(item);
                linkModelToContribution(legacyItem, item);
                modelChildren.add(dest, legacyItem);
            } else if (menuElement instanceof MOpaqueMenuItem) {
                MOpaqueMenuItem legacyItem = (MOpaqueMenuItem) menuElement;
                oldModelItems.remove(legacyItem);
                if (modelChildren.size() > dest) {
                    if (modelChildren.get(dest) != legacyItem) {
                        modelChildren.remove(legacyItem);
                        modelChildren.add(dest, legacyItem);
                    }
                } else {
                    modelChildren.add(legacyItem);
                }
            }
        }
    }
    if (!oldModelItems.isEmpty()) {
        modelChildren.removeAll(oldModelItems);
        for (MOpaqueMenuItem model : oldModelItems) {
            clearModelToContribution(model, (IContributionItem) model.getOpaqueItem());
        }
    }
    if (!oldMenus.isEmpty()) {
        modelChildren.removeAll(oldMenus);
        for (MOpaqueMenu oldMenu : oldMenus) {
            MenuManager oldManager = getManager(oldMenu);
            clearModelToManager(oldMenu, oldManager);
        }
    }
    if (!oldSeps.isEmpty()) {
        modelChildren.removeAll(oldSeps);
        for (MOpaqueMenuSeparator model : oldSeps) {
            clearModelToContribution(model, (IContributionItem) model.getOpaqueItem());
        }
    }
}

From source file:org.eclipse.mylyn.tasks.tests.TaskListUiTest.java

License:Open Source License

/**
 * Tests visibility of SubMenuManager/*  w  ww.j  av  a2  s  .c o  m*/
 */
public void testVisibilityOfSubMenuManager() {
    //setup
    MoveToCategoryMenuContributor moveToMenuContrib = new MoveToCategoryMenuContributor();
    MenuManager menuManager = null;
    List<IRepositoryElement> selectedElements = new Vector<IRepositoryElement>();
    selectedElements.add(cat1task1);

    List<IRepositoryElement> emptySelection = new Vector<IRepositoryElement>();

    List<IRepositoryElement> categorySelection = new Vector<IRepositoryElement>();
    categorySelection.add(cat1);

    List<IRepositoryElement> querySelection = new Vector<IRepositoryElement>();
    querySelection.add(new MockRepositoryQuery("query", null));

    //execute system under test & assert
    menuManager = moveToMenuContrib.getSubMenuManager(selectedElements);
    assertTrue(menuManager.isVisible());

    menuManager = null;
    menuManager = moveToMenuContrib.getSubMenuManager(emptySelection);
    assertFalse(menuManager.isVisible());

    menuManager = null;
    menuManager = moveToMenuContrib.getSubMenuManager(categorySelection);
    assertFalse(menuManager.isVisible());

    menuManager = null;
    menuManager = moveToMenuContrib.getSubMenuManager(querySelection);
    assertFalse(menuManager.isVisible());

    //teardown
}

From source file:org.eclipse.oomph.setup.presentation.SetupActionBarContributor.java

License:Open Source License

private void populateManagerEnablements(IContributionManager manager, String subMenuText, String insertBeforeID,
        final List<EnablementAction> additionalTasks) {
    int id = ++lastSubMenuID;
    String subMenuID = ENABLEMENT_ITEM_PREFIX + id;

    final MenuManager submenuManager = new MenuManager(subMenuText, subMenuID);
    submenuManager.addMenuListener(new IMenuListener() {
        public void menuAboutToShow(IMenuManager manager) {
            // Execute later in event loop to make sure the menu is visible when the first image is loaded.
            UIUtil.asyncExec(new Runnable() {
                public void run() {
                    final Queue<EnablementAction> queue = new ConcurrentLinkedQueue<EnablementAction>(
                            additionalTasks);
                    int jobs = Math.max(queue.size(), 10);

                    for (int i = 0; i < jobs; i++) {
                        Job iconLoader = new Job("IconLoader-" + i) {
                            @Override
                            protected IStatus run(IProgressMonitor monitor) {
                                EnablementAction action;
                                while ((action = queue.poll()) != null && submenuManager.isVisible()
                                        && !monitor.isCanceled()) {
                                    action.loadImage();
                                }/*from   w  w  w .j a  v  a  2 s.co m*/

                                return Status.OK_STATUS;
                            }
                        };

                        iconLoader.setSystem(true);
                        iconLoader.schedule();
                    }
                }
            });
        }
    });

    Collections.sort(additionalTasks, ACTION_COMPARATOR);
    populateManagerGen(submenuManager, additionalTasks, null);

    manager.insertBefore(insertBeforeID, submenuManager);
}

From source file:org.eclipse.riena.navigation.ui.swt.component.MenuCoolBarComposite.java

License:Open Source License

/**
 * Creates a top-level menu and adds it to the Riena menu bar.
 * /* w ww .jav  a 2  s.com*/
 * @param menuManager
 * @param listener
 */
private ToolItem createAndAddMenu(final MenuManager menuManager, final ToolBarMenuListener listener) {
    if (menuManager.isVisible()) {
        final ToolItem toolItem = new ToolItem(menuToolBar, SWT.CHECK);
        toolItem.setText(menuManager.getMenuText());
        final MenuManagerHelper helper = new MenuManagerHelper();
        final Menu menu = helper.createMenu(menuToolBar, toolItem, menuManager);
        toolItem.setData(MENU_DATA_KEY, menu);
        calcSize(menuCoolItem);
        toolItem.addSelectionListener(listener);
        return toolItem;
    }
    return null;
}