拡張ポイント
拡張ポイント
拡張する拡張ポイントは、"org.eclipse.ui.actionSets"です。拡張ポイントの説明やplugin.xmlファイルのextension要素の記述方法は、ヘルプの「Platformプラグイン・デベロッパー・ガイド」の「参照」-「拡張ポイント参照」(日本語)を見るか、以下の方法(英語)で確認することができます。
- プラグイン開発・パースペクティブのプラグイン・ビューの「org.eclipse.ui (3.0.x)」からplugin.xmlを開く
- マニフェスト・エディターの「拡張ポイント」ページを開き、「すべての拡張ポイント」の中の「actionSets」を選択し、「拡張ポイント記述を開く」をクリックする
拡張ポイント"org.eclipse.ui.actionSets"のextension要素の構造を図3にまとめました。
アクション・クラス
アクション・クラスは、IWorkbenchWindowActionDelegateインターフェースかIWorkbenchWindowPulldownDelegateインターフェースをインプリメントしたクラスです。アクション・クラスでインプリメントできるインターフェースとそれらの関係は、以下のようになります。

図4:IWorkbenchWindowActionDelegateインターフェースとスーパーインターフェース、サブインターフェース
IWorkbenchWindowPulldownDelegateインターフェースは、 IWorkbenchWindowActionDelegateインターフェースを継承され、plugin.xmlのaction要素のstyle属性 に"pulldown"を指定するときにインプリメントします。
IWorkbenchWindowActionDelegateインターフェースをインプリメントしたアクション・クラスでは、表1のメソッドを実装する必要があります。
| メソッド | 内容 |
| init | ワークベンチにロードされたときに呼ばれ、初期化処理を実装 |
| run | ユーザがメニュー・アイテムかツールバー・ボタンをクリックしたときに呼ばれ、実際に実行する機能を実装します。 MessageDialogのようなGUIコンポーネントを使用することができます |
| selectionChanged | 選択を変更したときに呼ばれ、機能の変更処理やパラメータの変更処理などを実装 |
| dispose | 終了するときに呼ばれ、割り当てたシステム・リソースの廃棄処理を実装 |
表1:実装するメリット
「Hello2 プラグイン」のSampleActionクラスは、IWorkbenchWindowActionDelegateインターフェースをインプリメントし、4つのメソッド(init、run、selectionChanged、dispose)を実装しています。そして「サンプル・アクション」メニュー・アイテムやメニューバー・ボタンがクリックされると、runメソッドが呼ばれメッセージダイアログが表示されます。
ポップアップ・メニューの追加
ポップアップ・メニュー(コンテキスト・メニュー)は、ビューやエディタで右クリックしたときに表示されるメニューです。ポップアップ・メニューには2種類あります。
ひとつは、右クリックしたときの選択しているオブジェクトの種類によって表示されるポップアップ・メニューです。もうひとつは、指定したビューやエディタで表示されるポップアップ・メニューです。ポップアップ・メニューにもユーザがメニューをクリックしたときの動作であるアクションを追加します。
それでは以下の手順で「Hello2 プラグイン」に、hello.txtファイルを右クリックしたときに表示され、「Hello, Eclipse world」メッセージ・ダイアログを表示するポップアップ・メニュー(図5)を追加してみましょう(プラグイン開発・パースペクティブを開いてくださ い)。

図5:実行例
はじめにマニフェスト・エディターの「拡張」ページを表示します。「追加」ボタンをクリックし、「新規拡張」ウィザードを起動します。拡張ポイント"org.eclipse.ui.popupMenus"を選択し、「新規拡張」ウィザードを終了します。
"objectContribution"のプロパティ設定
"org.eclipse.ui.popupMenus"を右クリックします。表示されたポップアップ・メニューから「新規」-「objectContribution」を選択し、"objectContribution"のプロパティを以下のように設定し、保管します。
| プロパティ | 値 |
| 内容 | |
| id | 値:examples.hello2.objectContribution |
| ポップアップ・メニューを識別するID | |
| objectClass | 値:org.eclipse.core.resources.IFile |
| 選択中のすべてのオブジェクトが、継承、もしくは実装すべきクラスまたはインターフェースの完全修飾名 | |
| nameFilter | 値:hello.txt |
| 選択したオブジェクトの名前に対するフィルタ | |
| adaptable | 値:false |
|
"menu"のプロパティ設定
"examples.hello2.objectContribution"を右クリックします。表示されたポップアップ・メニューから「新規」-「menu」を選択し、"menu"のプロパティを以下のように設定し、保管します。
| プロパティ | 値 |
| 内容 | |
| id | 値:sampleMenu3 |
| メニューを識別するためのID | |
| label | 値:サンプル・メニュー3(&M) |
| メニューの名前 | |
| path | 値:なし |
| メニューのルートから開始する新規メニューの位置。省略するとadditionsグループに追加されます |
