Questa sezione fornisce informazioni aggiuntive sull'API avanzata nel plug-in di confronto.
Un'operazione di confronto deve essere implementata come sottoclasse di CompareEditorInput. CompareEditorInput esegue un confronto (in genere di lunga durata) con indicatore di avanzamento, crea un'interfaccia utente che consente di esaminare in dettaglio i risultati del confronto, traccia lo stato non finale del risultato in caso di unione e salva tutte le modifiche apportate durante un'unione.
CompareUI definisce il punto di immissione per inizializzare un'operazione di confronto configurabile su risorse arbitrarie. L'esito del confronto viene visualizzato in un editor di confronto, che consente di consultare e modificare i dettagli in visualizzatori di struttura e di contenuto selezionati in modo dinamico.
NavigationAction viene utilizzato per esplorare le singole differenza di un CompareEditorInput.
CompareConfiguration configura diversi aspetti della UI di visualizzatori di confronto/unione come etichette e immagini dei titoli o definisce se un lato di un visualizzatore di unione è modificabile. Al momento della creazione viene passato a CompareEditorInput.
Quando si implementa un'operazione di confronto gerarchico come sottoclasse di CompareEditorInput,
i client devono fornire una struttura di oggetti in cui ciascun nodo implementa l'interfaccia IStructureComparator.
Questa interfaccia viene utilizzata dal modulo di differenziazione gerarchica Differencer) per esaminare la struttura.
Inoltre ogni ramo della struttura deve implementare l'interfaccia IStreamContentAccessor
per poter fornire al modulo di differenziazione accesso al contenuto del flusso.
BufferedContent fornisce un'implementazione predefinita per le interfacce IStreamContentAccessor e IContentChangeNotifier. La sua sottoclasse ResourceNode aggiunge un'implementazione per le interfacce IStructureComparator e ITypedElement sulla base delle risorse del workbench della piattaforma (IResource). Può essere utilizzata senza alcuna modifica come l'input del motore di differenziazione.
Se si desidera utilizzare la funzionalità di confronto al di fuori dell'editor di confronto standard (ad esempio in una finestra di dialogo o in una procedura guidata), il plug-in di confronto offre classi di helper aggiuntive.
CompareViewerPane è una classe di convenienza che fornisce un'etichetta e una barra degli strumenti locale per un visualizzatore di confronto (o qualsiasi sottoclasse di un visualizzatore JFace). La sua sottoclasse astratta CompareViewerSwitchingPane supporta il passaggio dinamico tra i visualizzatori, in altre parole un visualizzatore installato nel riquadro viene determinato dinamicamente dall'oggetto di input del riquadro.
EditionSelectionDialog è una semplice finestra di dialogo di selezione in cui un elemento di input può essere confrontato con un elenco di varianti storiche (edizioni) dello stesso elemento di input. La finestra di dialogo viene utilizzata per implementare funzioni quali "Sostituisci con cronologia locale sulle risorse del workbench.
Inoltre è possibile specificare una sezione secondaria dell'elemento di input, ad esempio un metodo in un file di origine Java, attraverso un percorso. In questo caso la finestra di dialogo mostra solo la sezione secondaria (così come indicata dal percorso) e le corrispondenti sezioni secondarie nell'elenco delle edizioni. Questa funzionalità può essere utilizzata per implementare "Sostituisci con elemento da cronologia locale per gli elementi Java.
EditionSelectionDialog richiede che le edizioni implementino le interfacce IStreamContentAccessor e IModificationDate. HistoryItem è una classe di convenienza che implementa queste interfacce per gli oggetti IFileState.