Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaurent Redor2018-01-19 09:13:18 +0000
committerLaurent Redor2018-04-20 07:58:53 +0000
commit41262564155c59570f6a40146313368797c7886e (patch)
treec82d6054eaf3ef3afaea995ada282f5becc50459
parentd94a1be54f6cbadd03a69b1dc9e2106057a1f2c2 (diff)
downloadorg.eclipse.sirius-41262564155c59570f6a40146313368797c7886e.tar.gz
org.eclipse.sirius-41262564155c59570f6a40146313368797c7886e.tar.xz
org.eclipse.sirius-41262564155c59570f6a40146313368797c7886e.zip
[529992] POC of Popup Menu and actions improvement concerning tabbar
This commit adds capability to add new contribution in tabbar. It is a POC and only "Select" dropdown menu is currently configured to accept contributions. To add a contribution in "Select" dropdown menu, a Popup Menu must be declared with documentation property equals to "tabbarPath=Select". Bug: 529992 Change-Id: Ifab82bed7a1c163a1f3dbcca9e885161211fb688 Signed-off-by: Laurent Redor <laurent.redor@obeo.fr>
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/AbstractMenuContributionItem.java21
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/SelectAllContributionItem.java66
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/TabbarFillerWithContributions.java9
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/contributions/TabbarContributionFactory.java19
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/menu/PopupMenuContribution.java174
5 files changed, 214 insertions, 75 deletions
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/AbstractMenuContributionItem.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/AbstractMenuContributionItem.java
index f2c6bc3b01..da9f785d96 100644
--- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/AbstractMenuContributionItem.java
+++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/AbstractMenuContributionItem.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010, 2014 THALES GLOBAL SERVICES and others.
+ * Copyright (c) 2010, 2018 THALES GLOBAL SERVICES and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -12,6 +12,7 @@ package org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar;
import java.util.Iterator;
import java.util.List;
+import java.util.Optional;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.gmf.runtime.notation.Diagram;
@@ -59,11 +60,7 @@ public abstract class AbstractMenuContributionItem extends AbstractTabbarContrib
private List<String> tooltips = Lists.newArrayList();
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.sirius.diagram.tools.internal.editor.tabbar.TabbarContribution#create(org.eclipse.swt.widgets.ToolBar)
- */
+ @Override
public void create(final ToolBarManager tb, String groupId) {
tb.insertAfter(groupId, createContributionItem(tb));
}
@@ -114,6 +111,7 @@ public abstract class AbstractMenuContributionItem extends AbstractTabbarContrib
listener = new MenuContributionItemArmListener(control);
menu.addListener(SWT.Show, new Listener() {
+ @Override
public void handleEvent(Event event) {
final Iterator<String> it = tooltips.iterator();
for (final MenuItem item : menu.getItems()) {
@@ -138,16 +136,23 @@ public abstract class AbstractMenuContributionItem extends AbstractTabbarContrib
if (menuManager != null) {
return menuManager;
}
-
- menuManager = new MenuManager();
+ // Use the tooltip, if it exists, as id for this menu manager. It can be reused to find it later.
+ String id = null;
+ Optional<String> tooltip = tooltips.stream().findFirst();
+ if (tooltip.isPresent()) {
+ id = tooltip.get();
+ }
+ menuManager = new MenuManager(id, id);
menuManager.setRemoveAllWhenShown(true);
menuManager.addMenuListener(new IMenuListener2() {
+ @Override
public void menuAboutToHide(IMenuManager manager) {
/* do nothing */
}
+ @Override
public void menuAboutToShow(IMenuManager manager) {
menuShow(manager);
}
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/SelectAllContributionItem.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/SelectAllContributionItem.java
new file mode 100644
index 0000000000..5df3a2b378
--- /dev/null
+++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/SelectAllContributionItem.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * Copyright (c) 2018 THALES GLOBAL SERVICES and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar;
+
+import org.eclipse.gmf.runtime.diagram.ui.actions.internal.SelectAllAction;
+import org.eclipse.gmf.runtime.diagram.ui.actions.internal.l10n.DiagramUIActionsMessages;
+import org.eclipse.gmf.runtime.diagram.ui.actions.internal.l10n.DiagramUIActionsPluginImages;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil;
+import org.eclipse.sirius.diagram.ui.provider.DiagramUIPlugin;
+import org.eclipse.sirius.diagram.ui.tools.internal.menu.PopupMenuContribution;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.IWorkbenchActionConstants;
+import org.eclipse.ui.IWorkbenchPage;
+
+/**
+ * Contribute a menu to tab bar to activate a specific SelectAll actions. This menu contains GMF global SelectAll
+ * actions plus SelectAll actions defined in the VSM. Currently, the action defined in the VSM is just for a POC.
+ *
+ * @author lredor
+ */
+public class SelectAllContributionItem extends AbstractMenuContributionItem {
+
+ /**
+ * Default constructor.
+ */
+ public SelectAllContributionItem() {
+ addTooltip(DiagramUIActionsMessages.SelectActionMenu_SelectDropDownTooltip);
+ }
+
+ @Override
+ protected Image getMenuImage() {
+ return DiagramUIPlugin.getPlugin().getImage(DiagramUIActionsPluginImages.DESC_SELECTALL);
+ }
+
+ @Override
+ protected String getLabel() {
+ // Add a menu named Select
+ return DiagramUIActionsMessages.SelectActionMenu_SelectDropDownText;
+ }
+
+ @Override
+ protected void menuShow(IMenuManager manager) {
+ IWorkbenchPage page = EclipseUIUtil.getActivePage();
+ // Add default GMF contributions
+ if (page != null) {
+ manager.add(SelectAllAction.createToolbarSelectAllAction(page));
+ manager.add(SelectAllAction.createToolbarSelectAllConnectionsAction(page));
+ manager.add(SelectAllAction.createToolbarSelectAllShapesAction(page));
+ }
+ // Add a default "additions" group
+ manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+ // Add potential select all actions contributed in VSM
+ PopupMenuContribution.contributeToPopupMenuProgrammatically(manager, part);
+ }
+
+}
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/TabbarFillerWithContributions.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/TabbarFillerWithContributions.java
index 49e676729f..422cc4b198 100644
--- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/TabbarFillerWithContributions.java
+++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/TabbarFillerWithContributions.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010, 2017 THALES GLOBAL SERVICES and others.
+ * Copyright (c) 2010, 2018 THALES GLOBAL SERVICES and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -22,6 +22,7 @@ import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.sirius.diagram.ui.edit.api.part.AbstractDDiagramEditPart;
import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.contributions.TabbarContributionFactory;
+import org.eclipse.sirius.diagram.ui.tools.internal.menu.PopupMenuContribution;
import org.eclipse.ui.IWorkbenchPage;
import com.google.common.collect.Lists;
@@ -166,7 +167,11 @@ public class TabbarFillerWithContributions extends AbstractTabbarFiller {
}
private void addDiagramContributionItems() {
- addContributionItem(diagramContributionItems, ARRANGE_SELECTION, contributionFactory.createSelectMenuManager());
+ if (Boolean.getBoolean(PopupMenuContribution.POPUP_MENU_IMPROVEMENT_ID)) {
+ addContributionItem(diagramContributionItems, ARRANGE_SELECTION, contributionFactory.createSelectAllContribution(part, manager));
+ } else {
+ addContributionItem(diagramContributionItems, ARRANGE_SELECTION, contributionFactory.createSelectMenuManager());
+ }
addContributionItem(diagramContributionItems, ARRANGE_SELECTION, contributionFactory.createArrangeMenuManager(part));
addContributionItem(diagramContributionItems, REFRESH, contributionFactory.createRefreshContribution());
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/contributions/TabbarContributionFactory.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/contributions/TabbarContributionFactory.java
index 92bafa7422..702f4cecc7 100644
--- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/contributions/TabbarContributionFactory.java
+++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/contributions/TabbarContributionFactory.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2016, 2017 Obeo.
+ * Copyright (c) 2016, 2018 Obeo.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -46,6 +46,7 @@ import org.eclipse.sirius.diagram.ui.tools.internal.actions.visibility.HideDDiag
import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.FiltersContributionItem;
import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.LayersContribution;
import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.LayoutingModeSwitchingAction;
+import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.SelectAllContributionItem;
import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.ShowingModeSwitchingAction;
import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.actions.DiagramActionContributionItem;
import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.actions.HideDDiagramElementLabelActionContributionItem;
@@ -105,6 +106,22 @@ public class TabbarContributionFactory {
}
/**
+ * Creates the SelectAll contribution item.
+ *
+ * @param part
+ * the diagram workbench part.
+ * @param manager
+ * the toolbar manager.
+ * @return the {@link IContributionItem}.
+ */
+ public IContributionItem createSelectAllContribution(IDiagramWorkbenchPart part, ToolBarManager manager) {
+ SelectAllContributionItem selectAllContribution = new SelectAllContributionItem();
+ ContributionItem filterItem = selectAllContribution.createContributionItem(manager);
+ selectAllContribution.setPart(part);
+ return filterItem;
+ }
+
+ /**
* Creates the Alignment contribution item. This menu contains several operations which can be used to align several
* graphical elements in various ways.
*
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/menu/PopupMenuContribution.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/menu/PopupMenuContribution.java
index a8e8abb833..6c79757e81 100644
--- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/menu/PopupMenuContribution.java
+++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/menu/PopupMenuContribution.java
@@ -102,7 +102,7 @@ public class PopupMenuContribution implements IContributionItemProvider {
/**
* VM argument name to activate the POC of bugzilla 529992.
*/
- private static final String POPUP_MENU_IMPROVEMENT_ID = "org.eclipse.sirius.experimental.popupMenuImprovement"; //$NON-NLS-1$
+ public static final String POPUP_MENU_IMPROVEMENT_ID = "org.eclipse.sirius.experimental.popupMenuImprovement"; //$NON-NLS-1$
/**
* Constant used for POC of bugzilla 529992 to separate group and menu id in path.>
@@ -121,6 +121,12 @@ public class PopupMenuContribution implements IContributionItemProvider {
private static final String PATH_PREFIX = "path"; //$NON-NLS-1$
/**
+ * Constant used for POC of bugzilla 529992 to insert a group declared as a "Popup Menu" in a specific existing
+ * dropdown menu of tabbar. Currently only "Select" dropdown menu car be used ("tabbarPath=Select").
+ */
+ private static final String TABBAR_PATH_PREFIX = "tabbarPath"; //$NON-NLS-1$
+
+ /**
* Constant used for POC of bugzilla 529992 to define a group in a Popup Menu. It is used in documentation field of
* a Popup Menu with this kind of format:<BR/>
* <code>group=mySpecificGroupId</code>
@@ -133,12 +139,49 @@ public class PopupMenuContribution implements IContributionItemProvider {
*/
private static final String ROOT_MENU_ID = "/"; //$NON-NLS-1$
+ /**
+ * Field used only in case of POC of bugzilla 529992.<BR/>
+ * True if this instance is called to contribute to tabbar, false otherwise. In case of tabbar contribution, only
+ * "Popup menu" with a tabbar path are considered.
+ */
+ private boolean contributionToTabbar;
+
+ /**
+ * Default constructor.
+ */
+ public PopupMenuContribution() {
+ // Do nothing.
+ }
+
+ /**
+ * Constructor to specify the contribution mode.
+ *
+ * @param contributionToTabbar
+ * True if this instance is called to contribute to tabbar, false otherwise
+ */
+ public PopupMenuContribution(boolean contributionToTabbar) {
+ this.contributionToTabbar = contributionToTabbar;
+ }
+
@Override
public void contributeToActionBars(final IActionBars arg0, final IWorkbenchPartDescriptor arg1) {
// Nothing to contribute
}
+ /**
+ * Method to do the same as {@link #contributeToPopupMenu(IMenuManager, IWorkbenchPart)} but out of the extension
+ * point context where it is originally used. Useful to use this kind of contribution in tabbar for example.
+ *
+ * @param menu
+ * The target popup menu manager
+ * @param part
+ * The context workbench part
+ */
+ public static void contributeToPopupMenuProgrammatically(final IMenuManager menu, final IWorkbenchPart part) {
+ new PopupMenuContribution(true).contributeToPopupMenu(menu, part);
+ }
+
@Override
public void contributeToPopupMenu(final IMenuManager menu, final IWorkbenchPart part) {
if (part instanceof SiriusDiagramEditor) {
@@ -613,7 +656,7 @@ public class PopupMenuContribution implements IContributionItemProvider {
}
}
- private Optional<String> getPath(String documentationOptions) {
+ private Optional<String> getPropertyValueFromString(String documentationOptions, String key) {
try {
Properties docProps = new Properties();
StringReader docReader = new StringReader(documentationOptions);
@@ -622,9 +665,9 @@ public class PopupMenuContribution implements IContributionItemProvider {
} finally {
docReader.close();
}
- String path = docProps.getProperty(PATH_PREFIX);
- if (path != null) {
- return Optional.of(path);
+ String value = docProps.getProperty(key);
+ if (value != null) {
+ return Optional.of(value);
}
} catch (IOException e) {
// Do nothing
@@ -632,23 +675,16 @@ public class PopupMenuContribution implements IContributionItemProvider {
return Optional.empty();
}
+ private Optional<String> getTabbarPath(String documentationOptions) {
+ return getPropertyValueFromString(documentationOptions, TABBAR_PATH_PREFIX);
+ }
+
+ private Optional<String> getPath(String documentationOptions) {
+ return getPropertyValueFromString(documentationOptions, PATH_PREFIX);
+ }
+
private Optional<String> getGroupIdToCreate(String documentationOptions) {
- try {
- Properties docProps = new Properties();
- StringReader docReader = new StringReader(documentationOptions);
- try {
- docProps.load(docReader);
- } finally {
- docReader.close();
- }
- String groupId = docProps.getProperty(GROUP_PREFIX);
- if (groupId != null) {
- return Optional.of(groupId);
- }
- } catch (IOException e) {
- // Do nothing
- }
- return Optional.empty();
+ return getPropertyValueFromString(documentationOptions, GROUP_PREFIX);
}
private IMenuManager getMenuManager(IMenuManager menu, Optional<String> optionalPath) {
@@ -717,58 +753,68 @@ public class PopupMenuContribution implements IContributionItemProvider {
final EObject semantic = selectedViews.iterator().next().getTarget();
// Search if a menu with the same id already exists. In this case, we reuse it.
String menuId = popupMenu.getName();
- IMenuManager subMenu;
- if (ROOT_MENU_ID.equals(menuId)) {
- subMenu = parentMenu;
+ Optional<String> tabbarPath = getTabbarPath(popupMenu.getDocumentation());
+ Option<? extends IContributionItem> result;
+ if (contributionToTabbar && !tabbarPath.isPresent()) {
+ // For tabbar contribution, ignore contribution without tabbar path.
+ result = Options.newNone();
} else {
- subMenu = parentMenu.findMenuUsingPath(menuId);
- if (subMenu == null) {
- subMenu = new MenuManager(MessageTranslator.INSTANCE.getMessage(popupMenu, new IdentifiedElementQuery(popupMenu).getLabel()), menuId);
- // Add a default "additions" group
- subMenu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+ IMenuManager subMenu;
+ if (ROOT_MENU_ID.equals(menuId)) {
+ subMenu = parentMenu;
+ } else if (tabbarPath.isPresent() && tabbarPath.get().equals(parentMenu.getId())) {
+ subMenu = parentMenu;
+ } else {
+ subMenu = parentMenu.findMenuUsingPath(menuId);
+ if (subMenu == null) {
+ subMenu = new MenuManager(MessageTranslator.INSTANCE.getMessage(popupMenu, new IdentifiedElementQuery(popupMenu).getLabel()), menuId);
+ // Add a default "additions" group
+ subMenu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+ }
}
- }
- // Add a separator group if asked
- Optional<String> optionalGroupId = getGroupIdToCreate(popupMenu.getDocumentation());
- if (optionalGroupId.isPresent()) {
- Separator separator = new Separator(optionalGroupId.get());
- subMenu.add(separator);
- }
+ // Add a separator group if asked
+ Optional<String> optionalGroupId = getGroupIdToCreate(popupMenu.getDocumentation());
+ if (optionalGroupId.isPresent()) {
+ Separator separator = new Separator(optionalGroupId.get());
+ subMenu.add(separator);
+ }
- final EList<MenuItemDescription> activatedActions = popupMenu.getMenuItemDescription();
+ final EList<MenuItemDescription> activatedActions = popupMenu.getMenuItemDescription();
- IInterpreter interpreter = null;
- if (semantic != null && semantic.eResource() != null) {
- interpreter = SiriusPlugin.getDefault().getInterpreterRegistry().getInterpreter(semantic);
- } else if (semantic instanceof DMappingBased) {
- interpreter = SiriusPlugin.getDefault().getInterpreterRegistry().getInterpreter(((DMappingBased) semantic).getMapping());
- }
+ IInterpreter interpreter = null;
+ if (semantic != null && semantic.eResource() != null) {
+ interpreter = SiriusPlugin.getDefault().getInterpreterRegistry().getInterpreter(semantic);
+ } else if (semantic instanceof DMappingBased) {
+ interpreter = SiriusPlugin.getDefault().getInterpreterRegistry().getInterpreter(((DMappingBased) semantic).getMapping());
+ }
- final Boolean isMenuPreconditionValidated;
- if (StringUtil.isEmpty(popupMenu.getPrecondition())) {
- isMenuPreconditionValidated = true;
- } else {
- isMenuPreconditionValidated = RuntimeLoggerManager.INSTANCE.decorate(interpreter).evaluateBoolean(semantic, popupMenu, ToolPackage.eINSTANCE.getAbstractToolDescription_Precondition());
- }
+ final Boolean isMenuPreconditionValidated;
+ if (StringUtil.isEmpty(popupMenu.getPrecondition())) {
+ isMenuPreconditionValidated = true;
+ } else {
+ isMenuPreconditionValidated = RuntimeLoggerManager.INSTANCE.decorate(interpreter).evaluateBoolean(semantic, popupMenu, ToolPackage.eINSTANCE.getAbstractToolDescription_Precondition());
+ }
- if (isMenuPreconditionValidated) {
- final Iterator<MenuItemDescription> mIterator = activatedActions.iterator();
- while (mIterator.hasNext()) {
- final MenuItemDescription menuItemDescription = mIterator.next();
- Optional<IAction> optionalAction = buildActionToAdd(domain, selectedViews, menuItemDescription, emfCommandFactory, primarySelection, currentMouseLocation, interpreter);
- addActionInMenu(subMenu, menuItemDescription.getDocumentation(), optionalAction);
+ if (isMenuPreconditionValidated) {
+ final Iterator<MenuItemDescription> mIterator = activatedActions.iterator();
+ while (mIterator.hasNext()) {
+ final MenuItemDescription menuItemDescription = mIterator.next();
+ Optional<IAction> optionalAction = buildActionToAdd(domain, selectedViews, menuItemDescription, emfCommandFactory, primarySelection, currentMouseLocation, interpreter);
+ addActionInMenu(subMenu, menuItemDescription.getDocumentation(), optionalAction);
+ }
+ } else {
+ subMenu.removeAll();
+ }
+ // finalize
+ if (!(parentMenu.equals(subMenu)) && subMenu instanceof ContributionManager && ((ContributionManager) subMenu).getSize() > 0) {
+ subMenu.setVisible(true);
+ result = Options.newSome(subMenu);
+ } else {
+ result = Options.newNone();
}
- } else {
- subMenu.removeAll();
- }
- // finalize
- if (!(parentMenu.equals(subMenu)) && subMenu instanceof ContributionManager && ((ContributionManager) subMenu).getSize() > 0) {
- subMenu.setVisible(true);
- return Options.newSome(subMenu);
- } else {
- return Options.newNone();
}
+ return result;
}
/**

Back to the top