Απαιτούμενες αλλαγές κατά την υιοθέτηση των μηχανισμών και των API της εκδοχής 3.1

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

Υποστήριξη αναίρεσης/ακύρωσης αναίρεσης της πλατφόρμας

Το Eclipse 3.1 παρέχει μια νέα υποδομή για τον ορισμό των αναιρέσιμων λειτουργιών και ένα κοινόχρηστο ιστορικό λειτουργιών το οποίο παρακολουθεί τις λειτουργίες που εκτελέστηκαν, αναιρέθηκαν και των οποίων έγινε αναίρεση της ακύρωσής τους. Τα διάφορα πλαίσια αναίρεσης που παρέχονται από επιπρόσθετες πρόσθετες λειτουργίες θα πρέπει να μεταβιβαστούν με το χρόνο στην υποστήριξη λειτουργίας της πλατφόρμας, έτσι ώστε οι πελάτες αυτών των πλαισίων να μπορούν να ενοποιηθούν σε μεγαλύτερο βαθμό με την πλατφόρμα και να διαθέσουν τις αναιρέσιμες λειτουργίες τους προς αναίρεση σε προβολές και λειτουργίες επεξεργασίας άλλων πρόσθετων λειτουργιών. Δείτε την τεκμηρίωση Αναιρέσιμες λειτουργίες για τις βασικές πληροφορίες σχετικά με την προσθήκη υποστήριξης αναίρεσης σε μια πρόσθετη λειτουργία. Οι πρόσθετες λειτουργίες οι οποίες ήδη ορίζουν υποστήριξη αναίρεσης ή χρησιμοποιούν κάποιο άλλο πλαίσιο μπορούν να μεταβιβαστούν στη νέα υποστήριξη αναίρεσης σε στάδια, όπως περιγράφεται παρακάτω.

Μετάβαση κλάσεων λειτουργιών (εντολών) ειδικά για πρόσθετες λειτουργίες σε μια διεπαφή IUndoableOperation

Οι πρόσθετες λειτουργίες οι οποίες ήδη ορίζουν κλάσεις που περιγράφουν τις αναιρέσιμες λειτουργίες τους, θα πρέπει να προσθέσουν μια υλοποίηση για τη διεπαφή IUndoableOperation στις κλάσεις λειτουργιών/εντολών τους. Οι πρόσθετες λειτουργίες μπορούν ακόμη να χρησιμοποιούν παλαιότερα πλαίσια για τη διαχείριση του ιστορικού (στοίβα εντολών) εάν είναι απαραίτητο, αλλά παρέχοντας μια διεπαφή για την IUndoableOperation επιτρέπει στους πελάτες μιας πρόσθετης λειτουργίας να χρησιμοποιήσουν τις ίδιες λειτουργίες στο ιστορικό λειτουργιών της πλατφόρμας και να ταιριάξουν αναιρέσιμες λειτουργίες από διαφορετικές πρόσθετες λειτουργίες. Αυτή η στρατηγική είναι παρόμοια με αυτή που χρησιμοποιείται από τις λειτουργίες επεξεργασίας κειμένου SDK για τη μετάβασή τους στο νέο πλαίσιο λειτουργιών. Εάν μια απευθείας αντιστοίχιση της διεπαφής δεν είναι δυνατή, οι εργασίες wrapper μπορούν να χρησιμοποιηθούν για την αντιστοίχιση του πρωτοκόλλου IUndoableOperation σε αντικείμενα αναίρεσης προϋπαρχόντων αντικειμένων. Αυτή η στρατηγική χρησιμοποιείται από την υποστήριξη βελτιστοποίησης δομής Πλατφόρμας/JDT. Η μετάβαση των κλάσεων λειτουργιών/εντολών στην IUndoableOperation αποτελεί ένα σημαντικό βήμα επειδή επιτρέπει στις αναιρέσιμες λειτουργίες από διαφορετικά πλαίσια να χρησιμοποιούνται από άλλες πρόσθετες λειτουργίες χωρίς να χρειάζεται η πλήρης μετάβαση καμιάς πρόσθετης λειτουργίας.

Μετάβαση στοιβών εντολών με την IOperationHistory

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

Ορισμός αναιρέσιμων λειτουργιών καθολικών στον πάγκο εργασίας

