Informationen für Fortgeschrittene

Dieser Abschnitt enthält zusätzliche Informationen zur erweiterten API im Vergleichs-Plug-in.

Vergleichsoperationen schreiben

Eine Vergleichsoperation muss als Unterklasse von CompareEditorInput implementiert werden.  CompareEditorInput führt eine (potenziell lang andauernde) Vergleichsoperation unter Fortschrittsüberwachungssteuerung durch, erstellt eine Benutzerschnittstelle, mit der Details der Vergleichsergebnisse angezeigt werden können ("drill-down"), protokolliert den Benutzungsstatus der Ergebnisse einer Mischoperation und speichert alle Änderungen, die während des Mischens aufgetreten sind.

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, ob eine Seite der Anzeigefunktion für Mischoperationen bearbeitet werden kann. 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.

Vergleichsfunktionalität außerhalb von Vergleichseditoren

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 komfortable Klasse, die eine Bezeichnung und eine lokale Symbolleiste für eine Vergleichsanzeigefunktion (oder alle anderen Unterklassen einer JFace-Anzeigefunktion) bereitstellt.  Ihre abstrakte Unterklasse CompareViewerSwitchingPane unterstützt den dynamische Wechsel von Anzeigefunktionen, also die dynamische Bestimmung der installierten Anzeigefunktion 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 komfortable Klasse, die diese Schnittstellen für Objekte IFileState implementiert.

 

Copyright IBM Corporation und Andere 2000, 2003.