- 追加された行はこの色です。
- 削除された行はこの色です。
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents
**Eclipse3.3になって、キーバインドの設定方法が変わった [#lb0c63a2]
[[キーバインディングを設定する>Eclipse/プラグイン開発のTIPS集/キーバインディングを設定する]] で、Eclipseのキーバインドをどのように設定するか、ちゃんというとあるアクションに対してどうやってキーバインドを関連づけるかについて書きました。
Eclipse3.3までは、org.eclipse.ui.commands 拡張ポイントで''「コマンド」を定義''し、org.eclipse.ui.bindings 拡張ポイントで''キーとコマンドIDを関連づけ''ました。さらに、org.eclipse.ui.actionSets 拡張ポイントのactionタグつまりアクションクラスの設定側で
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.4からはアクション関連の機構が、アクションクラスを使うのではなく、org.eclipse.ui.handlers 拡張ポイントと、org.eclipse.core.commands.AbstractHandler クラスを拡張するように変更されているようで、キーバインド設定もそのように機構が変更されています。org.eclipse.ui.commands,org.eclipse.ui.bindings 拡張ポイントでコマンドとキーバインドを定義するまでは同じですが、''コマンド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(おもしろかった,そうでもない)
- キーバインドの設定はもちろん、メニューバーやツールバー、ポップアップメニューへの追加機構も変わってるですよねー。 -- [[きの]] &new{2009-02-19 (木) 11:30:54};
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}