java - Eclipse RCP 4 : Adding a Popup Menu to an MPart

标签 java eclipse user-interface rcp e4

我试图在右键单击 MPart 时为其添加弹出菜单,但我很难做到这一点。它的功能应该与 Eclipse 3.x 中的功能相同(在 View 标题附近单击鼠标右键,然后弹出菜单以分离 View /移动它出现的位置)。我添加了一个带有已处理菜单项的弹出菜单。我认为这就是允许右键单击时出现弹出菜单所需的全部内容,但当我这样做时什么也没有发生。

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

What the MPart looks like in my Application Model

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

编辑:我想要的示例

Example

最佳答案

除了在 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/

相关文章:

c# - 用 C# 开发应用程序的最佳第 3 方 GUI 框架是什么?

java - 用闰秒解析 LocalTime

Java 等价于 scala.collection.mutable.Map.getOrElseUpdate

java - <表格 :select spring mvc shows the object as a string

java - android PackageManager.DONT_KILL_APP 似乎不起作用

java - 在哪里可以下载 JPA 2.0 的 JavaDoc?

javascript - 在 Birt 处理程序上使用 Javascript reportContext.setPersistentGlobalVariable 方法

java - Eclipse DTP 新驱动定义

user-interface - 客户编号、订单号的最佳格式是什么?

c++ - 使我的 GUI 可通过键盘访问(Xp、Visual Studio、C++)