拡張比較技法

このセクションでは、比較プラグインの拡張 API に関する追加情報を提供します。

比較操作の記述

比較操作は、CompareEditorInput のサブクラスとして実装する必要があります。 CompareEditorInput は進行モニター制御のもとで (潜在的に冗長な) 比較操作を実行し、比較結果を細かく調べるための UI を作成し、マージの場合に結果の編集中状態をトラックし、またマージの間に発生した変更を保管します。

CompareUI は、任意のリソースに対して構成可能な比較操作を開始するためのエントリー・ポイントを定義します。 比較の結果は比較エディターで開かれ、ここでは、動的に選択した構造およびコンテンツ・ビューアーで詳細をブラウズおよび編集することができます。

NavigationAction は、CompareEditorInput の個々の相違をナビゲート (ステップ) するために使用します。

CompareConfiguration は、比較/マージ・ビューアーの各種 UI の性質 (例えばタイトル・ラベルやイメージ、またはマージ・ビューアー側を編集可能にするかどうかなど) を構成します。 これは作成時に CompareEditorInput に渡されます。

階層比較操作を CompareEditorInput のサブクラスとしてインプリメントするときには、クライアントがオブジェクトのツリーを提供し、各ノードがインターフェース IStructureComparator をインプリメントします。 このインターフェースは、階層相違検出エンジン (Differencer) が、ツリーを探索するために使用します。
さらに、ツリーのすべてのリーフが、そのストリーム・コンテンツへのアクセスを相違検出エンジンに提供するために、IStreamContentAccessor インターフェースを実装する必要があります。

BufferedContent は、IStreamContentAccessor および IContentChangeNotifier インターフェースのデフォルトの実装を提供します。 そのサブクラス ResourceNode は、 プラットフォーム・ワークベンチ・リソース (IResource) に基づいた IStructureComparator および ITypedElement インターフェースの 実装を追加します。 変更することなく、これを相違検出エンジンへの入力として使用できます。

比較エディター外部の比較機能

標準の比較エディター外部の比較機能 (たとえば、ダイアログ、ウィザードなど) を使用したい場合は、 比較プラグインが追加の helper クラスを提供します。

CompareViewerPane は、 比較ビューアー用のラベルおよびローカル・ツールバー (または、JFace ビューアーのその他のサブクラス) を提供するコンビニエンス・クラスです。 その抽象サブクラス CompareViewerSwitchingPane は、動的ビューアー切り替えをサポートします。 つまり、ペインにインストールされるビューアーは、ペインの入力オブジェクトによって動的に判別されます。 

EditionSelectionDialog は簡単な選択ダイアログで、1 つの入力エレメントを同じ入力エレメントのヒストリー・バリアント (エディション) のリストと比較することができます。 ダイアログは、ワークベンチ・リソース上に「ローカル・ヒストリーとの置換」のような機能を実装するために使用します。

さらに、path を使用して、入力エレメントのサブセクション (たとえば Java ソース・ファイル内のメソッドなど) を指定することもできます。 この場合、ダイアログでは、サブセクション (path で指定されたもの) だけが、エディションのリスト内の対応するサブセクションと比較されます。 この機能は、Java エレメント用に「ローカル・ヒストリーからのエレメントとの置換」を実装するために使用できます。

EditionSelectionDialog では、エディションが IStreamContentAccessor および IModificationDate インターフェースをインプリメントしていることが必要です。 HistoryItem は、 IFileState オブジェクトの これらのインターフェースをインプリメントするコンビニエンス・クラスです。