4

パースペクティブメニューを完全に制御する必要があります。

コンテキストメニューを無効にするために、すでにプラットフォームにハッキングしました。

private void disablePerspectiveToolbarMenu() {
    PerspectiveBarManager perspectiveBarManager =
        ((WorkbenchWindow) PlatformUI.getWorkbench().getActiveWorkbenchWindow()).getPerspectiveBar();
    if (perspectiveBarManager!=null){
        ToolBar toolBar = perspectiveBarManager.getControl();
        Listener[] listeners = toolBar.getListeners(SWT.MenuDetect);
        if (listeners != null){
            for (Listener listener : listeners){
                toolBar.removeListener(SWT.MenuDetect, listener);
            }
        }
    }
}

ただし、PERSPECTIVEMENUのデフォルトの内容も制御する必要があります。パースペクティブリストシェルへのアクセスを提供する、常に存在する1つのオプションがあります。メニューからそのオプションを削除する必要があります。

パースペクティブメニューが完全にユーザーの制御下にないのは残念です。メニューにパースペクティブを追加するだけで、それ以上は必要ありません。

ありがとう。

ここに画像の説明を入力してください

4

2 に答える 2

2

その他を取り除くための3つの潜在的なオプションがあります:

  1. RCPアプリでorg.eclipse.ui.IWorkbenchPreferenceConstants.SHOW_OTHER_IN_PERSPECTIVE_MENU プリファレンスをに設定 します。falseこれはplugin_customization.ini、製品定義にファイルを含めることで実行できます。

  2. RCPアプリのワークベンチにパッチを適用します。見て org.eclipse.ui.internal.PerspectiveBarNewContributionItemorg.eclipse.ui.actions.ContributionItemFactory.PERSPECTIVES_SHORTLIST

  3. RCPアプリにデフォルトのパースペクティブバーを含めないでください。代わりに、org.eclipse.ui.menus、ツールバー、およびopenPerspectiveコマンドを使用してパースペクティブバーを作成します。
于 2011-04-29T13:35:38.310 に答える
2

私はいくつかの調査を行いましたが、解決策は期待どおりに機能しませんでした。ついに私は自分の間違いを見つけました。

plugin_customization.iniでプロパティを設定するには、次のことを試しました。

    org.eclipse.ui.IWorkbenchPreferenceConstants.SHOW_OTHER_IN_PERSPECTIVE_MENU=false

しかし、これは正しい表記ではありません!!! plugin_customization.xmlに最終的に追加した正しいソリューションを参照してください

    org.eclipse.ui/SHOW_OTHER_IN_PERSPECTIVE_MENU=false

したがって、プロパティを指定するインターフェイスまたはクラスの名前は、表記の一部ではありません。

于 2014-09-01T08:31:11.097 に答える