diff options
Diffstat (limited to 'target_explorer/plugins')
2 files changed, 31 insertions, 6 deletions
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/DefaultContextActionsCommandHandler.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/DefaultContextActionsCommandHandler.java index cc5ebe764..942432432 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/DefaultContextActionsCommandHandler.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/DefaultContextActionsCommandHandler.java @@ -64,11 +64,15 @@ public class DefaultContextActionsCommandHandler extends AbstractHandler { @Override public Object execute(ExecutionEvent event) throws ExecutionException { // Get the position of the ToolItem - Event eventTrigger = (Event) event.getTrigger(); - ToolItem toolItem = (ToolItem) eventTrigger.widget; - Rectangle bounds = toolItem.getBounds(); - if ( bounds != null ) { - menuLocation = toolItem.getParent().toDisplay(bounds.x, bounds.y + bounds.height); + if (event.getTrigger() instanceof Event) { + Event eventTrigger = (Event) event.getTrigger(); + if (eventTrigger.widget instanceof ToolItem) { + ToolItem toolItem = (ToolItem) eventTrigger.widget; + Rectangle bounds = toolItem.getBounds(); + if ( bounds != null ) { + menuLocation = toolItem.getParent().toDisplay(bounds.x, bounds.y + bounds.height); + } + } } fMenuCreator.createMenu(); diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/DefaultContextActionsMenuContribution.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/DefaultContextActionsMenuContribution.java index e16b7a1e3..1ee839952 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/DefaultContextActionsMenuContribution.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/DefaultContextActionsMenuContribution.java @@ -10,17 +10,22 @@ package org.eclipse.tcf.te.tcf.ui.handler; import org.eclipse.core.runtime.Platform; +import org.eclipse.jface.action.ContributionManager; import org.eclipse.jface.action.IContributionItem; +import org.eclipse.jface.action.IMenuListener2; +import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.action.Separator; import org.eclipse.tcf.te.runtime.utils.StatusHelper; import org.eclipse.tcf.te.tcf.ui.activator.UIPlugin; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.PlatformUI; import org.eclipse.ui.menus.ExtensionContributionFactory; import org.eclipse.ui.menus.IContributionRoot; import org.eclipse.ui.menus.IMenuService; import org.eclipse.ui.services.IServiceLocator; -public class DefaultContextActionsMenuContribution extends ExtensionContributionFactory { +public class DefaultContextActionsMenuContribution extends ExtensionContributionFactory implements IMenuListener2 { @SuppressWarnings("cast") @Override @@ -45,4 +50,20 @@ public class DefaultContextActionsMenuContribution extends ExtensionContribution } } } + + @Override + public void menuAboutToShow(IMenuManager manager) { + } + + @Override + public void menuAboutToHide(final IMenuManager manager) { + final IWorkbench workbench = PlatformUI.getWorkbench(); + workbench.getDisplay().asyncExec(new Runnable() { + @Override + public void run() { + IMenuService service = (IMenuService) workbench.getService(IMenuService.class); + service.releaseContributions((ContributionManager) manager); + } + }); + } } |