如何删除 Eclipse RCP 中的弹出菜单贡献
Posted
技术标签:
【中文标题】如何删除 Eclipse RCP 中的弹出菜单贡献【英文标题】:How remove pop-up menu contributions in eclipse RCP 【发布时间】:2011-06-12 11:33:07 【问题描述】:我在一个 RCP 应用程序中工作,并且我知道哪个数据模型是 IResources 的实例。当弹出菜单可见时,我发现我想删除的其他插件贡献的命令。
代码示例:
1 菜单管理器菜单管理器 = 新菜单管理器(); 2 mm.setRemoveAllWhenShown(true); 3 菜单菜单 = menuManager.createContextMenu(this.treeViewer.getControl()); 4 this.treeViewer.getControl().setMenu(menu); 5 getSite().registerContextMenu(menuManager, this.treeViewer);如果我注释第 5 行上下文菜单不出现。
是否可以使用 plugin.xml 中的 menu-contribution 并删除其他插件的贡献?
注意:我的弹出菜单是声明性的,它位于 plugin.xml 中。
提前致谢
【问题讨论】:
【参考方案1】:一种可能的方法是执行所谓的“Equinox 变压器挂钩”,请参阅http://wiki.eclipse.org/Equinox_Transforms
您可以通过一些示例检查捆绑包(有关更多信息,请参见 wiki 页面),我在 XSLT 转换器方面取得了很好的经验,可以在某些 plugin.xml 文件向平台贡献扩展之前对其进行操作(唯一的挑战是找出哪个包造成了烦人的上下文菜单条目,但您可以使用 PluginSpy 来确定“邪恶者”:-P。
HTH 汤姆
【讨论】:
看起来有两种方法可以禁用其他插件贡献。Activities api 和这个。我要测试一下。谢谢汤姆斯【参考方案2】:您还可以将活动用于通过 plugin.xml 贡献的任何内容。对于 objectContributions,您将使用“contributing.plugin.id/action.id”形式。下面是一个适用于向导的示例,但同样的模式也可以应用于特定的操作:
<extension point="org.eclipse.ui.activities">
<category id="z.ex.commands.category"
name="ReadMe Cat"/>
<activity id="z.ex.commands.activity"
name="ReadMe Act"/>
<activityPatternBinding activityId="z.ex.commands.activity"
isEqualityPattern="true"
pattern="org.eclipse.ui.examples.readmetool/org.eclipse.ui.examples.readmetool.wizards.new.file"/>
<categoryActivityBinding activityId="z.ex.commands.activity"
categoryId="z.ex.commands.category">
</extension>
Plug-in Registry 视图可用于查找操作的 ID,但您必须进行一些搜索。
【讨论】:
【参考方案3】:弹出菜单对象提供了扩展元素的可见性和启用。如果您想隐藏特定类的对象贡献,您可以按如下方式设置可见性对象状态。
<visibility>
<not>
<objectClass
name="classname">
</objectClass>
</not>
</visibility>
【讨论】:
以上是关于如何删除 Eclipse RCP 中的弹出菜单贡献的主要内容,如果未能解决你的问题,请参考以下文章