Eclipse RCP: Подавить контекстное меню персективной панели - PullRequest
4 голосов
/ 06 мая 2009

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

Спасибо.

Ответы [ 2 ]

2 голосов
/ 07 сентября 2010

Вы можете попробовать это

    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);
        }
    }
1 голос
/ 29 мая 2009

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

Итак, проще говоря, IMHO кажется, что контекстное меню не должно подавляться.

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

...