我已经制作了一个日食RCP应用程序,一切正常,但我最近注意到菜单中的Refractor选项。我想摆脱它。我在ActionBarAdvisor.java中有以下内容:
@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来隐藏菜单。但我无法隐藏整个菜单,只是它的行动!
Remove "File, edit,...etc" menus from Eclipse RCP application
如何立即删除Refractor选项?
谢谢。
答案 0 :(得分:3)
您可以按照here所述使用活动。 首先,您需要find the ID of the menu:
- 使用Plug-In Spy
醇>第一种方法是使用Plug-In Spy。按alt-shift-F2并单击a 要隐藏的菜单项或工具栏按钮。如果有ID 标题为“主动行动定义标识符”下的字符串,那么你就是 好运使用命令扩展添加了此项,您可以 使用此ID作为Activities Extension的模式参数。但不是 使用命令扩展添加的所有项目都显示其ID 字符串到插件间谍。
作为旁注,ID字符串是句点分隔的。例如,ID为 按钮可能是“org.eclipse.ui.navigate.backwardHistory”。定期 表达式使用句点代表任何字符。幸运的是这个时期 用作外卡与实际句点字符匹配,因此您不需要 如果你不想逃避他们。我发现它让它更容易阅读 如果他们没有逃脱,那么它不太可能导致任何问题 暧昧的比赛。
- 使用Plug-In Registry和plugin.xml文件
醇>第二种方法是使用Plug-In Registry。您可以打开此视图 去:
窗口/显示视图... /其他/插件开发/插件注册表
您想要做的是尝试获取一些信息:
a)贡献UI元素的插件 b)有关插件用于创建何种扩展的信息 UI元素
如果有一个非常独特的单词与UI元素或其工具相关联 提示然后你可以在插件注册表的过滤器字段中使用它来尝试 确定哪个插件正在贡献UI元素。过滤器字段是 不是一个非常强大的工具,所以使用它可能有点令人沮丧。它不是 允许使用通配符并且不匹配空格字符。
当您追踪哪个插件正在贡献UI元素时,那么您 从找到的Plug-Ins视图中打开相关插件 在Plug-in Development透视图中与Package Explorer分组。 然后转到Extensions选项卡并搜索通常可以使用的ID字符串 可以在Command或ActionSet扩展的使用中找到。如果用户界面 使用ActionSet添加元素,然后将插件ID添加到UI ID 在赋予活动扩展的模式参数中。例如 org.eclipse.ui.actionsets.foo成为模式 org.eclipse.ui / org.eclipse.ui.actionsets.foo。
然后创建一个永远不会被激活的新Activity
以及与您在上一步中找到的activityPatternBinding
相对应的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>