1

eclipse-plugin を開発しており、package-explorer のコンテキスト メニューに貢献しています。古い を使用してorg.eclipse.ui.popupMenus、コントリビューションで name-filter を指定できるため、選択したファイルに特定の名前がある場合にのみメニュー エントリが表示されます。

<extension
         point="org.eclipse.ui.popupMenus">
    <objectContribution
            adaptable="false"
            id="..."
            nameFilter="file.xml"
            objectClass="org.eclipse.core.resources.IFile">
        ...
    </objectContribution>
</extension>

ここで、新しい方法を使用してそのコンテキスト メニューを作成し、ファイルがない場合はエントリを無効にすることもできます。

   <extension
         point="org.eclipse.ui.menus">
      <menuContribution
            allPopups="false"
            locationURI="popup:org.eclipse.jdt.ui.PackageExplorer">
         <command
               commandId="..."
               label="..."
               style="push">
         </command>
      </menuContribution>
   </extension>
   <extension
         point="org.eclipse.ui.commands">
      <command
            id="..."
            name="...">
      </command>
   </extension>
   <extension
         point="org.eclipse.ui.handlers">
      <handler
            class="..."
            commandId="...">
         <activeWhen>
            <with
                  variable="selection">
               <iterate
                     ifEmpty="false"
                     operator="and">
                  <adapt
                        type="org.eclipse.core.resources.IFile">
                  </adapt>
               </iterate>
            </with>
         </activeWhen>
      </handler>
   </extension>

(比較: Eclipse プラグインのメニュー項目を有効/無効にする)

ただし、ファイルが選択されていない場合だけでなく、ファイルが xml ファイルでない場合にも、エントリを無効にする必要があります。-tagの何かをハッキングしようとしました<activeWhen>が、ファイル名も監視できるようにする解決策が見つかりませんでした。

これを行う可能性はありますか?そしてもし:どのように?

4

1 に答える 1

1

Menu Contributions/IFile objectContribution に関する Eclipse wiki ページが役立ちます。自分でテストしたことはありませんが、コマンド フレームワークを使用する場合nameFilter、アクション ベースの拡張機能の属性を、id を使用して事前定義されたプロパティ テスターへの呼び出しに置き換えることができるようです。org.eclipse.core.resources.name

于 2012-12-10T15:56:33.560 に答える