Le plug-in de comparaison fournit un support pour l'implémentation de votre propre afficheur de contenu :
Differencer est un moteur d'analyse des différences destiné aux données structurées de façon hiérarchique. Il sélectionne deux ou trois entrées sur lesquelles il effectue une opération de comparaison bidirectionnelle ou tridirectionnelle.
Si les éléments d'entrée du moteur d'analyse des différences mettent en oeuvre l'interface IStructureComparator, le moteur s'applique de manière récursive aux enfants de l'élément d'entrée. Les éléments feuille doivent mettre en oeuvre l'interface IStreamContentAccessor de sorte que l'analyseur des différences les soumettent à une comparaison au niveau des octets.
L'implémentation de la plateforme inclut quelques bons exemples de modules d'analyse des différences :
Par défaut, le moteur d'analyse des différences renvoie le résultat de l'opération de comparaison sous la forme d'une arborescence d'objets DiffNode. Un DiffNode décrit les changements de deux ou trois entrées. Le type des noeuds résultants peut être modifié en remplaçant une méthode du moteur.
Une arborescence de plusieurs DiffNode peut être affichée dans un DiffTreeViewer. DiffTreeViewer impose aux noeuds internes l'implémentation de l'interface IDiffContainer et aux feuilles celle de l'interface IDiffElement.
La procédure standard permettant la comparaison hiérarchique des données structurées et l'affichage des différences se présente comme suit :
ZipFileStructureCreator est une implémentation de l'interface IStructureCreator et rend disponible le contenu d'une archive zip sous la forme d'une structure hiérarchique des IStructureComparator pouvant ainsi être facilement comparés par le moteur d'analyse des différences (Differencer). Cet exemple illustre parfaitement comment rendre des fichiers structurés disponibles pour la fonction de comparaison hiérarchique du plug-in de comparaison.