Cette section apporte des informations sur l'API avancée dans le plug-in de comparaison.
Une opération de comparaison doit être implémentée comme sous-classe de CompareEditorInput. CompareEditorInput effectue une opération de comparaison (plutôt longue) sous le contrôle d'un moniteur de progression, crée une interface utilisateur pour l'analyse des résultats, détecte l'état erroné d'un résultat en cas de fusion et enregistre les changements s'étant produit lors d'une fusion.
CompareUI définit le point d'entrée pour le lancement d'une opération de comparaison configurable au niveau des ressources arbitraires. Le résultat de la comparaison s'affiche dans un éditeur de comparaison permettant de visualiser et de modifier les détails dans des afficheurs de structure et de contenu sélectionnés de manière dynamique.
NavigationAction est utilisée pour naviguer entre les différences individuelles de CompareEditorInput.
CompareConfiguration configure divers aspects de l'interface des afficheurs de comparaison/fusion, tels que les intitulés de titres et les images, et détermine si une partie d'un afficheur de fusion peut être éditée. Elle est transmise à CompareEditorInput lors de la création.
Lors de l'implémentation d'une opération de comparaison hiérarchique
comme sous-classe de
CompareEditorInput,
les clients doivent fournir une arborescence d'objets dans laquelle
chaque noeud implémente l'interface
IStructureComparator.
Cette interface est employée par le moteur d'analyse des différences
hiérarchique
(Differencer)
pour parcourir l'arborescence.
Par ailleurs, chaque branche de l'arbre doit implémenter l'interface
IStreamContentAccessor
afin de permettre au moteur d'analyse des différences d'accéder à son
contenu en continu.
BufferedContent fournit une implémentation par défaut pour les interfaces IStreamContentAccessor et IContentChangeNotifier. Sa sous-classe ResourceNode ajoute une implémentation pour les interfaces IStructureComparator et ITypedElement en fonction des ressources du plan de travail de la plateforme (IResource). Elle peut être utilisée sans modification en entrée du moteur d'analyse des différences.
Si vous souhaitez utilisez la fonction de comparaison en dehors de l'éditeur de comparaison standard (dans la boîte de dialogue d'un assistant par exemple), le plug-in de comparaison fournit des classes helper supplémentaires.
CompareViewerPane est une classe de grande diffusion fournissant un intitulé et une barre d'outils locale à n afficheur de comparaison (ou toute autre sous-classe d'un afficheur JFace). Sa sous-classe abstraite CompareViewerSwitchingPane supporte le changement dynamique d'afficheur, à savoir que celui installé dans la sous-fenêtre est déterminé de façon dynamique par l'objet d'entrée.
EditionSelectionDialog est une boîte de dialogue de sélection dans laquelle un élément d'entrée peut être comparé à une liste de variantes d'historique (éditions) de ce même élément. La boîte de dialogue sert à implémenter des fonctions telles que celle de "remplacement par l'historique local pour les ressources du plan de travail.
En outre, il est possible d'indiquer une sous-section de l'élément d'entrée (comme une méthode dans un fichier source Java) à l'aide d'un chemin. Dans ce cas, le dialogue ne compare que la sous-section (telle qu'elle est indiquée par le chemin) à la sous-section correspondante de la liste des éditions. Cette fonction permet d'implémenter le "remplacement par l'élément à partir de l'historique local pour les éléments Java.
EditionSelectionDialog impose aux éditions d'implémenter les interfaces IStreamContentAccessor et IModificationDate. HistoryItem est une classe de grande diffusion qui implémente ces interfaces pour les objets IFileState.