Eclipse RCP: скрыть контекстное меню перспективной панели.

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

Спасибо.


person Community    schedule 06.05.2009    source источник


Ответы (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);
        }
    }
person kakogo    schedule 07.09.2010
comment
[@user844542 написал этот комментарий] Я пытался использовать это, но не смог получить PerspectiveBar. Какой класс подходит для введения этого кода? Или уже нельзя? - person phihag; 14.07.2011

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

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

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

person ftl    schedule 29.05.2009