在现有 RCP 应用程序菜单的末尾移动自定义 menuManager

Moving custom menuManager at the end of existing RCP app menu

我正在使用 RCP 应用程序菜单。如下图所示,我正在尝试将我新添加的帮助菜单移动到我的 RCP 应用程序随附的免费赠品菜单的末尾。目前,代码只是使用从 ActionBarAdvisor 创建的 class 将其添加到菜单栏。 public class ApplicationActionBarAdvisor extends ActionBarAdvisor 在查看其他可用方法时,我看到了一个使用起来可能很有趣的 appendToGroup 方法。唯一的问题是它需要一个 groupName 而我没有。我一直在使用的菜单 ID 似乎不足以作为 groupName。

这是我的代码

@Override protected void fillMenuBar(IMenuManager menuBar)
{
    MenuManager helpMenu = new MenuManager("&Help", IWorkbenchActionConstants.M_HELP);
    //menuBar.appendToGroup(menuBar.getId(), helpMenu);
    menuBar.add(helpMenu);
    helpMenu.add(aboutAction);
}

已修复

如果您要添加到使用普通 Eclipse ActionBarAdvisor (WindowActionBuilder) 的 RCP,那么在现有 Window 和帮助菜单之前会有一个 ID 为 IWorkbenchActionConstants.MB_ADDITIONS 的组标记.

已有一个 ID 为 IWorkbenchActionConstants.M_HELP 的帮助菜单,因此您可以使用以下方法找到此菜单:

IMenuManager helpMenu = menuBar.findMenuUsingPath(IWorkbenchActionConstants.M_HELP);

如果您基于 ActionBarBuilder 编写自己的操作栏生成器,则菜单管理器中没有定义任何组,您不能使用 appendToGroup。您只需按照希望菜单出现的顺序调用 add

以编程方式创建自定义菜单并不是解决此问题的最佳方法。使用 plugin.xml 扩展选项卡创建菜单,然后您可以轻松地使用文本字段右侧的向上和向下按钮以及所有扩展来重新排列您希望每个菜单所在的位置。所以在这种情况下,使用 Eclipse 的 built-in 帮助菜单要容易得多。通过在 plugin.xml 文件

中的其他菜单之后添加帮助菜单来恢复整个操作
    ``` <extension
     point="org.eclipse.ui.menus">
  <menuContribution
        locationURI="menu:org.eclipse.ui.main.menu">
     <menu
           label="File">
        <command
              commandId="org.eclipse.ui.file.exit"
              label="Exit">
        </command>
        <command
              commandId="org.eclipse.ui.file.save"
              label="Save"
              style="push">
        </command>
     </menu>
     <menu
           label="Help">
        <command
              commandId="org.eclipse.ui.help.aboutAction"
              label="About">
        </command>
        <command
              commandId="org.eclipse.ui.help.helpSearch"
              label="Search">
        </command>
     </menu>
  </menuContribution>```

最终结果图片在问题区:)这里加载不出来