プラグインが、ワークベンチ内に既に存在するビューへ振る舞いを組み込むことは一般的です。これは、 org.eclipse.ui.viewActions 拡張ポイントによって実行されます。この拡張ポイントにより、 プラグインは、メニュー項目、サブメニュー、およびツールバー項目を、 既存ビューのローカル・プルダウン・メニューおよびローカル・ツールバーへ組み込むことができます。
README ファイルが選択されるときは常に使用可能になる、ナビゲーター・ビューのローカル・ツールバー内の項目に 気が付いたかもしれません。この項目は、ビューのローカル・プルダウン・メニューにも表示されます。 これらのアクションは、README ツール・プラグインが、 viewActions 拡張を使用して それらのアクションを組み込むために表示されます。
以下は、関連する plugin.xml 組み込みです。
<extension
point = "org.eclipse.ui.viewActions">
<viewContribution
id="org.eclipse.ui.examples.readmetool.vc1"
targetID="org.eclipse.ui.views.ResourceNavigator">
<action id="org.eclipse.ui.examples.readmetool.va1"
label="&Readme View Extension"
menubarPath="additions"
toolbarPath="additions"
icon="icons/basic/obj16/editor.gif"
tooltip="Run Readme View Extension"
helpContextId="org.eclipse.ui.examples.readmetool.view_action_context"
class="org.eclipse.ui.examples.readmetool.ViewActionDelegate"
enablesFor="1">
<selection class="org.eclipse.core.resources.IFile" name="*.readme"/>
</action>
</viewContribution>
</extension>
固有の ID を使用したビュー組み込みが指定されています。アクションが追加されるビューは、 targetID に指定されています。ここでは、 リソース・ナビゲーター・ビューのメニューに組み込みを行います。 新規アクションのメニュー・バーおよびツールバーのロケーションと共に、ラベルを指定します (メニューおよびツールバーのロケーションの詳細については、 メニューおよびツールバー・パス を参照してください)。
同様に、アクションが使用可能になる条件を指定します。 このアクションは、ファイル拡張子に ".readme" を持つ IFile のタイプが 1 つ選択される場合に使用可能になることがわかります。 実際、これは、リソース・ナビゲーターであちこちをクリックするときに生じる動作と同じです。
plugin.xml でのすべての情報は、適切なメニューおよびツールバーを取り込むために必要となるものです。 プラグイン・コードは、アクションがメニューまたはツールバーから実際に選択されるまで実行されません。 plugin.xml で指定されたインプリメンテーション・クラスは、 IViewActionDelegate インターフェースを インプリメントしなければなりません。
この例では、README プラグインは、アクションをインプリメントするために、 ViewActionDelegate を提供します。 このクラスをブラウズすると、これには、選択変更を処理し、アクションを呼び出し、 どのビューのためにそれが作成されたかを記憶するためのメソッドが含まれていることがわかります。
アクション自体は、ビュー・アクションが実行されたと通知するダイアログを起動するだけです。
public void run(org.eclipse.jface.action.IAction action) {
MessageDialog.openInformation(view.getSite().getShell(),
"Readme Editor",
"View Action executed");
}
このアクションは単純ですが、選択およびより機能的なダイアログを使用することによって、 このアクションにさらに興味深いことを実行させることができます。