Παρόλο που η συμπεριφορά της IPreferenceStore που παρέχεται από την AbstractUIPlugin#getPreferenceStore()
δεν έχει αλλάξει, έχουμε ενημερώσει την προδιαγραφή της IPreferenceStore για να ορίζει ρητά τη συμπεριφορά που παρείχαμε.
Πληκτρολόγηση της PropertyChangeEvents
Κάθε συμβάν αλλαγής ιδιοτήτων από μια διεπαφή IPreferenceStore πρέπει να διαθέτει μια παλαιά και μια νέα τιμή του ίδιου είδους η οποία να είναι συνεπής με την κλήση setValue που τη δημιούργησε.
Για παράδειγμα, εάν καλέσετε την IPreferenceStore#setValue(Όνομα σειράς χαρακτήρων, τιμή μεγάλου μήκους)
οι τιμές στην PropertyChangeEvent που δημιουργούνται από αυτή τη μέθοδο θα είναι και οι δυο του είδους java.lang.Long
.
putValue
Οι κλήσεις στην #putValue
δεν θα δημιουργήσουν μια PropertyChangedEvent
. Οι κλήσεις στις διάφορες μεθόδους #setValue
θα τη δημιουργήσουν.
Σχέση μεταξύ των προτιμήσεων του OSGI και μιας IPreferenceStore
Η IPreferenceStore η οποία παρέχεται από τη μέθοδο AbstractUIPlugin#getPreferenceStore()
αποτελεί μια χρήση της ScopedPreferenceStore
η οποία χρησιμοποιεί το org.osgi.service.prefs.Preferences
ως τέλος. Το org.osgi.service.prefs.Preferences
μεταδίδει τα συμβάντα αλλαγών μόνο ως σειρές χαρακτήρων.
Η ScopedPreferenceStore
εκτελεί εργασία wrapper στα συμβάντα OSGI που δημιουργούνται από την IPreferenceStore#setValue(Όνομα σειράς χαρακτήρων, Τιμή σειράς χαρακτήρων)
και μια από τις PropertyChangeEvents
του και προωθεί αυτό το συμβάν στις λειτουργίες ακρόασής της. Για τις άλλες υλοποιήσεις της IPreferenceStore#setValue
η ScopedPreferenceStore
θα δημιουργήσει τα δικά της συμβάντα του σωστού είδους και δεν θα μεταδώσει τα συμβάντα από τις ιδιότητες του OSGI.
Οι λειτουργίες ακρόασης σε μια ScopedPreferenceStore
θα πρέπει να είναι προετοιμασμένες τόσο για πληκτρολογημένες τιμές όσο και για τιμές σειράς χαρακτήρων στα συμβάντα αλλαγών τους, καθώς είναι ακόμη δυνατόν να γίνει λήψη ενός συμβάντος μέσω των προτιμήσεων OSGI (κατά τη διάρκεια μιας εισαγωγής προτιμήσεων για παράδειγμα). Τα συμβάντα OSGI είναι πάντα του είδους java.lang.String.
Πάντα ήταν δυνατή η λήψη μιας κενής org.eclipse.swt.widgets.Shell από την υπάρχουσα IWorkbenchWindows στο Eclipse SDK. Πλέον ορίζουμε ρητά τις συνθήκες όπου συμβαίνει αυτό, δηλαδή όταν το κέλυφος δεν έχει δημιουργηθεί ή όταν η IWorkbenchWindow έχει κλείσει.