在现有RCP应用程序菜单

时间:2017-01-10 15:30:17

标签: java swt eclipse-rcp jface

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

Where I want the menu to go

这是我的代码

@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);
}

enter image description here

修正了它

enter image description here

2 个答案:

答案 0 :(得分:0)

如果要添加到使用普通Eclipse ActionBarAdvisor(WindowActionBuilder)的RCP,则会在现有的“窗口”和“帮助”菜单之前放置​​一个ID为IWorkbenchActionConstants.MB_ADDITIONS的组标记。

现有的帮助菜单标识为IWorkbenchActionConstants.M_HELP,因此您可以使用以下命令找到此菜单:

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

如果您正在编写基于ActionBarBuilder的自己的操作栏构建器,则菜单管理器中没有定义任何组,您无法使用appendToGroup。您只需按照希望菜单显示的顺序拨打add

答案 1 :(得分:0)

以编程方式创建自定义菜单并不是解决此问题的最佳方法。使用plugin.xml extensions选项卡创建菜单,然后您可以使用All Extensions轻松使用文本字段右侧的向上和向下按钮重新排列每个菜单的位置。所以在这种情况下,使用Eclipse的内置帮助菜单要容易得多。通过在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>```

问题区域中的最终结果图片:)我无法在此处加载