org.eclipse.ui.popupMenus 拡張ポイントを使用して、 プラグインにより、他のビューやエディターのポップアップ・メニューに組み込みを行うことができます。
アクションの ID (viewerContribution) によって、または特定のオブジェクト・タイプ (objectContribution) と関連付けることによって、アクションを特定のポップアップ・メニューに組み込むことができます。
README ツールは、両方を定義します。 最初に、オブジェクト組み込みを見てみましょう。
<extension point = "org.eclipse.ui.popupMenus"> <objectContribution id="org.eclipse.ui.examples.readmetool" objectClass="org.eclipse.core.resources.IFile" nameFilter="*.readme"> <action id="org.eclipse.ui.examples.readmetool.action1" label="%PopupMenus.action" icon="icons/ctool16/openbrwsr.gif" menubarPath="additions" helpContextId="org.eclipse.ui.examples.readmetool.open_browser_action_context" class="org.eclipse.ui.examples.readmetool.PopupMenuActionDelegate" enablesFor="1"> </action> </objectContribution> ...
"Show Readme Action" アクションは、 オブジェクト・クラス IFile に組み込まれます。 つまり、IFile オブジェクトを含む すべてのビューは、IFile オブジェクトが 選択されると組み込みを表示します。選択基準は、名前フィルター (nameFilter="*.readme") および 単一選択 (enablesFor="1") を使用して、さらに制限されているのがわかります。 既に学習したとおり、メニュー項目が実際に選択されるまでは、 このメニューの登録によってプラグインからのコードが実行されることはありません。
メニュー項目が選択されると、ワークベンチは指定されたクラスを実行します。 ポップアップが objectContribution として宣言されるため、提供されたクラスは、 IObjectActionDelegate を インプリメントしなければなりません。
アクションは、以下のように PopupMenuActionDelegate でインプリメントされます。
public void run(IAction action) { MessageDialog.openInformation( this.part.getSite().getShell(), "Readme Example", "Popup Menu Action executed"); }
リソース・ナビゲーターから README ファイルを選択すると、ポップアップ・メニューの組み込みがわかります。
ビューアー組み込みは、その ID を使用して、特定のビューまたはエディターのポップアップ・メニューを組み込む際に使用されます。 README ツールのビューアー組み込み:
... <viewerContribution id="org.eclipse.ui.examples.readmetool2" targetID="org.eclipse.ui.examples.readmetool.outline"> <action id="org.eclipse.ui.examples.readmetool.action1" label="%PopupMenus.action" icon="icons/ctool16/openbrwsr.gif" menubarPath="additions" helpContextId="org.eclipse.ui.examples.readmetool.open_browser_action_context" class="org.eclipse.ui.examples.readmetool.ViewActionDelegate"> </action> </viewerContribution> </extension>
注: JFace ビューアーとは関連がないため、viewerContribution という名前は、誤解されやすいものです。 popupMenuContribution という名前のほうが適切といえます。
拡張が viewerContribution の場合、アクションをエディターまたはビューのポップアップ・メニューへ組み込むかどうかによって、 提供されるクラスは、IEditorActionDelegate または IViewActionDelegate インターフェースをインプリメントする必要があります。
targetID は、ポップアップ・メニューが変更されるビューを指定します。 この場合、アクションを README ツール・ビューの 1 つ、アウトライナーに追加します。 アクション自体は、説明した他のものと同じです。 アクションの id、label、および icon、および組み込みのポップアップ内の path を指定します。 アクションは、README アウトライン・ビューのポップアップ・メニュー内のみに表示されます。