ビュー上のコンテキストメニュー(2)
さて,後回しにしていたコンテキストメニューへのメニュー項目の作成方法。これは,ビュー上のコンテキストメニュー(1)で紹介したIMenuListenerインタフェースのmenuAboutToShowメソッド内に記述する。menuAboutToShowメソッドは,コンテキストメニューの表示の直前にEclipseプラットフォームから呼び出される。
コンテキストメニューの各メニュー項目で呼び出されるアクションは,Actionクラスのサブクラスとして作成する。
class TestAction extends Action {
TestAction() {
super();
setText("Test Menu");
}
public void run() {
// このメニュー項目が選択されたときの処理
}
}
コンテキストメニューに表示される文字列をsetTextメソッドでセットしている。メニュー項目がユーザに選択されたときにはrunメソッドが呼び出される。このrunメソッド内に,実行したい処理を記述する。
このアクションをIMenuListenerインタフェースのmenuAboutToShowメソッド内で登録する。
public void menuAboutToShow(IMenuManager menu) {
menu.add(new TestAction());
}
これでメニュー項目がコンテキストメニューに追加される。ちなみに,
menu.add(new Separator());
でセパレータがコンテキストメニューに追加される。
上記のコードでは,コンテキストメニューが呼び出されるたびにアクションのインスタンスが生成されなおされているが,通常はアクションのインスタンスは使いまわした方が効率的だし,状況依存で使用可否を変えたりすることもしやすくなるだろう。
| 固定リンク
この記事へのコメントは終了しました。
コメント