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