我正在使用RCP应用程序,我有一个视图,哪个数据模型是IResources的实例。当弹出菜单可见时,我会找到我想删除的其他插件所贡献的命令。
代码示例:
1 MenuManager menuManager = new MenuManager(); 2 mm.setRemoveAllWhenShown(true); 3 Menu menu = menuManager.createContextMenu(this.treeViewer.getControl()); 4 this.treeViewer.getControl().setMenu(menu); 5 getSite().registerContextMenu(menuManager, this.treeViewer);
如果我评论第5行上下文菜单没有出现。
是否可以使用plugin.xml中的menu-contribution并删除其他插件的贡献?
注意:我的弹出菜单是声明性的,它位于plugin.xml中。
提前致谢
答案 0 :(得分:3)
可能的方法是执行所谓的“Equinox变压器挂钩”,参见http://wiki.eclipse.org/Equinox_Transforms
您可以通过一些示例来查看捆绑包(有关更多信息,请参阅wiki页面),我使用XSLT转换器做了很好的经验,在他们向平台提供扩展之前操作某些plugin.xml文件(唯一的挑战是找出哪个bundle正在贡献烦人的上下文菜单条目,但是你可以使用PluginSpy来确定“恶人”:-P。
HTH汤姆
答案 1 :(得分:1)
您还可以将活动用于通过plugin.xml提供的任何内容。对于objectContributions,您将使用“contributions.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,但您必须进行一些搜索。
答案 2 :(得分:0)
弹出菜单objectcontibution提供了一个可扩展元素visibilty和enablement。如果要隐藏特定类的对象连接,可以按如下方式设置visiblity对象状态。
<visibility>
<not>
<objectClass
name="{classname}">
</objectClass>
</not>
</visibility>