Dieser Abschnitt enthält zusätzliche Informationen zur erweiterten API im Vergleichs-Plug-in.
Eine Vergleichsoperation muss als eine Unterklasse von CompareEditorInput implementiert werden. Ein CompareEditorInput führt eine (potenziell langwierige) Vergleichsoperation unter Fortschrittüberwachungssteuerung aus, erstellt eine Benutzerschnittstelle zur Detailanalyse der Vergleichsergebnisse, verfolgt den Benutzungsstatus der Ergebnisse im Fall einer Zusammenfügung und speichert alle Änderungen, die während einer Zusammenfügung vorgenommen wurden.
CompareUI definiert den Eingangspunkt, an dem eine konfigurierbare Vergleichsoperation für willkürliche Ressourcen eingeleitet wird. Das Ergebnis der Vergleichsoperation wird in einem Vergleichseditor geöffnet, in dem die Details in dynamisch ausgewählten Struktur- und Inhaltsanzeigefunktionen durchsucht und bearbeitet werden können.
Mit NavigationAction kann in den einzelnen Unterschieden von CompareEditorInput navigiert werden.
CompareConfiguration konfiguriert unterschiedliche Benutzerschnittstellenaspekte der Anzeigefunktionen für Vergleichs-/Mischoperationen wie Titelbezeichnungen und Images bzw. die Eigenschaft, eine Seite der Anzeigefunktion für Mischoperationen bearbeiten zu können. Es wird bei seiner Erstellung an CompareEditorInput übergeben.
Beim Implementieren einer hierarchischen Vergleichsoperation als
Unterklasse von
CompareEditorInput
müssen Clients eine Objektbaumstruktur bereitstellen, in der
jeder Knoten die Schnittstelle
IStructureComparator
implementiert.
Diese Schnittstelle wird durch die hierarchische
Differenzierungssteuerroutine
(Differencer)
verwendet, um die Baumstruktur zu durchlaufen.
Zusätzlich muss jedes Blatt der Baumstruktur die Schnittstelle
IStreamContentAccessor
implementieren, damit die Differenzierungssteuerroutine
auf seinen Datenstrominhalt zugreifen kann.
BufferedContent stellt eine Standardimplementierung der Schnittstellen IStreamContentAccessor und IContentChangeNotifier zur Verfügung. Seine Unterklasse ResourceNode fügt eine Implementierung für die Schnittstellen IStructureComparator und ITypedElement hinzu, die auf Workbenchressourcen der Plattform basiert (IResource). Sie kann ohne Änderungen als Eingabe für die Differenzierungssteuerkomponente verwendet werden.
Wenn Sie die Vergleichsfunktionalität außerhalb des Standardeditors für Vergleiche nutzen wollen (z. B. in einem Dialog oder einem Assistenten), stellt das Vergleichs-Plug-in zusätzliche Helperklassen zur Verfügung.
CompareViewerPane ist eine Komfortklasse, die eine Bezeichnung und eine lokale Symbolleiste für eine Vergleichsanzeigefunktion (oder alle anderen Unterklassen einer JFace-Anzeigefunktion) zur Verfügung stellt. Ihre abstrakte Unterklasse CompareViewerSwitchingPane unterstützt das dynamische Umschalten von Anzeigefunktionen, also die dynamische Ermittlung der installierten Anzeigefunktion im Teilfenster durch das Eingabeobjekt des Teilfensters.
EditionSelectionDialog ist ein einfacher Auswahldialog, in dem ein Eingabeelement mit einer Liste von Protokollvarianten (Editionen) desselben Eingabeelements verglichen werden kann. Der Dialog wird zur Implementierung von Funktionen wie beispielsweise Durch lokales Protokoll ersetzen für Workbenchressourcen unterstützt.
Außerdem ist es möglich, über einen Pfad einen Teilbereich des Eingabeelements (z. B. eine Methode in einer Java-Quellendatei) anzugeben. In diesem Fall vergleicht der Dialog nur den Teilbereich (wie vom Pfad angegeben) mit dem entsprechenden Teilbereich in der Liste der Editionen. Diese Funktionalität kann zur Implementierung von Element aus lokalem Protokoll ersetzen für Java-Elemente verwendet werden.
Für EditionSelectionDialog müssen die Editionen die Schnittstellen IStreamContentAccessor und IModificationDate implementieren. HistoryItem ist eine Komfortklasse, die diese Schnittstellen für Objekte IFileState implementiert.