キーバインディングを設定する で、Eclipseのキーバインドをどのように設定するか、ちゃんというとあるアクションに対してどうやってキーバインドを関連づけるかについて書きました。
Eclipse3.3までは、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に関連づけるのがアクションでなく、ハンドラに変更されています。具体的には以下の通り。
<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>
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 拡張ポイントは以下のように設定しました。
<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>
<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で先のハンドラクラスが実行されます。
この記事は
現在のアクセス:9490