Οι πρόσθετες λειτουργίες οι οποίες επιθυμούν οι λειτουργίες τους να είναι αναιρέσιμες από τις προβολές του πάγκου εργασίας, όπως την "Πλοήγηση" ή την "Εξερεύνηση πακέτων", θα πρέπει να αντιστοιχίσουν το περιβάλλον αναιρέσεων του πάγκου εργασίας στις λειτουργίες τους. Δείτε την τεκμηρίωση Αναιρέσιμες λειτουργίες για περισσότερες πληροφορίες σχετικά με αυτό το περιβάλλον αναιρέσεων και τον τρόπο με τον οποίο μπορεί να ανακτηθεί τόσο από τον πάγκο εργασίας όσο και από πρόσθετες λειτουργίες χωρίς γραφικό περιβάλλον.

Ρουτίνες χειρισμού ενεργειών αναίρεσης/ακύρωσης αναίρεσης της πλατφόρμας

Οι πρόσθετες λειτουργίες, οι οποίες δεν ορίζουν μια υποδομή αναιρέσεων ή αναιρέσιμες λειτουργίες, αλλά επιθυμούν να παρέχουν πρόσβαση στο ιστορικό αναιρέσεων της πλατφόρμας, θα πρέπει να εξετάσουν την αλλαγή εμβέλειας ενέργειας των καθολικών ρουτινών χειρισμού ενεργειών αναίρεσης και ακύρωσης αναίρεσης με τις νέες κοινές ρουτίνες χειρισμού ενεργειών αναίρεσης και ακύρωσης αναίρεσης. Στις ρουτίνες χειρισμού ενεργειών θα πρέπει να αντιστοιχιστεί ένα περιβάλλον αναιρέσεων το οποίο να καθορίζει ποιο ιστορικό αναιρέσεων και ακυρώσεων αναιρέσεων θα εμφανίζεται. Οι πρόσθετες λειτουργίες μπορούν να χρησιμοποιούν τα δικά τους τοπικά ορισμένα περιβάλλοντα αναιρέσεων για την εμφάνιση "τμήματος-τοπικού" ιστορικού αναιρέσεων και ακυρώσεων αναιρέσεων. Το περιβάλλον αναιρέσεων του πάγκου εργασίας μπορεί να χρησιμοποιηθεί για την εμφάνιση του ιστορικού αναιρέσεων και ακυρώσεων αναιρέσεων για όλο τον πάγκο εργασίας. Η τεκμηρίωση Αναιρέσιμες λειτουργίες περιέχει ένα πλήρες παράδειγμα.

Μετάβαση ενεργειών λειτουργιών κειμένου στις κοινές ρουτίνες χειρισμού ενεργειών

Η μετάβαση ενεργειών αναίρεσης και ακύρωσης αναίρεσης των λειτουργιών επεξεργασίας κειμένου είναι λίγο διαφορετική από την απλή αλλαγή εμβέλειας ενέργειας των καθολικών ρουτινών χειρισμού ενεργειών αναίρεσης/ακύρωσης αναίρεσης. Το πλαίσιο AbstractTextEditor ορίζει κοινές ενέργειες κειμένου με τη χρήση μιας παραμετροποιημένης TextOperationAction. Αυτές οι ενέργειες αποθηκεύονται τοπικά στο πλαίσιο και χρησιμοποιούνται για την αποστολή διαφόρων εντολών σε ένα προορισμό λειτουργίας κειμένου μιας λειτουργίας επεξεργασίας. Για να λειτουργήσει σωστά μια αναίρεση κειμένου, το πλαίσιο λειτουργίας επεξεργασίας κειμένου βασίζεται στην παρουσία ενεργειών λειτουργίας κειμένου με τις κατάλληλες ταυτότητες (ITextEditorActionConstants.REDO και ITextEditorActionConstants.UNDO).

Η AbstractTextEditor έχει μεταβιβαστεί έτσι ώστε να δημιουργήσει τις κοινές ρουτίνες χειρισμού ενεργειών, ενώ ακόμη τις αντιστοιχεί στον πίνακα TextOperationAction με τις ταυτότητες των προϋπαρχόντων αντικειμένων τους. Με αυτόν τον τρόπο οι νέες ρουτίνες χειρισμού ενεργειών αναίρεσης και ακύρωσης αναίρεσης μπορούν να ανακτηθούν με τη χρήση τεχνικών των προϋπαρχόντων αντικειμένων για ανάκτηση ενέργειας και εκτέλεση μιας λειτουργίας. Οι λειτουργίες επεξεργασίας κειμένου στην ιεραρχία της AbstractTextEditor θα κληρονομήσουν αυτή τη συμπεριφορά.

