バインディング

org.eclipse.ui.bindings

3.1

org.eclipse.ui.bindings 拡張ポイントは、バインディングおよびスキームを宣言する場合に使用します。スキームは 1 つ以上のバインディングのセットです。バインディングは特定の条件グループ、一部のユーザー入力、およびトリガーされたコマンド間のマッピングです。

すべてのバインディングには、何らかの種類のトリガー、バインディングがアクティブなコンテキスト、およびバインディングが存在するスキームが必要です。選択するコンテキストが不明な場合は、ブランクのまま残してください。デフォルト・コンテキストは "org.eclipse.ui.contexts.window" です。このコンテキストの場合、すべての Eclipse メイン・ウィンドウにバインディングが適用されます。コンテキストがアクティブになると、バインディングもアクティブになります。子コンテキストのバインディングは、親コンテキストのバインディングよりも優先します。コンテキストについての詳細は、org.eclipse.ui.contexts 拡張ポイントを参照してください。

コマンド ID を定義しないバインディングは削除マーカーです。つまり、すべての条件が満たされている場合は、同じコンテキスト内の同じトリガーを持つすべてのバインディングがキャンセルされます。このメカニズムは、特定のプラットフォームのバインディングを変更する場合などに使用できます。

バインディングのタイプの 1 つは key バインディング (キーボード・ショートカット) です。例えば、Ctrl+CCopy のバインディングは key バインディングとみなされます。キー・バインディングのトリガーは、キー・ストロークのシーケンスです。

スキームは、エンド・ユーザーが選択できるセットにこれらのバインディングをグループ化したものです。例えば、ユーザーはデフォルト・スキームを使用したり、Emacs 型のスキームや Brief 型のスキームを使用することができます。

<!ELEMENT extension (scheme , key)>

<!ATTLIST extension

point CDATA #REQUIRED

id    CDATA #IMPLIED

name  CDATA #IMPLIED>


<!ELEMENT scheme EMPTY>

<!ATTLIST scheme

id          CDATA #REQUIRED

name        CDATA #REQUIRED

description CDATA #IMPLIED

parentId    CDATA #IMPLIED>

スキームは、エンド・ユーザーが選択して使用できるバインディングをグループ化したものです。

スキームは親スキームからバインディングを継承できます。これにより、プラグイン開発者はカスタマイズされたバインディング・セットを簡単に作成できます。子スキームと親スキームのトリガーが同じである場合、子スキーム内で定義されたアクティブなバインディングは、親スキーム内のアクティブなバインディングよりも常に優先します。この技法を使用して、ワークベンチ内で Emacs スキームが提供されます。



<!ELEMENT key (parameter)>

<!ATTLIST key

sequence  CDATA #REQUIRED

schemeId  CDATA #REQUIRED

contextId CDATA "org.eclipse.ui.contexts.window"

commandId CDATA #IMPLIED

platform  CDATA #IMPLIED

locale    CDATA #IMPLIED>

一部のキーボード入力とコマンド・トリガー間のバインディング



<!ELEMENT parameter EMPTY>

<!ATTLIST parameter

id    CDATA #IMPLIED

value CDATA #IMPLIED>

実行時にコマンドに渡されるパラメーターの名前および値。これにより、コマンドを特定の方法で修飾できます。例えば、「ビューの表示」コマンドにはパラメーターとしてビュー ID を指定できます。



<extension point=

"org.eclipse.ui.bindings"

>

<key sequence=

"M2+F5"

commandId=

"commandId"

schemeId=

"default"

contextId=

"windows"

/>

<scheme name=

"Default"

description=

"Eclipse のデフォルトのショートカット"

id=

"default"

/>

</extension>

バインディングを定義するための パブリック API はありません。動作を安定させるために、バインディングの定義は拡張ポイントを通してのみ行うようにしてください。RCP アプリケーションでは、WorkbenchAdvisor でこの動作を無効にする必要があります。

バインディングを機能させるには、コマンドを定義する必要があります。特定のバインディングを機能させるには、コマンドにアクティブなハンドラーが必要です。ハンドラーはプログラマチックに登録できます。org.eclipse.ui.handlers 拡張ポイントを参照してください。