当使用objectContribution
- 元素(它是org.eclipse.ui.popupMenus
- 扩展点的一部分)时,我经常(几乎总是)想要委托给某个命令而不是自己实现某些操作(因为通常,我已经实现了命令和处理程序)。我是通过使用ICommandService
和IHandlerService
来做到这一点的,但是我觉得应该有一种方法可以通过编程实现。我可以使用viewerContribution
而不是objectContribution
,但是只有在选择了某些对象类型时,我才会失去显示菜单条目的简单方法。理想情况下,我想使用已经存在的处理程序的启用检查应用于objectContribution
定义的菜单项。
答案 0 :(得分:4)
好的,这就是我遗漏的内容:我不得不使用org.eclipse.ui.popupMenus
- 扩展点,而是使用menuContribution
- 扩展点和locationURI
,其{{1} } - 指向popup:org.eclipse.ui.popup.any?after=additions
的属性。此menuContribution
可以包含command
- 元素(实现直接绑定到现有命令的目标),并且此command
- 元素的visibleWhen
- 元素可以绑定通过checkEnabled
- 属性实现绑定命令处理程序的激活状态(实现只有在满足命令处理程序的启用时才能看到弹出菜单条目的目标)。
有什么不好org.eclipse.ui.menus
- 扩展点的文档说明org.eclipse.ui.popupMenus
- 扩展点被认为已被弃用,但org.eclipse.ui.popupMenus
的文档没有提到这个事实