Προηγμένες τεχνικές σύγκρισης

Αυτή η ενότητα παρέχει επιπρόσθετες πληροφορίες σχετικά με το προηγμένο API στην πρόσθετη λειτουργία σύγκρισης.

Εγγραφή λειτουργιών σύγκρισης

Μια λειτουργία σύγκρισης πρέπει να υλοποιείται ως μια υποκλάση της CompareEditorInput.  Μια CompareEditorInput εκτελεί μια (πιθανόν μακροσκελή) λειτουργία σύγκρισης υπό τον έλεγχο της λειτουργίας παρακολούθησης προόδου, δημιουργεί ένα περιβάλλον χρήστη για την εμφάνιση των αποτελεσμάτων σύγκρισης, εντοπίζει την κατάσταση με εκκρεμείς αλλαγές του αποτελέσματος σε περίπτωση συγχώνευσης, και αποθηκεύει οποιεσδήποτε αλλαγές που εμφανίζονται κατά τη διάρκεια μιας συγχώνευσης.

Το CompareUI ορίζει το σημείο εισόδου για την εκκίνηση μιας προσαρμόσιμης λειτουργίας σύγκρισης για αυθαίρετους πόρους. Το αποτέλεσμα της σύγκρισης ανοίγει σε μια λειτουργία επεξεργασίας σύγκρισης, όπου μπορούν να αναζητηθούν οι λεπτομέρειες και να τροποποιηθούν σε δυναμικά επιλεγμένη δομή και λειτουργίες προβολής περιεχομένου.

Η NavigationAction χρησιμοποιείται για την πλοήγηση (βηματική εκτέλεση) των μεμονωμένων διαφορών ενός CompareEditorInput.

Το CompareConfiguration ρυθμίζει διάφορα χαρακτηριστικά του περιβάλλοντος χρήστη για τις λειτουργίες προβολής σύγκρισης και συγχώνευσης, όπως τις ετικέτες τίτλων και τις εικόνες, ή εάν θα είναι τροποποιήσιμη μια πλευρά της λειτουργίας προβολής συγχώνευσης. Περνάει στο CompareEditorInput κατά τη δημιουργία.

Κατά την υλοποίηση μιας λειτουργίας ιεραρχικής σύγκρισης ως μια υποκλάση του CompareEditorInput, οι πελάτες πρέπει να παρέχουν μια διακλάδωση αντικειμένων όπου ο κάθε κόμβος υλοποιεί τη διεπαφή IStructureComparator. Αυτή η διεπαφή χρησιμοποιείται από το μηχανισμό ιεραρχικού εντοπισμού διαφορών (Differencer) για την πλοήγηση στη διακλάδωση.
Επιπλέον, κάθε τελικό στοιχείο της διακλάδωσης πρέπει να υλοποιεί τη διεπαφή IStreamContentAccessor με σκοπό την παροχή πρόσβασης του μηχανισμού εντοπισμού διαφορών στο περιεχόμενο ροών.

Το BufferedContent παρέχει μια προεπιλεγμένη υλοποίησης των διεπαφών IStreamContentAccessor και IContentChangeNotifier. Η υποκλάση του ResourceNode προσθέτει μια υλοποίηση για τις διεπαφές IStructureComparator και ITypedElement που βασίζονται στους πόρους του πάγκου εργασίας της πλατφόρμας (IResource). Μπορεί να χρησιμοποιηθεί χωρίς τροποποίηση ως είσοδος στο μηχανισμό εντοπισμού διαφορών.

Λειτουργικότητα σύγκρισης εκτός των λειτουργιών επεξεργασίας σύγκρισης

Εάν επιθυμείτε να χρησιμοποιήσετε τη λειτουργικότητα της σύγκρισης εκτός της τυπικής λειτουργία επεξεργασίας σύγκρισης (για παράδειγμα, σε ένα πλαίσιο διαλόγου ή ένα οδηγό) η πρόσθετη λειτουργία σύγκρισης παρέχει επιπρόσθετες κλάσεις βοήθειας.

Η CompareViewerPane αποτελεί μια κλάση διευκόλυνσης η οποία παρέχει μια ετικέτα και μια τοπική γραμμή εργαλείων για μια λειτουργία προβολής σύγκρισης (ή μια οποιαδήποτε άλλη υποκλάση μιας λειτουργίας προβολής JFace).  Η αφηρημένη υποκλάση του CompareViewerSwitchingPane υποστηρίζει τη δυναμική εναλλαγή λειτουργιών προβολής, δηλαδή η λειτουργία προβολής που είναι εγκατεστημένη στο τμήμα παραθύρου προσδιορίζεται δυναμικά από το αντικείμενο εισόδου του τμήματος παραθύρου.

Το EditionSelectionDialog αποτελεί ένα απλό πλαίσιο διαλόγου επιλογής όπου ένα στοιχείο εισόδου μπορεί να συγκριθεί με μια λίστα ιστορικών παραλλαγών (εκδόσεις) του ίδιου στοιχείου εισόδου. Το πλαίσιο διαλόγου χρησιμοποιείται για την υλοποίηση λειτουργιών όπως "Αντικατάσταση με τοπικό ιστορικό" για τους πόρους του πάγκου εργασίας.

Επιπρόσθετα, είναι δυνατόν να οριστεί μια υποενότητα του στοιχείου εισόδου (π.χ. μια μέθοδος σε ένα αρχείο πρωτογενούς κώδικα Java) μέσω μιας διαδρομής. Σε αυτή την περίπτωση το πλαίσιο διαλόγου συγκρίνει μόνο την υποενότητα (όπως ορίζεται από τη διαδρομή) με την αντίστοιχη υποενότητα στη λίστα των εκδόσεων. Αυτή η λειτουργικότητα μπορεί να χρησιμοποιηθεί για την υλοποίηση της επιλογής "Αντικατάσταση με στοιχείο από τοπικό ιστορικό" για στοιχεία Java.

Το EditionSelectionDialog απαιτεί οι εκδόσεις να υλοποιήσουν τις διεπαφές IStreamContentAccessor και IModificationDate. Η HistoryItem αποτελεί μια κλάση διευκόλυνσης η οποία υλοποιεί αυτές τις διεπαφές για τα αντικείμενα IFileState.