我试图在右键单击 MPart 时为其添加弹出菜单,但我很难做到这一点。它的功能应该与 Eclipse 3.x 中的功能相同(在 View 标题附近单击鼠标右键,然后弹出菜单以分离 View /移动它出现的位置)。我添加了一个带有已处理菜单项的弹出菜单。我认为这就是允许右键单击时出现弹出菜单所需的全部内容,但当我这样做时什么也没有发生。
我确实遵循了 Lars Vogel 的教程,但他的教程仅展示了如何将 JFace 查看器添加到零件,然后将弹出菜单添加到该查看器。右键单击 MPart 时添加弹出菜单的正确方法是什么?
感谢您提供的任何帮助! :)
编辑:我想要的示例
最佳答案
除了在 Application.e4xmi(或片段)中声明弹出菜单外,您还必须在代码中使用 EMenuService
来将菜单注册到您要右键单击的控件.
@Inject
EMenuService menuService;
menuService.registerContextMenu(control, "menu id");
更改右键单击零件选项卡时显示的菜单要复杂得多。为此,您必须使用自定义渲染器工厂为 MPartStack
定义自定义渲染器(有关基本详细信息,请参阅 here)。
您的渲染器可以扩展标准 StackRenderer
类并重写 populateTabMenu
方法。
这是我使用的示例方法,它将菜单减少为仅显示“关闭”:
@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);
}
关于java - Eclipse RCP 4 : Adding a Popup Menu to an MPart,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42699545/