實作結構檢視器

結構合併檢視器執行雙向或三向的輸入比較,用階層式方式呈現結果,讓使用者在輸入間合併資料。 對工作區資源或保存檔成員來說,結構合併檢視器是常見的。

類樹狀的結構檢視器

因為許多結構比較檢視器的實作方式是以樹狀結構為基礎, 所以比較外掛程式提供了一個通用的樹狀結構型 StructureDiffViewer。您的外掛程式負責提供一個結構建立器,將單一輸入物件打斷成階層式結構。StructureDiffViewer 根據結果結構來執行比較,並將結果顯示成樹狀結構。

您可以使用 org.eclipse.compare.structureCreators 延伸項目,為外掛程式指定一個結構建立器。

其他階層式結構檢視器

在某些情況中,樹狀結構型的 StructureDiffViewer 可能不適合您的外掛程式。 org.eclipse.compare.structureMergeViewers 延伸點可讓您為結構合併檢視器定義您自己的實作方式。提供公用程式類別,以協助您實作檢視器。

差異器

差異器 是階層化結構資料的差異引擎。它採用兩個或三個輸入,並對它們執行雙向或三向比較。

如果差異引擎的輸入元素實作 IStructureComparator 介面,則引擎會循環地將自己套用至輸入元素的子項。 葉節點元素必須實作 IStreamContentAccessor 介面,以便差異器可以對它們的內容執行位元組比較。

包含了一些有關差異器不錯的範例:

依預設,差異分析引擎會以 DiffNode 物件的樹狀結構方式, 傳回比較作業的結果。 DiffNode 說明兩個或三個輸入之間的變更。您可以置換單一引擎方法來變更節點結果的類型。

差異檢視器

DiffNode 的樹狀結構 可顯示在 DiffTreeViewer 之中。 DiffTreeViewer 需要樹狀結構的內部節點實作 IDiffContainer 介面,以及葉節點實作 IDiffElement 介面。

比較階層化結構資料及顯示差異的典型步驟如下:

  1. 將輸入資料對映至實作 IStructureComparatorIStreamContentAccessor 介面之物件的樹狀結構
  2. 利用差異器執行比較作業
  3. 將差異結果饋送至 DiffTreeViewer
StructureDiffViewer 是特殊化的 DiffTreeViewer, 可使上述的三個步驟自動進行。它採用類型 ICompareInput 的單一輸入物件, 並且從中擷取兩個或三個要比較的輸入元素。 它使用 IStructureCreator, 從它們之中擷取包含 IStructureComparatorIStreamContentAccessor 的樹狀結構。 然後,這些樹狀結構會與差異引擎做比較,而且結果會顯示在樹狀結構檢視器中。

ZipFileStructureCreatorIStructureCreator 介面的實作,使得可用的 ZIP 保存檔的內容為 IStructureComparator 階層式結構,可使用差異引擎(差異器)輕鬆的作比較。 這是如何使得結構化檔案可供比較外掛程式的階層式比較功能使用的良好範例。

Copyright IBM Corporation and others 2000, 2003.