Questa sezione fornisce informazioni aggiuntive sull'API avanzata nel plug-in di confronto.
Un'operazione di confronto deve essere implementato come sottoclasse di CompareEditorInput. Un CompareEditorInput esegue un'operazione di confronto (potenzialmente lunga) nel controllo di avanzamento dell'operazione, crea una UI per il drill-down dei risultati di confronto, registra lo stato dirty dei risultati in caso di unione e salva 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 all'esterno dell'editor di confronto standard, ad esempio in una finestra di dialogo o una procedura guidata, il plug-in di confronto fornisce classi di supporto aggiuntive:
CompareViewerPane è una classe utile 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 in visualizzatore installato nel riquadro viene determinato dinamicamente dall'oggetto 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 sottosezione dell'elemento di input (ad esempio, un metodo in una file di origine Java) mediante 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 utile che implementa queste interfacce per gli oggetti IFileState.