Οι λειτουργίες επεξεργασίας οι οποίες δεν κληρονομούν αυτή τη συμπεριφορά από την AbstractTextEditor θα πρέπει να εξετάσουν τη μετάβαση οποιωνδήποτε υπαρχόντων ενεργειών αναίρεσης και ακύρωσης αναίρεσης για τη χρήση των νέων ρουτινών χειρισμού. Οι λειτουργίες επεξεργασίας με TextOperationActions αναίρεσης και ακύρωσης αναίρεσης προϋπαρχόντων αντικειμένων θα διαθέτουν τοπική υποστήριξη αναιρέσεων, εφόσον η λειτουργία διαχείρισης αναιρέσεων κειμένου JFace που χρησιμοποίησε το API από αυτές τις ενέργειες υποστηρίζεται. Ωστόσο, οι ετικέτες ενεργειών αναίρεσης και ακύρωσης αναίρεσης δεν θα είναι συνεπείς με τις νέες ενέργειες αναίρεσης/ακύρωσης αναίρεσης του Eclipse SDK, που δείχνουν το όνομα της διαθέσιμης λειτουργίας αναίρεσης ή ακύρωσης αναίρεσης. Για τη δημιουργία των κοινών ρουτινών χειρισμού ενεργειών αναίρεσης και ακύρωσης αναίρεσης, το περιβάλλον αναιρέσεων που χρησιμοποιείται από τη λειτουργία διαχείρισης αναιρέσεων της λειτουργία προβολής κειμένου θα πρέπει να χρησιμοποιηθεί κατά τη δημιουργία των ρουτινών χειρισμού ενεργειών και αυτές οι ρουτίνες χειρισμού θα πρέπει να ρυθμιστούν στη λειτουργία επεξεργασίας χρησιμοποιώντας την κατάλληλη ταυτότητα ITextEditorActionConstants. Δείτε την AbstractTextEditor.createUndoRedoActions() και την AbstractTextEditor.getUndoContext() για ένα λεπτομερές παράδειγμα. Οι λειτουργίες επεξεργασίας, οι οποίες βασίζονται σε μια υποκλάση EditorActionBarContributor για την προσθήκη στις γραμμές ενεργειών των λειτουργιών επεξεργασίας τους, μπορούν να χρησιμοποιήσουν μια παρόμοια τεχνική δημιουργώντας ρουτίνες χειρισμού ενεργειών αναίρεσης και ακύρωσης αναίρεσης και καθορίζοντάς τις κατά τον καθορισμό της ενεργής λειτουργίας επεξεργασίας.

Βελτιώσεις βοήθειας

Αναζήτηση πληροφοριών

Οι πρόσθετες λειτουργίες ο οποίες συνεισφέρουν σελίδες αναζήτησης στο πλαίσιο διαλόγου Αναζήτηση θα πρέπει να εξετάσουν τη μεταφορά όλων των αναζητήσεών πληροφοριών-στυλ τους σε συνολικές μηχανές αναζήτησης. Από την έκδοση 3.1, όλες οι αναζητήσεις πληροφοριών-στυλ χωρίζονται από τις αναζητήσεις πάγκου εργασίας-τεχνουργημάτων. Οι μηχανές αναζήτησης πληροφοριών εκτελούνται παράλληλα ως εργασίες παρασκηνίου και τα αποτελέσματά τους αντιπαραβάλλονται στη νέα προβολή "Βοήθεια". Δείτε την ενότητα Αναζήτηση βοήθειας για περισσότερες λεπτομέρειες.

Δυναμική βοήθεια

Η νέα προβολή "Δυναμική βοήθεια" θα λειτουργεί με τις υπάρχουσες ταυτότητες περιβάλλοντος που είναι στατικά συσχετισμένες με όργανα σε τμήματα και πλαίσια διαλόγου του πάγκου εργασίας. Ωστόσο, εάν εσείς ο ίδιος εντοπίσετε ένα συμβάν βοήθειας και εμφανίσετε τη βοήθεια, η προβολή "Δυναμική βοήθεια" δεν θα μπορεί να εμφανίσει τίποτα χρήσιμο. Για να διορθώσετε το πρόβλημα, θα πρέπει να προσαρμοστείτε στη νέα διεπαφή IContextProvider όπως περιγράφεται στο έγγραφο Δυναμική συμφραστική βοήθεια.

