2009年6月30日火曜日

org.eclipse.ui.commandsはナカナカいけるのね

Eclipseの3.3からActionではなく、Commandを使うのを推奨しているらしい。
Commandをつかわなきゃなぁーって思いつつ、ついActionを使ってしまってあまり試せていなかったので、今日ちょっと使ってみました。
なかなか便利ですねー。こいつ。

Commandの場合は目的によって綺麗にモノが分かれている感じです。
plugin.xml には、
  • commandの定義
  • Commandをどこに表示するのか?の定義
  • どんな処理を行なうのか?のHandler定義
...など に分かれています。分かれているからこそ、すっきりとした定義も出来、今まで出来なかったけど出来るようになった事!があるんですね。

例えば....
* commandを複数作成するがHandlerのクラスを1つで使い回すパターン。
 この場合、commandにcommandParameterを設定してHandlerから取得する ことで実現。

*メニューアイテムをOn/Off切替(チェックボックス)にするパターン
 command定義の子要素にstateを記述してHandlerから状態を取得して処理する。
 ここのtoggleの所

*複数のメニューアイテムをラジオの選択形式にし、1つのHandlerで処理してしまうパターン
 ここのradioの所

なんて事とか楽に....というよりスッキリ?....出来ちゃうんですね。
しかも、処理を書くHandlerのクラスではラベル文字も書き換えできるようになっているもナイス。

ここらへんで参考になるのは Eclipse Tips のCommandsラベルが付いている記事
一通り読んだだけで、全て試してないけど、ISourceProviderとか...なんか夢が広がるww

Commands以外でもEclpse Tipsのサイトは凄いいい記事多いですねー。
今度ゆっくり読んでみる事にする!

あと、もう1つほほーっと思ったのが、Contributionに書くlocationURI.

<extension point="org.eclipse.ui.menus">
<menuContribution locationURI="****">
<command commandId="****" />
</menuContribution>
</extension>

ここのlocationURIで色々表示場所を切り替えれるみたいなんですが、
昔よりも分かりやすい表示になった気がする。
メニューのIDさえ分かれば、ここの後ろに...とか入れれるって事なんですよね。

locationURIの指定で見かけたものをpickupしてみました。

popup:#CompilationUnitEditorContext?after=additions
 JavaEditorのコンテキストメニューのaddtionsの下に追加

popup:org.eclipse.ui.popup.any
 すぺてのPopupmenuに追加? この場合詳細はVisibleWhenとかで指定する感じってことかな。

popup:org.eclipse.jdt.ui.PackageExplorer
 PackageExplorerのメニューに追加

menu:org.eclipse.ui.main.menu?after=navigate
 メニューに追加する時。上記の場合メインメニューのNavigateの後ろに追加

toolbar:org.eclipse.ui.main.toolbar
 ツールバーに追加する時。
• • •