When using the objectContribution-element (which is part of the org.eclipse.ui.popupMenus-extension point), I often (practically always) want to delegate to some command instead of implementing some action myself (since usually, I have the command and a handler already implemented). I’m doing this by using ICommandService and IHandlerService, but it feels there should be a way to achieve this programmatically. I could use viewerContribution instead of objectContribution, but then I would lose the easy way of showing the menu entry only when certain object types are selected. Ideally, I would like to use the enablement-checks that already exist for my handlers to apply to the menu entry defined by the objectContribution.
When using the objectContribution -element (which is part of the org.eclipse.ui.popupMenus -extension point), I
Share
Ok, here’s what I was missing: instead of using the
org.eclipse.ui.popupMenus-extension point, I had to use theorg.eclipse.ui.menus-extension point with amenuContributionthat has itslocationURI-attribute pointing topopup:org.eclipse.ui.popup.any?after=additions. ThismenuContributioncan include acommand-element (achieving the goal of binding directly to an existing command), and thiscommand-element´svisibleWhen-element can be bound to the activation status of the bound command’s handler via thecheckEnabled-attribute (achieving the goal of having the popup-menu entry visible only when the enablement for the command handler is satisfied).What’s bad is that the documentation of the
org.eclipse.ui.menus-extension point states that theorg.eclipse.ui.popupMenus-extension point is to be considered deprecated, but the documentation oforg.eclipse.ui.popupMenusdoes not mention this fact.