From b9bb5d8c09a62c1ee65016ed03fff7d5821042c8 Mon Sep 17 00:00:00 2001 From: Florian Hoelzl <hoelzl@fortiss.org> Date: Mon, 28 Mar 2011 12:40:21 +0000 Subject: [PATCH] trial implementation of context menu service --- org.fortiss.tooling.kernel/trunk/plugin.xml | 2 +- .../interfaces/ICustomMenuContributor.java | 7 ++++++- .../kernel/internal/ContextMenuService.java | 7 ++++++- .../internal/navigator/NavigatorViewPart.java | 20 +++++++++++++++++-- 4 files changed, 31 insertions(+), 5 deletions(-) diff --git a/org.fortiss.tooling.kernel/trunk/plugin.xml b/org.fortiss.tooling.kernel/trunk/plugin.xml index f5fb82f82..2b9379055 100644 --- a/org.fortiss.tooling.kernel/trunk/plugin.xml +++ b/org.fortiss.tooling.kernel/trunk/plugin.xml @@ -48,7 +48,7 @@ <menuContribution allPopups="false" - locationURI="popup:org.fortiss.tooling.kernel.model.navigator?before=custom"> + locationURI="popup:org.fortiss.tooling.kernel.model.navigator2?before=custom"> <menu icon="icons/add.png" id="org.fortiss.tooling.kernel.model.navigator.newmenu" diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/ICustomMenuContributor.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/ICustomMenuContributor.java index 9f9704e41..f09a38b71 100644 --- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/ICustomMenuContributor.java +++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/ICustomMenuContributor.java @@ -17,6 +17,9 @@ $Id$ +--------------------------------------------------------------------------*/ package org.fortiss.tooling.kernel.interfaces; +import java.util.List; + +import org.eclipse.jface.action.IContributionItem; import org.fortiss.tooling.kernel.services.IContextMenuService; /** @@ -29,5 +32,7 @@ import org.fortiss.tooling.kernel.services.IContextMenuService; * @levd.rating RED Rev: */ public interface ICustomMenuContributor { - // TODO (FH): implement + + /** Returns the contributed items, i.e., actions or menus. */ + List<IContributionItem> getContributedItems(); } diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/ContextMenuService.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/ContextMenuService.java index 5114c99b8..e3b5f5216 100644 --- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/ContextMenuService.java +++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/ContextMenuService.java @@ -17,6 +17,7 @@ $Id$ +--------------------------------------------------------------------------*/ package org.fortiss.tooling.kernel.internal; +import org.eclipse.jface.action.IContributionItem; import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.MenuManager; @@ -75,7 +76,11 @@ public class ContextMenuService implements IContextMenuService { addVisibleSectionSeparator(menu, IWorkbenchActionConstants.MB_ADDITIONS); - // TODO (FH): add custom menu to custom section + if (contributor != null) { + for (IContributionItem item : contributor.getContributedItems()) { + menu.appendToGroup(CUSTOM_MENU_SEPARATOR_ID, item); + } + } IActionService.INSTANCE.addGlobalDefaultActionSectionToMenu(menu); } } diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/navigator/NavigatorViewPart.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/navigator/NavigatorViewPart.java index 568ca7101..aee683c18 100644 --- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/navigator/NavigatorViewPart.java +++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/navigator/NavigatorViewPart.java @@ -17,6 +17,9 @@ $Id$ +--------------------------------------------------------------------------*/ package org.fortiss.tooling.kernel.internal.navigator; +import java.util.ArrayList; +import java.util.List; + import org.conqat.ide.commons.ui.logging.LoggingUtils; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; @@ -24,6 +27,7 @@ import org.eclipse.core.runtime.Status; import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.common.notify.impl.AdapterImpl; import org.eclipse.emf.ecore.EObject; +import org.eclipse.jface.action.IContributionItem; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.viewers.DecoratingLabelProvider; import org.eclipse.jface.viewers.DoubleClickEvent; @@ -44,6 +48,7 @@ import org.eclipse.ui.views.properties.IPropertySheetPage; import org.eclipse.ui.views.properties.tabbed.ITabbedPropertySheetPageContributor; import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage; import org.fortiss.tooling.kernel.ToolingKernelActivator; +import org.fortiss.tooling.kernel.interfaces.ICustomMenuContributor; import org.fortiss.tooling.kernel.internal.NavigatorService; import org.fortiss.tooling.kernel.services.IActionService; import org.fortiss.tooling.kernel.services.IContextMenuService; @@ -68,7 +73,7 @@ import org.unicase.ecp.model.workSpaceModel.WorkSpaceModelPackage; */ public final class NavigatorViewPart extends ViewPart implements ISelectionListener, IDoubleClickListener, - ITabbedPropertySheetPageContributor { + ITabbedPropertySheetPageContributor, ICustomMenuContributor { /** Stores the TreeViewer. */ private TreeViewer viewer; @@ -208,7 +213,7 @@ public final class NavigatorViewPart extends ViewPart implements /** Creates the context menu. */ private void createContextMenu() { menuManager = IContextMenuService.INSTANCE - .createDefaultContextMenu(null); + .createDefaultContextMenu(this); Menu contextMenu = menuManager.createContextMenu(viewer.getControl()); viewer.getControl().setMenu(contextMenu); @@ -296,4 +301,15 @@ public final class NavigatorViewPart extends ViewPart implements } return super.getAdapter(adapter); } + + /** {@inheritDoc} */ + @Override + public List<IContributionItem> getContributedItems() { + List<IContributionItem> result = new ArrayList<IContributionItem>(); + // FIXME (FH): provide a wrapper menu with the new menu + // currently, only the entries are shown, but not a sub-menu + result.add(new NewMenu()); + return result; + } + } -- GitLab