Java サンプル・エディターは、いくつもの役立つデフォルト動作を AbstractTextEditor から継承します。テキスト編集フレームワークは、 AbstractTextEditor のメソッドをオーバーライドすることによってあなたがカスタマイズできる、いくつかのその他の責任を処理します。 どのように動作がフレームワークでカスタマイズされるかを調べるには、このクラスおよびそのサブクラスの実装を表示してください。
構成可能な、いくつかの役立つフレームワーク・フィーチャーは以下のとおりです。
テキスト・エディターは一般に、エディターの表示および動作を制御するユーザー設定を提供します。テキスト・フレームワークにおいて、テキスト・エディター・インスタンスはそれぞれ、ユーザー設定へのアクセスに使用される関連設定ストアを持っています。 この設定ストアはエディターによってセットアップできますが、すでにフレームワークで使用されている設定ストアから継承することもできます。
Java サンプル・エディターの場合、 TextEditor によって初期化された設定ストアを継承しています。これは、ワークベンチ・エディター・プラグインによって定義されている設定ストアです。
protected void initializeEditor() { ... setPreferenceStore(EditorsPlugin.getDefault().getPreferenceStore()); }エディター・プラグイン設定は、
エディターの標準ワークベンチ・テキスト設定を使用したくない場合、別の設定ストアを設定することができます。これは通常、initializeEditor をオーバーライドし、独自の設定ストアを設定することによって行われます。 独自の設定ストアを使用する場合、設定が更新されるたびに起動されるメソッド handlePreferenceStoreChanged() を上書きすることが必要になります。
キー・バインディングの検索順序を指定するには、キー・バインディング・コンテキストが役立ちます。コンテキストのキー・バインディングを準備しておくと、異なるプラグインが競合するキー・シーケンスを提供する可能性が小さくなります。デフォルトでは、ワークベンチはウィンドウやダイアログで作業する一般的なコンテキストで作動します。テキスト・エディターがアクティブになると、テキスト・エディターがコンテキストをテキスト編集コンテキストにリセットするため、エディター固有のキー・バインディングがアクティブになります。
プラットフォーム・テキスト・フレームワークにおいて、テキスト・エディター・インスタンスはそれぞれ、キー・バインディング・スコープの関連した配列を持っています。テキスト・エディター・インスタンスは、アクティブになると、正しいスコープの設定を行わなければなりません。 AbstractDecoratedTextEditor は、このスコープを定義し、アクティブにします。以下のように、スコープはコンストラクターから呼び出されたメソッドで割り当てられます。
protected void initializeKeyBindingScopes() { setKeyBindingScopes(new String[] { "org.eclipse.ui.textEditorScope" }); }
メソッドへの引数は、コンテキストに対して定義された ID の配列です。エディターで独自のキー・バインディング・コンテキストを定義したい場合、このメソッドをエディター・クラスで上書きするか、setKeybindingScopes を使用してスコープを動的に設定することができます。
コンテキスト自体は、org.eclipse.ui.contexts 拡張ポイントの対応する ID で定義されていなければなりません。テキスト編集コンテキストの定義は、以下のとおりです。
<extension point="org.eclipse.ui.contexts"> <context name="%context.editingText.name" description="%context.editingText.description" id="org.eclipse.ui.textEditorScope" parentId="org.eclipse.ui.contexts.window"> </context> ...
(注: ここでは、スコープおよびコンテキストという用語は、区別なく使用されています。テキスト・クラスのメソッド名は、まだ、キー・バインディング・コンテキストをスコープと呼んでいます。これらのメソッド名は、オリジナルのコンテキストの実装をスコープとして表し、旧式の用語を使用します。)