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), все что вам нужно для кодирования - это пользовательский интерфейс.

Другие вопросы по тегам