4

rcp アプリケーションでパースペクティブ ツールバーを右クリックしたときに表示されるコンテキスト メニューを抑制したいと考えています。明確にするために、パースペクティブ バーとショートカットを表示したいのですが、コンテキスト メニューをポップアップさせたくありません。すべてのパースペクティブ ツールバー API は内部のようです。

ありがとう。

4

2 に答える 2

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);
        }
    }
于 2010-09-07T05:54:35.933 に答える
1

PerspectiveSwitcher のコンテキスト メニューは、おっしゃる通りワークベンチ フレームワークの内部クラスの奥深くに作成されます。内部クラスを多用したり、既存の機能を再実装したりしなければ、PerspectiveSwitcher への参照を取得してメニューを非表示にすることはできません。

つまり、簡単に言えば、私見では、コンテキストメニューは抑制されることを意図していないようです。

問題を解決する最も簡単でクリーンな方法は、パースペクティブ バー全体を抑制し、独自のものを実装することです。既存のパースペクティブのクエリ (IWorkbench.getPerspectiveRegistry) とパースペクティブの切り替え (IWorkbenchPage.setPerspective) のためのパブリック API があり、コーディングする必要があるのは UI だけです。

于 2009-05-29T09:25:39.400 に答える