プラグインが、ワークベンチ内に既に存在するビューへ振る舞いを組み込むことは一般的です。これは、 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="%PopupMenu.ResourceNav.label" menubarPath="additions" toolbarPath="additions" icon="icons/obj16/editor.png" tooltip="%PopupMenu.ResourceNav.tooltip" 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" を持つ (名前="*.readme")、 IFile (クラス="org.eclipse.core.resources.IFile") のタイプが 1 つ選択される場合 (enablesFor="1") に使用可能になることがわかります。 実際、これは、リソース・ナビゲーターであちこちをクリックするときに生じる動作と同じです。
プラグイン・コードは、メニューまたはツールバーからアクションが実際に選択されたときにのみ実行されるため、 plugin.xml でのすべての情報は、メニューおよびツールバーに項目を追加するために必要なものです。 アクションの振る舞いを提供するには、plugin.xml で指定された実装クラスは、 IViewActionDelegate インターフェースを実装しなければなりません。
この例では、README プラグインは、アクションを実装するために、 ViewActionDelegate を提供します。 このクラスをブラウズすると、ここには、ビューを記憶するためのメソッド、選択変更の処理、アクションの呼び出しが含まれていることが分かります。 アクション自体を呼び出すときは、それが実行されたことを知らせるダイアログを起動するだけです。
public void run(org.eclipse.jface.action.IAction action) { MessageDialog.openInformation(view.getSite().getShell(), MessageUtil.getString("Readme_Editor"), MessageUtil.getString("View_Action_executed")); }
このアクションは単純ですが、選択およびより機能的なダイアログを使用することによって、 このアクションにさらに興味深いことを実行させることができます。