Eclipse rcp 在视图中添加下拉菜单';工具栏管理器

Eclipse rcp 在视图中添加下拉菜单';工具栏管理器,eclipse-rcp,jface,Eclipse Rcp,Jface,我想向视图中添加几个动态创建的操作。这样可以将它们添加到右上角的“视图”菜单中: private void fillActionBars() { IActionBars bars = getViewSite().getActionBars(); IMenuManager manager = bars.getMenuManager(); IMenuManager myMenu = new MenuManager("Menu title", MY_MENU_ID); // add a

我想向视图中添加几个动态创建的操作。这样可以将它们添加到右上角的“视图”菜单中:

private void fillActionBars() {
  IActionBars bars = getViewSite().getActionBars();
  IMenuManager manager = bars.getMenuManager();
  IMenuManager myMenu = new MenuManager("Menu title", MY_MENU_ID);
  // add actions to myMenu
  manager.add(myMenu);
  bars.updateActionBars();
}
这个很好用。但是,我想将操作添加到工具栏中的下拉菜单中(这样用户可以立即看到它们)。如果我将第三行替换为

IToolbarManager manager = bars.getToolBarManager();

菜单不会显示。

您需要将
IToolbarManager.add(IContributionItem)
与实现
IContributionItem
的类一起使用。请参见org.eclipse.ui.internal.FastViewBarContextMenuContribution作为示例。

没错,这不起作用。工作正常的变通方法,不使用菜单管理器,而是使用下拉操作和菜单创建者:

IActionBars bars = getViewSite().getActionBars();
IToolbarManager manager = bars.getToolBarManager();
Action act=new Action("Menu title",SWT.DROP_DOWN){};
act.setMenuCreator(new MyMenuCreator());
manager.add(act);

class MyMenuCreator implements IMenuCreator{
    public Menu getMenu(Control ctrl){
     ...
    }
}

问题是,这就是我在问题中所做的:
IMenuManager
是否实现了
IContributionItem
。因此,显然还有一些额外的要求。