Eine Anzeigefunktion für Strukturmischoperationen führt einen Zweifach- oder Dreifachvergleich der Eingabedaten aus, stellt die Ergebnisse in einer hierarchische Baumstruktur dar und ermöglicht dem Benutzer Mischoperationen mit den Eingabedaten. Anzeigefunktionen für Strukturmischoperationen werden häufig für Arbeitsbereichressourcen oder Teildateien einer Archivierungsdatei 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. StructureDiffViewer führt den Vergleich auf Grundlage der entstehenden Struktur aus und zeigt das Ergebnis als Baumstruktur an.
Eine Strukturerstellungsfunktion für Ihr Plug-in können Sie unter Verwendung der Erweiterung org.eclipse.compare.structureCreators bestimmen. Ganz ähnlich wie bei Inhaltsanzeigefunktionen können Strukturerstellungsfunktionen für eine Gruppe von Dateierweiterungen bestimmt werden, oder ein contentTypeBinding kann verwendet werden, um einen Inhaltstyp einer bestimmen Strukturerstellungsfunktion zuzuordnen. An dieser Stelle wird nicht noch einmal auf die Formatierungssteuerzeichen eingegangen, da sie denen der Inhaltsanzeigefunktionen ähnlich sind. Das JDT-Plug-in definiert mehrere Ergänzungen für org.eclipse.compare.structureCreators.
In manchen Fällen mag der baumstrukturbasierte StructureDiffViewer für Ihr Plug-in nicht geeignet sein. Am Erweiterungspunkt org.eclipse.compare.structureMergeViewers können Sie eine eigene Implementierung einer Anzeigefunktion für Strukturmischoperationen definieren. Eine Anzeigefunktion für Strukturmischoperationen kann für Dateierweiterungen bestimmt werden, oder ein contentTypeBinding kann verwendet werden, um einen Inhaltstyp einer bestimmen Anzeigefunktion für Strukturmischoperationen zuzuordnen. Weitere Beispiele für org.eclipse.compare.structureMergeViewers-Ergänzungen finden Sie im Abschnitt über JDT-Plug-ins.
Das Such-Plug-in bietet verschiedene Dienstprogrammklassen, die Sie bei der Implementierung einer Suchanzeigefunktion unterstützen.
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 untergeordneten Elemente 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:
Standardmäßig gibt die Differenzierungssteuerkomponente das Ergebnis der Vergleichsoperation in Form einer Baumstruktur von Objekten DiffNode zurück. Ein Objekt DiffNode beschreibt die Änderungen zwischen zwei bzw. drei Eingaben. Durch das Überschreiben einer einzelnen Methode der Steuerkomponente kann die Art der Ergebnisknoten jedoch geändert werden.
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:
Der Typ StructureDiffViewer ist eine spezielle Form von DiffTreeViewer, die die drei oben genannten Schritte automatisiert. Er akzeptiert ein einzelnes Eingabeobjekt vom Typ ICompareInput, aus dem er zwei oder drei Eingabeelemente für den Vergleich abruft. Er verwendet IStructureCreator, um eine Baumstruktur zu extrahieren, die Objekte IStructureComparator und IStreamContentAccessor aus den Eingaben enthält. Diese Baumstrukturen werden dann mit der Differenzierungssteuerkomponente verglichen, und die Ergebnisse werden in der Baumstrukturanzeigefunktion angezeigt.
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 Differenzierungssteuerkomponente (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.