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?拡張ポイントで表示制御されています。
この記事は
現在のアクセス:9890