2017-03-13 12 views
0

パッケージ・エクスプローラーとEclipseのプロジェクト・エクスプローラーにメニュー項目を追加すると、プロジェクト項目を右クリックしたときに表示されます。Eclipse Plugin - 特定の要素が選択されているときにのみメニュー項目を表示する

私がこれまで行ってきたのは、パッケージとプロジェクトエクスプローラの両方にメニュー項目を追加しましたが、どこからでも右クリックすると表示されます。

プロジェクト/パッケージエクスプローラからプロジェクト要素が右クリックされた場合にのみ表示されるコマンドです。

誰かがプロジェクト内のパッケージや任意のフォルダを右クリックすると、メニュー項目が表示されないようにしたいと思います。

e。

Right Click on Project -> Menu Item Visible 
Right Click on any other resource in the project -> Menu Item not present 

これは属性を追加することで可能ですか?私はそれを使用する方法について混乱しています。パッケージとプロジェクトエクスプローラのクリックリスナーを追加する必要がありますか?

Eclipse Indigo用のこのプラグインを作成しています。

+0

メニュー項目に使用する拡張ポイントはどれですか? –

+0

@ greg-449 'org.eclipse.ui.menus' –

答えて

1

可視性を制御するために、org.eclipse.ui.menus拡張ポイントのcommandの要素visibleWhenを使用します。現在の選択でオブジェクトを繰り返すれる

<visibleWhen 
     checkEnabled="false"> 
    <iterate> 
     <adapt 
      type="org.eclipse.core.resources.IProject"> 
     </adapt> 
    </iterate> 
</visibleWhen> 

:あなたは、現在の選択がIProjectインターフェイスに適応しているかどうかを確認する必要があるプロジェクトのために

選択したオブジェクトは、現在のビューに属するユーザーインターフェイスオブジェクトです。通常は、IProjectインターフェイスを直接実装しません。代わりに、Eclipseアダプター・マネージャー(IAdapterManagerIAdapterFactoryIAdaptableインターフェースを参照)を使用して、オブジェクトをインターフェースに「適合させる」ことが可能かもしれません。 adapt要素は、選択オブジェクトを適用できるかどうかをテストしています。

+0

@ greg_449上記のコードを説明するだけでいいですか?私は実際にの仕組みについて混乱しています。なぜcheckEnabled = falseですか? タグで何を繰り返すのですか?適応とは、IProjectが存在しなければならない継承チェーンのどこかを意味しますか? タグの中で、どの変数に適合がチェックされていますか? 申し訳ありませんが、これはすべて私にとって非常に混乱しています。ちょうどそれを説明できれば素晴らしいでしょう。 –

+0

'checkEnabled'はEclipseのヘルプに完全に記述されています。反復についての情報を追加し、答えに適応します。 –

+0

'checkEnabled'はコマンドの有効状態をチェックしますか?それは一体何の意味ですか ?どのようにコマンドを無効にすることができますか? AFAIKメニュー項目または他のウィジェットだけを無効にすることができます。また、 'checkEnabled'は、サブ要素が存在しないはずであることを示しています。どのようにコマンドにサブ要素がありますか? –

関連する問題