Un visualizzatore di unione struttura esegue un confronto bidirezionale o a tre vie de i propri input, presenta i risultati in una vista gerarchica e consente all'utente di unire gli input. Questo tipo di visualizzatore è molto comune per le risorse dello spazio di lavoro o per i membri di un file di archivio.
Dal momento che l'implementazione di numerosi visualizzatori di confronto delle strutture si basa su una struttura ad albero, il plug-in di confronto fornisce un generico StructureDiffViewer basato sulla struttura ad albero. Il plug-in fornisce un creatore di struttura che suddivide un singolo oggetto di input in una struttura gerarchica. StructureDiffViewer esegue il confronto sulla struttura ottenuta e i risultati vengono visualizzati come una struttura ad albero.
Il creatore della struttura viene designato per il plug-in utilizzando l'estensione org.eclipse.compare.structureCreators.
In alcuni casi, il StructureDiffViewer basato sulla struttura ad albero potrebbe non risultare appropriato per il plug-in in uso. Il punto di estensione org.eclipse.compare.structureMergeViewers consente di definire la propria implementazione per un visualizzatore di unione di struttura. Le classi di utilità vengono fornite per semplificare l'implementazione del visualizzatore.
Ildifferenziatore è un modulo di differenziazione per i dati strutturati gerarchicamente, che esegue confronti simultanei bidirezionali o a tre direzioni tra i due o i tre input richiesti.
Se gli elementi di input per il modulo di differenziazione implementano l'interfaccia IStructureComparator, il modulo applica in modo ricorsivo se stesso agli elementi secondari dell'elemento di input. Gli elementi foglia devono implementare l'interfaccia IStreamContentAccessor in modo che il differenziatore possa eseguire un confronto sulla base dei byte del rispettivo contenuto.
Esistono diversi buoni esempi di differenziatori inclusi nell'implementazione della piattaforma:
Per impostazione predefinita il motore di differenziazione riporta il risultato dell'operazione di confronto in una struttura di oggetti DiffNode. Un DiffNode descrive le modifiche tra due o tre input. Il tipo di nodi del risultato può essere modificato sostituendo un singolo metodo del motore.
Una struttura di DiffNodes può essere visualizzata in un DiffTreeViewer. DiffTreeViewer richiede che i nodi interni della struttura implementino l'interfaccia IDiffContainer e le foglie implementano l'interfaccia IDiffElement.
I passi tipici per confrontare i dati strutturati gerarchicamente e per visualizzare le differenze sono i seguenti:
ZipFileStructureCreator è un'implementazione dell'interfaccia IStructureCreator e rende il contenuto di un'archivio zip disponibile come struttura gerarchica di IStructureComparators che può facilmente essere confrontata dal modulo di differenziazione (Differencer). È un buon esempio di come rendere i file strutturati disponibili per la funzionalità di confronto gerarchico del plug-in di confronto.