除了宣布弹出菜单中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);
}
嗨格雷格,我这样做是在拉斯沃格尔的教程,但我得到了我创建了一个JFace的浏览器的控制在MPart内部并使用它。我试图设置弹出菜单,当你右键点击MPart本身。有没有办法获得对MPart的控制,或者另一种方式将弹出菜单添加到MPart本身? – 0Calories
'点击MPart'是什么意思? MPart的主体只是您的控件,或者您是否在问工具栏或选项卡? –
是的,我的意思是当你在MPart的实际标题附近右击时,MPart的标签。例如,在Eclipse IDE中,右键单击Call Hierarchy选项卡时,它将显示多个选项。我希望能够以相同的方式右键点击我的MPart并显示弹出式菜单。 (在我的问题中添加了一个示例图片) – 0Calories