如何在eclipse rcp应用程序中删除不需要的菜单贡献?

时间:2013-10-29 09:27:35

标签: java eclipse eclipse-plugin eclipse-rcp

我已经制作了一个日食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选项? 谢谢。

1 个答案:

答案 0 :(得分:3)

您可以按照here所述使用活动。 首先,您需要find the ID of the menu

  
      
  1. 使用Plug-In Spy
  2.         

    第一种方法是使用Plug-In Spy。按alt-shift-F2并单击a   要隐藏的菜单项或工具栏按钮。如果有ID   标题为“主动行动定义标识符”下的字符串,那么你就是   好运使用命令扩展添加了此项,您可以   使用此ID作为Activities Extension的模式参数。但不是   使用命令扩展添加的所有项目都显示其ID   字符串到插件间谍。

         

    作为旁注,ID字符串是句点分隔的。例如,ID为   按钮可能是“org.eclipse.ui.navigate.backwardHistory”。定期   表达式使用句点代表任何字符。幸运的是这个时期   用作外卡与实际句点字符匹配,因此您不需要   如果你不想逃避他们。我发现它让它更容易阅读   如果他们没有逃脱,那么它不太可能导致任何问题   暧昧的比赛。

         
        
    1. 使用Plug-In Registry和plugin.xml文件
    2.         

      第二种方法是使用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>