Eclipse RCP 4:向 MPart 添加弹出菜单

Eclipse RCP 4: Adding a Popup Menu to an MPart

我试图在右键单击 MPart 时为它添加一个弹出菜单,但我很难这样做。它的功能应该与 Eclipse 3.x 中的功能相同(右键单击视图标题附近的弹出菜单以分离它出现的 view/move)。我添加了一个带有 Handled Menu Item 的弹出式菜单。我以为这就是允许弹出菜单在右键单击时出现所需的全部内容,但是当我这样做时没有任何反应。

我确实遵循了 Lars Vogel 的教程,但他的教程只展示了如何将 JFace 查看器添加到部件,然后将弹出菜单添加到该查看器。右键单击 MPart 时添加弹出菜单的正确方法是什么?

感谢您提供的任何帮助! :)

编辑:我想要的例子

除了在 Application.e4xmi(或片段)中声明弹出菜单外,您还必须在代码中使用 EMenuService 来向要右键单击的控件注册菜单。

@Inject
EMenuService menuService;


menuService.registerContextMenu(control, "menu id");

更改右键单击部件选项卡时显示的菜单要复杂得多。为此,您必须使用自定义渲染器工厂为 MPartStack 定义自定义渲染器(有关基本详细信息,请参阅 here)。

您的渲染器可以扩展标准 StackRenderer class 并覆盖 populateTabMenu 方法。

这是我使用的示例方法,它将菜单缩减为仅显示 'Close':

@Override
protected void populateTabMenu(final Menu menu, final MPart part)
{
  if (!isClosable(part))
    return;

  // Just add Close menu item and handle enabling it correctly

  final MenuItem menuItemClose = new MenuItem(menu, SWT.NONE);

  menuItemClose.setText(SWTRenderersMessages.menuClose);

  menuItemClose.addListener(SWT.Selection, this::closeSelected);

  menu.removeListener(SWT.Show, _menuListener);
  menu.addListener(SWT.Show, _menuListener);
}