TOP設計・移行・活用> 拡張ポイント
Eclipse実践プラグイン開発
Eclipse実践プラグイン開発

第5回:メニューとポップアップ・メニューの拡張
著者:ビーブレイクシステムズ  大森 洋行   2005/8/1
前のページ  1  2  3   4  次のページ
拡張ポイント

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

   拡張ポイント"org.eclipse.ui.actionSets"のextension要素の構造を図3にまとめました。

″org.eclipse.ui.actionSets″のextension要素の構造
図3:"org.eclipse.ui.actionSets"のextension要素の構造
(画像をクリックすると別ウィンドウに拡大図を表示します)


アクション・クラス

   アクション・クラスは、IWorkbenchWindowActionDelegateインターフェースかIWorkbenchWindowPulldownDelegateインターフェースをインプリメントしたクラスです。アクション・クラスでインプリメントできるインターフェースとそれらの関係は、以下のようになります。

IWorkbenchWindowActionDelegateインターフェースとスーパーインターフェース、サブインターフェース
図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
objectClassがorg.eclipse.core.resources.IResourceインターフェースに適応する型である場合、このポップアップ・メニューを使用するかどうかを示す
  • true - 使用する
  • false - 使用しない(デフォルト)
"menu"のプロパティ設定

   "examples.hello2.objectContribution"を右クリックします。表示されたポップアップ・メニューから「新規」 - 「menu」を選択し、"menu"のプロパティを以下のように設定し、保管します。

プロパティ
内容
id 値:sampleMenu3
メニューを識別するためのID
label 値:サンプル・メニュー3(&M)
メニューの名前
path 値:なし
メニューのルートから開始する新規メニューの位置。省略するとadditionsグループに追加されます
前のページ  1  2  3   4  次のページ


ビーブレイクシステムズ社 大森 洋行
著者プロフィール
ビーブレイクシステムズ社  大森 洋行
中堅システム開発会社にて、データベース検索ソフトの開発・導入コンサルティング・セミナー講師に従事。その現場の中で、Java及びオープンソースを用いたシステム開発は今後のシステム開発の主流になると考え、それらを独学で学ぶ。本格的にそれらを用いた開発に携わるため、ビーブレイクシステムズに入社。現在、データ項目やその流れの分析に重点をおきながら、Javaやオープンソースを用いたシステム開発に携わる。


INDEX
第5回:メニューとポップアップ・メニューの拡張
  はじめに
  "menu"のパラメータ設定
拡張ポイント
  "separator"のプロパティ設定