2009-05-06 2 views
4

Я хотел бы отключить контекстное меню, которое отображается при щелчке правой кнопкой мыши на панели инструментов перспективы в приложении rcp. Чтобы уточнить, я хочу, чтобы панель перспективы и ярлыки отображались, но я не хочу, чтобы контекстное меню всплывало. Вся перспективная панель инструментов api кажется внутренней.Eclipse RCP: запретить контекстное меню стойкой строки

Спасибо.

ответ

1

Контекстное меню PerspectiveSwitcher создается, как вы упомянули, во внутренних классах среды workbench. Вы не можете предотвратить его создание, и вы не можете получить ссылку на PerspectiveSwitcher, чтобы каким-то образом подавить меню, без интенсивного использования внутренних классов и многого переопределения существующих функций.

Итак, чтобы это было просто, ИМХО, кажется, что контекстное меню не предназначено для подавления.

Самый простой и чистый способ решить вашу проблему - подавить всю перспективную панель и реализовать свои собственные. Существует общедоступный API для запроса существующих перспектив (IWorkbench.getPerspectiveRegistry) и перспектив переключения (IWorkbenchPage.setPerspective), все, что вам нужно для кодирования, это интерфейс.

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); 
     } 
    } 
+0

* [@ user844542 написал этот комментарий] * Я пытался использовать это, но не был в состоянии получить 'PerspectiveBar'. Каков правильный класс для введения этого кода? Или это невозможно? – phihag

Смежные вопросы