1

一部のビューが特定のパースペクティブに接続されている場合にのみ機能するアプリケーションがあります。これらのビューをウィンドウ -> ビューの表示ダイアログから削除して、ユーザーが機能しないパースペクティブにビューを追加できないようにします。

これをプログラムまたは宣言で行う方法についてのアイデアはありますか?

を使用してみ<visibleWhen />ましたが、ビューはまだダイアログに表示されています:

  <view class="com.mycompany.ViewClass" 
        id="com.mycompany.ViewId" 
        name="View Name" 
        restorable="true">

        <visibleWhen>
            <with variable="activeWorkbenchWindow.activePerspective">
                <equals value="com.mycompany.MyPerspective"/>
            </with>
        </visibleWhen>
  </view>

節は問題ないと思います<visibleWhen />ので、Viewで使えるか気になりますよね?

4

2 に答える 2

0

残念ながら、Eclipseは、ViewContentProvider.removeIntroView[ビューの表示]ダイアログのコンテンツプロバイダーでプライベートを呼び出すことにより、イントロダクションビューに対してすでにこれを行っているようです。この制限を回避する方法は、org.eclipse.ui.activities拡張ポイントに追加してアクティビティを定義することです(activityPatternBindingアクティビティをUIコントリビューションにマッピングする方法を参照してください)。これを行うと、[ビューの表示]ダイアログからビューが削除されるだけでなく、パースペクティブ自体にビューが表示されなくなります。その後、ビューをプログラムで表示できます。ApplicationWorkbenchAdvisor.preStartupアプリケーションの制限のため、メソッドのアクティビティも有効にする必要がありました。

    Set<String> activityIds = new HashSet<String>();
    activityIds.add("com.my.activity.id");
    IWorkbenchActivitySupport activitySupport = PlatformUI.getWorkbench().getActivitySupport();
    activitySupport.setEnabledActivityIds(activityIds);

この場合、ダイアログを表示する前にアクティビティを無効にする必要があるため、これを行うには、[ビューの表示]メニューのコントリビューションも変更する必要があります。

うまくいけば、拡張ポイントがEclipseの次のバージョンに追加され、開発者がダイアログからビューを宣言的に削除するためのオプションを提供します。

于 2010-04-29T02:34:25.717 に答える
0

特定の条件が満たされた場合にのみそのオプションを表示するには、 を使用して、メニューの投稿として扱う必要があります。<visibleWhen/>

詳細については、wiki 記事「Menu Contribution」 を参照してください。

于 2010-04-28T18:54:44.623 に答える