Il plug-in di confronto fornisce supporto sostanziale per l'implementazione del visualizzatore di contenuto:
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 modulo di differenziazione restituisce il risultato dell'operazione di confronto come struttura di oggetti DiffNode objects. A DiffNode descrive le modifiche tra due o tre input. Il tipo dei nodi risultati può essere modificato sostituendo un solo metodo del modulo.
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 passaggi 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). E un buon esempio di come rendere i file strutturati disponibili per la funzionalità di confronto gerarchico del plug-in di confronto.