シングルクリック・サポートの適用

ワークベンチの「設定」を使用すると、ビューでオブジェクトをシングルクリックして開くか、またはダブルクリックして開くかをユーザーが指定できます。

設定がすべてのビューに反映されないという制限のあるワークベンチ「オープン・モード」設定

この設定に関する制限は、すべてのビューに適用されないのはなぜでしょうか?  それは、プラグインによって組み込まれたビューは、この設定をそれらのインプリメンテーションで明示にサポートする必要があるためです。

低レベルの詳細を扱うため、SWT コントロールの作成および標準 SWT コードの書き込みによって、または JFace ビューアーを使用して、ビューがインプリメントされることを思い出してください。  シングルクリック設定を適用すると、どちらのレベルでも行うことができます。  他のオブジェクトを開く多くのビューは、構成された、リストのようなビューにオブジェクトを表示します。  ここでは、この種類のビューに注目してみましょう。  別の方法でビューがオブジェクトを表示する場合は、シングルクリックをサポートするため、SWT レベルの概念を使用することになるでしょう。

JFace ビューアーでシングルクリック

JFace リスト指向ビューアーを使用してオブジェクトを表示している場合、 シングルクリックをサポートすることが簡単です。  項目をビュー内に開くことを起動するため、addDoubleClickListener を使用する代わりに addOpenListener を使用します。  オープン・リスナーは、指定されたマウス・イベントが発生するときにオープン・イベントを実行する、現行のワークベンチの設定を適用します。

それでもダブルクリックによる項目のツリー展開など、非オープン・アクション用に addDoubleClickListener を使用することができます。

SWT コントロールでシングルクリック

SWT コントロール・レベルでシングルおよびダブルクリックのロジスティクスを扱うため、JFace は、ユーティリティー・クラス OpenStrategy を提供します。  OpenStrategy は、 現行ワークベンチのオープン設定を適用するために、ワークベンチの「設定」ダイアログによって構成されます。 実際、JFace ビューアーは、このクラスを使用してオープン・リスナーをインプリメントします。 

OpenStrategy を作成し、SWT コントロールに関連付ける必要があります。  OpenStrategy は、対応するイベントをフックし、 ユーザーの設定に基づいて解釈します。  あなたの責任は、開くコードをインプリメントするストラテジーにオープン・リスナーを追加することです。  このようにして、どのウィジェット・イベントがオープン・イベントを起動するかについての知識は、ユーザーには必要ありません。

OpenStrategy openHandler = new OpenStrategy(control);
openHandler.addOpenListener(new IOpenEventListener() {
	public void handleOpen(SelectionEvent e) {
	// code to handle the open event.
	...
	}
}

オープンの他のワークベンチ設定 (移動で選択、矢印キーで開く) も、OpenStrategy によって処理されます。 これは、JFace ビューアーまたは OpenStrategy クラスを使用して、オープンに関する振る舞いをインプリメントした場合に「正しい動作」が起こることを意味します。

オープンでのエディターの活動化

オープン・イベントを処理するとき、OpenStrategy.activateOnOpen() を使用して、 開かれたエディターをデフォルトで開くかどうかを決める必要があります。  エディターをアクティブにすると、ビューからエディターにフォーカスをスイッチします。 これは、シングルクリック・モードでは特に分かりにくいため望ましくありません。

Copyright IBM Corporation and others 2000, 2003.