List of usage examples for org.eclipse.jface.action MenuManager markDirty
@Override public void markDirty()
MenuManager implementation of this ContributionManager method also propagates the dirty flag up the parent chain. From source file:net.yatomiya.e4.ui.workbench.renderers.swt.ContributionRecord.java
License:Open Source License
/** * @param context//w w w .j a v a2s. co m */ public void updateVisibility(IEclipseContext context) { ExpressionContext exprContext = new ExpressionContext(context); updateIsVisible(exprContext); HashSet<ContributionRecord> recentlyUpdated = new HashSet<>(); recentlyUpdated.add(this); boolean changed = false; for (MMenuElement item : generatedElements) { boolean currentVisibility = computeVisibility(recentlyUpdated, item, exprContext); if (item.isVisible() != currentVisibility) { changed = true; item.setVisible(currentVisibility); } } for (MMenuElement item : sharedElements) { boolean currentVisibility = computeVisibility(recentlyUpdated, item, exprContext); if (item.isVisible() != currentVisibility) { changed = true; item.setVisible(currentVisibility); } } if (changed) { MenuManager manager = getManagerForModel(); if (manager != null) { manager.markDirty(); } } }
From source file:net.yatomiya.e4.ui.workbench.renderers.swt.MenuManagerRenderer.java
License:Open Source License
@Override public Object createWidget(MUIElement element, Object parent) { if (!(element instanceof MMenu)) return null; final MMenu menuModel = (MMenu) element; Menu newMenu = null;//from www.j a v a 2s. c o m MenuManager menuManager = null; boolean menuBar = false; if (parent instanceof Decorations) { MUIElement container = (MUIElement) ((EObject) element).eContainer(); if (container instanceof MWindow) { menuManager = getManager(menuModel); if (menuManager == null) { menuManager = new MenuManager(NO_LABEL, menuModel.getElementId()); linkModelToManager(menuModel, menuManager); } newMenu = menuManager.createMenuBar((Decorations) parent); ((Decorations) parent).setMenuBar(newMenu); newMenu.setData(menuManager); menuBar = true; } else { menuManager = getManager(menuModel); if (menuManager == null) { menuManager = new MenuManager(NO_LABEL, menuModel.getElementId()); linkModelToManager(menuModel, menuManager); } newMenu = menuManager.createContextMenu((Control) parent); // we can't be sure this is the correct parent. // ((Control) parent).setMenu(newMenu); newMenu.setData(menuManager); } } else if (parent instanceof Menu) { // Object data = ((Menu) parent).getData(); logger.debug(new Exception(), "Trying to render a sub menu " //$NON-NLS-1$ + menuModel + "\n\t" + parent); //$NON-NLS-1$ return null; } else if (parent instanceof Control) { menuManager = getManager(menuModel); if (menuManager == null) { menuManager = new MenuManager(NO_LABEL, menuModel.getElementId()); linkModelToManager(menuModel, menuManager); } newMenu = menuManager.createContextMenu((Control) parent); // we can't be sure this is the correct parent. // ((Control) parent).setMenu(newMenu); if (element instanceof MPopupMenu && element.isVisible()) { Object data = getUIContainer(element); if (data instanceof Control && parent.equals(data)) { ((Control) parent).setMenu(newMenu); } } newMenu.setData(menuManager); } if (menuManager != null && !menuManager.getRemoveAllWhenShown()) { processContributions(menuModel, menuModel.getElementId(), menuBar, menuModel instanceof MPopupMenu); } if (newMenu != null) { newMenu.addDisposeListener(new DisposeListener() { @Override public void widgetDisposed(DisposeEvent e) { cleanUp(menuModel); MenuManager manager = getManager(menuModel); if (manager != null) { manager.markDirty(); } } }); } return newMenu; }
From source file:net.yatomiya.e4.ui.workbench.renderers.swt.MenuManagerRenderer.java
License:Open Source License
/** * @param menuManager//from ww w . j a va 2 s . co m * @param element * @param evalContext */ public static void updateVisibility(MenuManager menuManager, MMenuElement element, ExpressionContext evalContext) { boolean current = element.isVisible(); boolean visible = true; boolean evaluated = false; if (element.getPersistedState().get(VISIBILITY_IDENTIFIER) != null) { evaluated = true; String identifier = element.getPersistedState().get(VISIBILITY_IDENTIFIER); Object rc = evalContext.eclipseContext.get(identifier); if (rc instanceof Boolean) { visible = ((Boolean) rc).booleanValue(); } } if (visible && (element.getVisibleWhen() instanceof MCoreExpression)) { evaluated = true; visible = ContributionsAnalyzer.isVisible((MCoreExpression) element.getVisibleWhen(), evalContext); } if (evaluated && visible != current) { element.setVisible(visible); menuManager.markDirty(); } }
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 w w. j a v a 2 s. c om*/ * 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. * // ww w. ja va2 s . c om * @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.workbench.renderers.swt.ContributionRecord.java
License:Open Source License
/** * @param context// w w w . j a va 2 s . c om */ public void updateVisibility(IEclipseContext context) { ExpressionContext exprContext = new ExpressionContext(context); updateIsVisible(exprContext); HashSet<ContributionRecord> recentlyUpdated = new HashSet<ContributionRecord>(); recentlyUpdated.add(this); boolean changed = false; for (MMenuElement item : generatedElements) { boolean currentVisibility = computeVisibility(recentlyUpdated, item, exprContext); if (item.isVisible() != currentVisibility) { changed = true; item.setVisible(currentVisibility); } } for (MMenuElement item : sharedElements) { boolean currentVisibility = computeVisibility(recentlyUpdated, item, exprContext); if (item.isVisible() != currentVisibility) { changed = true; item.setVisible(currentVisibility); } } if (changed) { MenuManager manager = getManagerForModel(); if (manager != null) { manager.markDirty(); } } }
From source file:org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerRenderer.java
License:Open Source License
/** * @param menuManager/*from www .j a va 2s.c om*/ * @param element * @param evalContext */ public static void updateVisibility(MenuManager menuManager, MMenuElement element, ExpressionContext evalContext) { if (!(element.getVisibleWhen() instanceof MCoreExpression)) { return; } boolean val = ContributionsAnalyzer.isVisible((MCoreExpression) element.getVisibleWhen(), evalContext); if (val != element.isVisible()) { element.setVisible(val); menuManager.markDirty(); } }