有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaEclipseRCP4:向MPart添加弹出菜单

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

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

What the MPart looks like in my Application Model

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

编辑:我想要的例子

Example


共 (1) 个答案

  1. # 1 楼答案

    以及在应用程序中声明弹出菜单。e4xmi(或fragment)还必须使用代码中的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);
    }