我正在尝试在右键单击时为MPart添加弹出菜单,但我很难这样做。它应该像在Eclipse 3.x中一样运行(在视图标题附近右键单击并弹出菜单以分离视图/移动它出现)。我添加了一个带有Handled Menu Item的弹出菜单。我认为这将是允许弹出菜单出现在右键单击所需的全部内容,但是当我这样做时没有任何反应。
我确实关注过Lars Vogel的教程,但他的教程仅展示了如何将JFace查看器添加到部件,然后将弹出菜单添加到该查看器。右键单击MPart时添加弹出菜单的正确方法是什么?
感谢您提供的任何帮助! :)
编辑:我想要的例子
答案 0 :(得分:2)
除了在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);
}