Top / Eclipse / プラグイン開発のTIPS集 / あるビューがアクティブの時のみ表示されるアクション

Eclipseでは、あるビューがアクティブの場合だけ表示されるアクションを作成することができます。たとえばユーザがパッケージ・エクスプローラを選択すると、Eclipseのメニューバーに「リファクタリング(T)」などが表示されます。アクティブでなくなると「リファクタリング(T)」はメニューバーから消えます。

このようにあるビューのみで使用したいアクション(メニュー)は、そのビューがアクティブの場合にのみ表示される、というのがUIとしては親切ですね。

Eclipseではそのような仕組みを拡張ポイントレベルでサポートしています。具体的にはアクションセット(actionSet)に対してビューIDを関連づけることで「そのアクションセットはそのビューがアクティブの場合だけ表示されるよ」といったことを設定することができます。

拡張ポイント

org.eclipse.ui.actionSetPartAssociations

plugin.xmlのサンプル

<extension point="org.eclipse.ui.actionSets">
  <actionSet
    id="nu.mine.kino.plugin.hogehogeg.actionSet"
    label="サンプル・アクション・セット" visible="false">
    <menu id="sampleMenu" label="サンプル・メニュー(&amp;M)">
      <separator name="sampleGroup"/>
    </menu>
    <action
      class="nu.mine.kino.plugin.hogehogeg.actions.SampleAction"
      icon="icons/sample.gif"
      id="nu.mine.kino.plugin.hogehogeg.actions.SampleAction"
      label="サンプル・アクション(&amp;S)"
      menubarPath="sampleMenu/sampleGroup"
      toolbarPath="sampleGroup"
      tooltip="Hello, Eclipse world"/>
  </actionSet>
</extension>
<extension point="org.eclipse.ui.actionSetPartAssociations">
  <actionSetPartAssociation 
     targetID="nu.mine.kino.plugin.hogehogeg.actionSet">
     <part id="org.eclipse.jdt.ui.PackageExplorer"/>
  </actionSetPartAssociation>
</extension>

これで、IDがorg.eclipse.jdt.ui.PackageExplorer?というビューがアクティブの時のみ、サンプル・アクション・セット というアクションセット*1は有効になります。このビューってパッケージ・エクスプローラなのですが、ようするにパッケージ・エクスプローラを選択するとEclipseのメニュー部にサンプル・メニュー(&M)というメニューが表示されます。

参考

org.eclipse.jdt.uiプラグインに、org.eclipse.jdt.ui.CodingActionSet?というアクションセットがあるのですが、それはこのactionSetPartAssociations?拡張ポイントで表示制御されています。

関連リンク

Eclipse/プラグイン開発のTIPS集/あるパースペクティブを選択したときのみ表示されるアクション では、一段上の、あるパースペクティブが選択されているときのみ、表示されるアクションセットの作り方をまとめました。


この記事は

選択肢 投票
おもしろかった 2  
そうでもない 0  
  • actionSetPartAssociations?拡張ポイントを使ったアクションセットに、他のアクションセットからアクションを追加できないような。。。。アクションを追加しようとしたときに、アクションセットがまだアクティブになっていないから?? -- きの? 2006-05-15 09:22:11 (月)
  • というか、visibleがfalseになってる場合、アクションを追加できないみたい。 -- きの? 2006-05-15 09:25:06 (月)
  • visible="true"としてしまうと、いつも表示されてしまうので、必ずvisible="false"にしましょう。 -- きの? 2006-05-18 13:49:22 (木)
  • 直接この拡張ポイントとは関係ない話ですが、visible="false"となっているアクションセットは、Eclipse的にはまだローディングされていないので、そこに拡張ポイント使ってアクションを登録するってことができないみたいですね。。 -- きの? 2006-05-18 13:51:54 (木)

Top / Eclipse / プラグイン開発のTIPS集 / あるビューがアクティブの時のみ表示されるアクション

現在のアクセス:8728


*1 メニューの群とでもいう?

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-05-25 (水) 17:15:31 (3126d)