2012年8月17日金曜日

eclipse: visibleWhen

Eclipse のプラグイン開発の話題です

Eclipse 4.2 Juno で右クリックメニューにメニューを追加するには org.eclipse.ui.menus 拡張ポイントを使います。
locationURI に popup:org.eclipse.ui.popup.any を指定することで、右クリックにメニューを追加できます。
その他の locationURI の例は org.eclipse.ui.commandsはナカナカいけるのね を見てください。どうやら、基本的には頑張って locationURI を自分で探すようですね。(誰か完全な locationURI のリストでも作らないかな)

このままだとどこで右クリックしてもメニューが表示されてしまいます。何か条件が満たされたときだけ表示するには visibleWhen を指定すればいいようです。
僕は visibleWhen for command to appear in context menu あたりを参考にしました。

以下はプロジェクトエクスプローラ(もしかしたら他のファイル選択系ビューでも有効かもしれないけど実験していません)でファイル(IFile)かプロジェクトフォルダ(IProject)が選択された状態で右クリックしたときだけ "Import Command" メニューを表示するための記述例です。

   <extension
         point="org.eclipse.ui.menus">
      <menuContribution
            allPopups="false"
            locationURI="popup:org.eclipse.ui.popup.any">
         <command
               commandId="com.github.uchan_nos.directory_importer.importCommand"
               label="Import Command"
               style="push">
            <visibleWhen
                  checkEnabled="false">
               <with
                     variable="selection">
                  <iterate
                        ifEmpty="false"
                        operator="or">
                     <or>
                        <instanceof
                              value="org.eclipse.core.resources.IFile">
                        </instanceof>
                        <instanceof
                              value="org.eclipse.core.resources.IProject">
                        </instanceof>
                     </or>
                  </iterate>
               </with>
            </visibleWhen>
         </command>
      </menuContribution>
   </extension>

0 件のコメント:

コメントを投稿