Χώροι αποθήκευσης προτιμήσεων JFace

Όπως συμβαίνει και στην έκδοση 3.1 το org.eclipse.jface.preference.IPreferenceStore που επιστρέφεται από την AbstractUIPlugin.getPreferenceStore() αποτελεί μια χρήση του org.eclipse.ui.preferences.ScopedPreferenceStore. Το ScopedPreferenceStore χρησιμοποιεί το API του org.eclipse.core.runtime.preferences για τη διαχείριση των προτιμήσεων. Στην εκδοχή 3.0 χρησιμοποιούσε το επίπεδο συμβατότητας στη διεπαφή με μια χρήση του org.eclipse.core.runtime.Preferences.

Στην εκδοχή 3.1 αποσαφηνίσαμε την IPreferenceStore ούτως ώστε να είναι περισσότερο συγκεκριμένη σχετικά με τα είδη των τιμών που αποστέλλονται στα αλλαγμένα συμβάντα προτιμήσεων. Η διεπαφή IPreferenceStore από την AbstractUIPlugin#getPreferenceStore έχει την ίδια συμπεριφορά όπως και πριν αλλά πλέον καθορίζεται με περισσότερη σαφήνεια.

Πληκτρολόγηση: Το org.eclipse.jface.util.IPropertyChangeListener που προστέθηκε σε μια IPreferenceStore μπορεί δυνητικά να λάβει δύο είδη παλιών και νέων τιμών: τις τυποποιημένες αναπαραστάσεις ή τις αναπαραστάσεις String. Οποιοδήποτε συμβάν, το οποίο δημιουργείται από μια κλήση σε μια τυποποιημένη IPreferenceStore API (όπως το setValue(Κλειδί σειράς χαρακτήρων, λογική τιμή) θα δημιουργήσει ένα τυποποιημένο συμβάν. Ωστόσο, είναι επίσης δυνατόν τα συμβάντα να διαγράφονται από τις προτιμήσεις του περιβάλλοντος εκτέλεσης πυρήνα που δημιουργούν ένα μη τυποποιημένο συμβάν (για παράδειγμα σε μια εισαγωγή προτιμήσεων). Οι λειτουργίες ακρόασης ιδιοτήτων χρειάζεται να προετοιμαστούν και για τις δύο περιπτώσεις. Σημειώστε επίσης ότι τα τυποποιημένα συμβάντα δεν θα διαδίδουν τα στοιχειώδη είδη, οπότε μια κλήση στη setValue(Κλειδί σειράς χαρακτήρων, λογική τιμή) θα έχει ως αποτέλεσμα ένα συμβάν στο οποίο οι oldValue και newValue θα αποτελούν λογικές τιμές.

putValue: Η IPreferenceStore.putValue(Κλειδί σειράς χαρακτήρων, Τιμή σειράς χαρακτήρων) δεν θα δημιουργήσει ένα συμβάν αλλαγής. Αυτό το API προορίζεται για χρήση για ιδιωτικές προτιμήσεις στις οποίες καμία λειτουργία ακρόασης δεν θα επιθυμούσε να αντιδράσει.

initializeDefaultPreferences. Αυτό το API καταργήθηκε στο Eclipse 3.0 καθώς ενεργοποιείται μόνο εάν χρησιμοποιείται το επίπεδο συμβατότητας. Καθώς οι περισσότερες πρόσθετες λειτουργίες βασίζονται στο AbstractUIPlugin#getPreferenceStore για τη λήψη του χώρου αποθήκευσης προτιμήσεών τους, αυτό ενεργοποιούνταν προηγουμένως με την εκκίνηση της πρόσθετης λειτουργίας. Εάν η πρόσθετη λειτουργία σας δεν έχει πρόσβαση στο επίπεδο συμβατότητας, τότε αυτή η μέθοδος μπορεί να μην ενεργοποιηθεί. Συνιστάται η δημιουργία ενός org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer για το χειρισμό της απόδοση αρχικών τιμών των προτιμήσεών σας.