我想禁止在 rcp 应用程序中右键单击透视工具栏时显示的上下文菜单。澄清一下,我确实希望显示透视栏和快捷方式,但我不希望弹出上下文菜单。所有透视工具栏 api 似乎都是内部的。
谢谢。
我想禁止在 rcp 应用程序中右键单击透视工具栏时显示的上下文菜单。澄清一下,我确实希望显示透视栏和快捷方式,但我不希望弹出上下文菜单。所有透视工具栏 api 似乎都是内部的。
谢谢。
你可以试试这个
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);
}
}
正如您所提到的,PerspectiveSwitcher 的上下文菜单是在工作台框架的内部类中创建的。你不能阻止它被创建,你也不能获得对 PerspectiveSwitcher 的引用来以某种方式抑制菜单,而无需大量使用内部类和大量重新实现现有功能。
因此,简单地说,恕我直言,上下文菜单似乎并不是要被压制的。
解决您的问题的最简单和最干净的方法是抑制整个透视栏,并实现您自己的。有用于查询现有透视图 (IWorkbench.getPerspectiveRegistry) 和切换透视图 (IWorkbenchPage.setPerspective) 的公共 API,您只需要编写 UI 即可。