Eclipse RCP: Подавить контекстное меню персективной панели
Я хотел бы отключить контекстное меню, которое отображается при щелчке правой кнопкой мыши на панели инструментов перспективы в приложении rcp. Чтобы уточнить, я хочу, чтобы отображались панель перспективы и ярлыки, но я не хочу, чтобы всплыло контекстное меню. Все перспективные панели инструментов API кажутся внутренними.
Благодарю.
2 ответа
Вы можете попробовать это
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, чтобы как-то подавить меню, без интенсивного использования внутренних классов и большого повторного использования существующих функций.
Итак, проще говоря, ИМХО, похоже, контекстное меню не предназначено для подавления.
Самым простым и чистым способом решения вашей проблемы будет подавление всей панели перспективы и реализация вашей собственной. Существует открытый API для запросов к существующим перспективам (IWorkbench.getPerspectiveRegistry) и переключения перспектив (IWorkbenchPage.setPerspective), все что вам нужно для кодирования - это пользовательский интерфейс.