Eclipseでは、あるビューがアクティブの場合だけ表示されるアクションを作成することができます。たとえばユーザがパッケージ・エクスプローラを選択すると、Eclipseのメニューバーに「リファクタリング(T)」などが表示されます。アクティブでなくなると「リファクタリング(T)」はメニューバーから消えます。
このようにあるビューのみで使用したいアクション(メニュー)は、そのビューがアクティブの場合にのみ表示される、というのがUIとしては親切ですね。
Eclipseではそのような仕組みを拡張ポイントレベルでサポートしています。具体的にはアクションセット(actionSet)に対してビューIDを関連づけることで「そのアクションセットはそのビューがアクティブの場合だけ表示されるよ」といったことを設定することができます。
org.eclipse.ui.actionSetPartAssociations
<extension point="org.eclipse.ui.actionSets">
<actionSet
id="nu.mine.kino.plugin.hogehogeg.actionSet"
label="サンプル・アクション・セット" visible="false">
<menu id="sampleMenu" label="サンプル・メニュー(&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="サンプル・アクション(&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集/パースペクティブ限定表示アクション では、一段上の、あるパースペクティブが選択されているときのみ、表示されるアクションセットの作り方をまとめました。
この記事は
現在のアクセス:10610