Java 如何在eclipse rcp应用程序中删除不需要的菜单贡献?
我制作了一个EclipseRCP应用程序,一切正常,但我最近注意到菜单中的折射器选项。我想把它处理掉。我在ActionBarAdvisor.java中有以下内容:Java 如何在eclipse rcp应用程序中删除不需要的菜单贡献?,java,eclipse,eclipse-plugin,eclipse-rcp,Java,Eclipse,Eclipse Plugin,Eclipse Rcp,我制作了一个EclipseRCP应用程序,一切正常,但我最近注意到菜单中的折射器选项。我想把它处理掉。我在ActionBarAdvisor.java中有以下内容: @Override protected void fillMenuBar(IMenuManager menu) { menu.add(createFile()); menu.add(createEdit()); menu.add(createNavigate());
@Override
protected void fillMenuBar(IMenuManager menu) {
menu.add(createFile());
menu.add(createEdit());
menu.add(createNavigate());
menu.add(createProject());
menu.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
menu.add(createWindow());
menu.add(createHelp());
}
上述功能将操作添加到菜单中,如下所示:
edit.add(undoAct);
同时,undoAct的定义如下:
private IWorkbenchAction undoAction
makeActions函数的内容如下:
@Override
protected void makeActions(IWorkbenchWindow window) {
undoAction = ActionFactory.UNDO.create(window);
undoAction.setText("Undo Menu");
register(undoAction);
}
我发现了一个建议,建议使用hideActionSets隐藏菜单。但我无法隐藏整个菜单,只能隐藏它的动作!
现在如何删除折射器选项?
谢谢。您可以使用活动,如上所述。 首先,您需要:
活动
,以及一个对应的活动模式绑定
,该绑定具有上一步中找到的id
。在您的plugin.xml
中,它将如下所示:
<extension point="org.eclipse.ui.activities">
<activity id="myActivity" name="MenuHidingActivity">
<enabledWhen>
<with variable="activePartId">
<equals value="nonExistentPartId"></equals>
</with>
</enabledWhen>
</activity>
<activityPatternBinding activityId="myActivity" pattern="menuItemID">
</activityPatternBinding>
</extension>
menuiteId是我要隐藏的菜单的ID吗?什么是活动PartId和不存在PartId。我还发现重构是由org.eclipse.ltk.ui.refactoring添加的,在commands extensions下,对应类别的id是:org.eclipse.ltk.ui.category.refactoring,那么内容是什么呢?“menuItemID是我想要隐藏的菜单的id?”是的。这不必与命令类别的ID相同,请在“org.eclipse.ui.menus”扩展下查看。activePartId是变量的名称,它保持原样。NoneExistentPartId是某个不存在的部件ID。您还可以使用任何其他始终为false的表达式(例如“某物计数为-1”)替换下的标记