Java EclipseRCP:抑制persective栏的上下文菜单

Java EclipseRCP:抑制persective栏的上下文菜单,java,eclipse-rcp,contextmenu,perspectives,Java,Eclipse Rcp,Contextmenu,Perspectives,我想抑制右键单击rcp应用程序中的透视工具栏时显示的上下文菜单。为了澄清,我确实希望显示透视栏和快捷方式,但不希望弹出关联菜单。所有透视工具栏api似乎都是内部的 谢谢。正如您所提到的,透视切换器的上下文菜单是在工作台框架的内部类中创建的。如果不大量使用内部类和大量重新实现现有功能,您无法阻止它被创建,也无法获得对PerspectiveSwitcher的引用以某种方式抑制菜单 因此,简单地说,上下文菜单似乎不是要被抑制的 解决问题的最简单、最干净的方法是抑制整个透视栏,并实现自己的透视栏。有用于

我想抑制右键单击rcp应用程序中的透视工具栏时显示的上下文菜单。为了澄清,我确实希望显示透视栏和快捷方式,但不希望弹出关联菜单。所有透视工具栏api似乎都是内部的


谢谢。

正如您所提到的,透视切换器的上下文菜单是在工作台框架的内部类中创建的。如果不大量使用内部类和大量重新实现现有功能,您无法阻止它被创建,也无法获得对PerspectiveSwitcher的引用以某种方式抑制菜单

因此,简单地说,上下文菜单似乎不是要被抑制的

解决问题的最简单、最干净的方法是抑制整个透视栏,并实现自己的透视栏。有用于查询现有透视图(IWorkbench.getPerspectiveRegistry)和切换透视图(IWorkbenchPage.setPerspective)的公共API,您只需编写UI即可。

您可以尝试此方法

    PerspectiveBarManager perspectiveBarManager = ((WorkbenchWindow) PlatformUI.getWorkbench()
            .getActiveWorkbenchWindow()).getPerspectiveBar();
    ToolBar toolBar = perspectiveBarManager.getControl();
    Listener[] listeners = toolBar.getListeners(SWT.MenuDetect);
    if (listeners != null)
    {
        for (Listener listener : listeners)
        {
            toolBar.removeListener(SWT.MenuDetect, listener);
        }
    }
[@user844542写了这条评论]我试着使用它,但无法获得
透视栏
。哪一个类适合引入此代码?还是不可能了?