// 下階層用テンプレート #topicpath ---- //ここにコンテンツを記述します。 #contents **Eclipse3.3になって、キーバインドの設定方法が変わった [#lb0c63a2] [[キーバインディングを設定する>Eclipse/プラグイン開発のTIPS集/キーバインディングを設定する]] で、Eclipseのキーバインドをどのように設定するか、ちゃんというとあるアクションに対してどうやってキーバインドを関連づけるかについて書きました。 Eclipse3.2までは、org.eclipse.ui.commands 拡張ポイントで''「コマンド」を定義''し、org.eclipse.ui.bindings 拡張ポイントで''キーとコマンドIDを関連づけ''ました。さらに、org.eclipse.ui.actionSets 拡張ポイントのactionタグつまりアクションクラスの設定側で <action class="nu.mine.kino.plugin.samples.rcp.actions.HogeAction" definitionId="nu.mine.kino.plugin.samples.rcp.command" <- commandのid id="nu.mine.kino.plugin.samples.rcp.actions.HogeAction" label="アクション。" menubarPath="sampleMenu/sampleGroup" style="push" toolbarPath="sampleGroup"/> などとして''アクションとコマンドIDを関連づける''ことで、キーバインドを設定しました。 Eclipse3.3からはアクション関連の機構が、アクションクラスを使うのではなく、org.eclipse.ui.handlers 拡張ポイントと、org.eclipse.core.commands.AbstractHandler クラスを拡張するように変更されているようで、キーバインド設定もそのように機構が変更されています。org.eclipse.ui.commands,org.eclipse.ui.bindings 拡張ポイントでコマンドとキーバインドを定義するまでは同じですが、''コマンドIDに関連づけるのがアクションでなく、ハンドラに変更''されています。具体的には以下の通り。 **やってみる [#ba6c6837] -org.eclipse.ui.handlers 拡張ポイント <extension point="org.eclipse.ui.handlers"> <handler commandId="nu.mine.kino.plugin.samples.rcp.command" class="nu.mine.kino.plugin.newaction.handlers.SampleHandler"> </handler> ↑コマンドIDとハンドラクラスの関連づけ </extension> -AbstractHandlerのサブクラスSampleHandler package nu.mine.kino.plugin.newaction.handlers; public class SampleHandler extends AbstractHandler { public Object execute(ExecutionEvent event) throws ExecutionException { IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event); MessageDialog.openInformation( window.getShell(), "Newaction Plug-in", "Hello, Eclipse world"); return null; } } ちなみにorg.eclipse.ui.commands,org.eclipse.ui.bindings 拡張ポイントは以下のように設定しました。 -org.eclipse.ui.commands 拡張ポイント <extension point="org.eclipse.ui.commands"> <category id="nu.mine.kino.plugin.samples.rcp.category" name="Sample"/> <command categoryId="nu.mine.kino.plugin.samples.rcp.category" id="nu.mine.kino.plugin.samples.rcp.command" name="サンプルコマンド"/> </extension> -org.eclipse.ui.bindings 拡張ポイント <extension point="org.eclipse.ui.bindings"> <key sequence="M1+9" ctrl+9とかCommand+9とか commandId="nu.mine.kino.plugin.samples.rcp.command" schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"> </key> </extension> 以上で、キーバインドの設定は完了です。このままだとメニューに表示されないので、キーボードショートカットからしかハンドラを起動できませんが、ctrl+9とかcommand+9で先のハンドラクラスが実行されます。 #ref(handlerExecute.png) もちろんコマンドとキーバインドの関連については何も変わってないので、キーバインドの設定画面には上記バインドが表示されています。 #ref(keybinding.png) **TIPS集 [#l8a5f4fe] **関連リンク [#t7f324d5] -Eclipse/プラグイン開発のTIPS集/キーバインディングを設定する -[[Eclipse V3.3 でメニュー項目を構成して追加する方法>http://www.ibm.com/developerworks/jp/opensource/library/os-eclipse-3.3menu/index.html]] ---- この記事は #vote(おもしろかった[1],そうでもない[0]) - キーバインドの設定はもちろん、メニューバーやツールバー、ポップアップメニューへの追加機構も変わってるですよねー。 -- [[きの]] &new{2009-02-19 (木) 11:30:54}; #comment #topicpath SIZE(10){現在のアクセス:&counter;}