【问题标题】:Eclipse RCP 4: Adding a Popup Menu to an MPartEclipse RCP 4:向 MPart 添加弹出菜单
【发布时间】:2017-07-30 16:28:07
【问题描述】:

我正在尝试在右键单击 MPart 时为其添加弹出菜单,但这样做有困难。它的功能应该与 Eclipse 3.x 中的相同(右键单击视图标题和弹出菜单以分离视图/移动它出现)。我添加了一个带有已处理菜单项的弹出菜单。我认为这就是允许弹出菜单在右键单击时出现所需的全部内容,但是当我这样做时没有任何反应。

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

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

编辑:我想要的示例

【问题讨论】:

    标签: java eclipse user-interface rcp e4


    【解决方案1】:

    除了在 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);
    }
    

    【讨论】:

    • 嗨,Greg,我在 Lars Vogel 的教程中做了这个,但我获得了在 MPart 中创建并使用它的 JFace 查看器的控制权。当您右键单击 MPart 本身时,我正在尝试设置弹出菜单。有没有办法获取 MPart 的控件,或者有其他方法可以将弹出菜单添加到 MPart 本身?
    • “单击 MPart”是什么意思? MPart 的主体只是您的控件,还是您在询问工具栏或选项卡之类的东西?
    • 是的,我的意思是当您在 MPart 的实际标题附近单击鼠标右键时,即 MPart 的选项卡。例如,在 Eclipse IDE 中,当您右键单击 Call Hierarchy 选项卡时,它会显示几个选项。我希望能够以相同的方式右键单击我的 MPart 并显示弹出菜单。 (在我的问题中添加了示例图片)
    • 完美!这是在渲染器中添加自定义菜单项的唯一方法(通过创建菜单对象和侦听器),还是还有一种方法可以访问我的应用程序模型中的弹出菜单并将其设置为渲染器中的菜单?跨度>
    • 您也许可以使用 EModelService 找到东西。我只是复制了 StackRenderer 中现有代码的工作方式。
    猜你喜欢
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2023-03-17
    • 2018-07-15
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多