Eine Anzeigefunktion für Strukturmischoperationen führt einen Zweifach- oder Dreifachvergleich der Eingabedaten aus, stellt die Ergebnisse in einer hierarchischen Sicht dar und ermöglicht dem Benutzer Mischoperationen mit den Eingabedaten. Anzeigefunktionen für Strukturmischoperationen werden normalerweise für Arbeitsbereichsressourcen oder die Member einer Archivdatei verwendet.
Da die Implementierung vieler Anzeigefunktionen für Strukturvergleiche auf einer Baumstruktur basiert, stellt das Plug-in für Vergleiche einen generischen StructureDiffViewer auf Baumstrukturbasis zur Verfügung. Für die Bereitstellung einer Strukturerstellungsfunktion, die ein einzelnes Eingabeobjekt in eine hierarchische Struktur zerlegt, ist Ihr Plug-in verantwortlich. Der StructureDiffViewer führt den Vergleich für die resultierende Struktur aus und zeigt das Ergebnis in Form einer Baumstruktur an.
Eine Strukturerstellungsfunktion für Ihr Plug-in können Sie unter Verwendung der Erweiterungorg.eclipse.compare.structureCreators bestimmen.
In manchen Fällen ist der baumstrukturbasierteStructureDiffViewer für ein Plug-in möglicherweise nicht geeignet. Am Erweiterungspunktorg.eclipse.compare.structureMergeViewers können Sie eine eigene Implementierung einer Anzeigefunktion für Strukturmischoperationen definieren. Bei der Implementierung der Anzeigefunktion werden Sie durch bereitgestellte Dienstprogrammklassen unterstützt.
Differencer ist eine Differenzierungssteuerkomponente für hierarchisch strukturierte Daten. Sie akzeptiert zwei oder drei Eingaben und führt einen Zweifach- bzw. Dreifachvergleich zwischen ihnen aus.
Wenn die Eingabeelemente für die Differenzierungssteuerkomponente die Schnittstelle IStructureComparator implementieren, wendet die Steuerkomponente sich selbst rekursiv auf die Kinder des Eingabeelements an. Blattelemente müssen die Schnittstelle IStreamContentAccessor implementieren, damit der Differenzierer den Inhalt Byte für Byte vergleichen kann.
Es gibt mehrere gute Beispiele für Differenzierer, die in der Plattformimplementierung enthalten sind:
In der Standardeinstellung gibt die Differenzierungssteuerkomponente das Vergleichsergebnis als Baumstruktur von Objekten DiffNode zurück. Ein Objekt DiffNode beschreibt die Änderungen, die zwischen zwei oder drei Eingabeobjekten vorgenommen wurden. Der Typ der Ergebnisknoten kann geändert werden, indem eine einzige Methode der Steuerkomponente überschrieben wird.
Eine Baumstruktur aus Objekten DiffNode kann in einer Anzeigefunktion des Typs DiffTreeViewer dargestellt werden. Für DiffTreeViewer müssen die inneren Knoten der Baumstruktur die Schnittstelle IDiffContainer und Blätter die Schnittstelle IDiffElement implementieren.
Die üblichen Schritte für den Vergleich von hierarchisch strukturierten Daten und für das Anzeigen der Unterschiede sind:
ZipFileStructureCreator ist eine Implementierung der Schnittstelle IStructureCreator, die den Inhalt eines komprimierten Archivs als hierarchische Struktur von Objekten IStructureComparator verfügbar macht, die auf einfache Weise durch die Differenzierunssteuerkomponente (Differencer) verglichen werden können. Dies stellt ein gutes Beispiel dafür dar, wie strukturierte Dateien für die hierarchische Vergleichsfunktionalität des Vergleichs-Plug-ins zur Verfügung gestellt werden können.