Eclipse RCP中混合菜单“action”和“command”菜单项的顺序

时间:2012-01-10 10:08:51

标签: java menu eclipse-rcp

目前我的RCP应用程序中有两个菜单: 文件和帮助。

文件菜单是通过command

创建的
<extension point="org.eclipse.ui.menus">
  <menuContribution allPopups="false" 
                    locationURI="menu:org.eclipse.ui.main.menu">
     <menu
           id="fileMenu"
           label="File"
           mnemonic="F"
           tooltip="Main Menu">
        <command
              commandId="myPlugin.bundle.menuCommands.Exit"
              label="Exit"
              mnemonic="E"
              style="push"
              tooltip="Exits MyPlugin">
        </command>
     </menu>
  </menuContribution>
  </extension>

<extension point="org.eclipse.ui.commands">
  <command defaultHandler="myPlugin.bundle.commands.exit.ExitHandler"
        id="myPlugin.bundle.menuCommands.Exit"
        name="Exit">
  </command>
</extension>

帮助菜单(仅包含“关于”菜单项)是通过action中的相应ApplicationActionBarAdvisor创建的:

protected void makeActions(IWorkbenchWindow window) {
    aboutAction = ActionFactory.ABOUT.create(window);
    register(aboutAction);
}

protected void fillMenuBar(IMenuManager menuBar) {
    MenuManager helpMenu = new MenuManager("&Help", "helpMenu");
    helpMenu.add(aboutAction);
    menuBar.add(helpMenu);
}

现在,帮助菜单位于菜单栏中的文件菜单之前。这显然不是它应该如何。如何更改菜单的顺序?

非常感谢!

1 个答案:

答案 0 :(得分:0)

啊,只需在文件菜单的MenuManager中添加ApplicationActionBarAdvisor即可解决此问题:

MenuManager helpMenu = new MenuManager("&Help", "helpMenu");
MenuManager fileMenu = new MenuManager("&File", "fileMenu");
...
menuBar.add(fileMenu);
menuBar.add(helpMenu);

我能听到你说“呃!”?这就是我所做的;)。

更新:

这真的应该怎么做呢?这意味着对于我在扩展向导中创建的每个新菜单,我都必须向ApplicationActionBarAdvisor添加一个新行......

也许你可以分享你对此的想法,或者它是否只是一个可以避免的黑客攻击。

谢谢!