Συνήθεις ερωτήσεις για τη μετάβαση πρόσθετων λειτουργιών του Eclipse 3.1

  1. Η διεπαφή IPreferenceStore διαθέτει ένα περισσότερο ρητό API
  2. Η διεπαφή IWorkbenchWindow#getShell() διαθέτει ένα πιο ρητό API

Η διεπαφή IPreferenceStore διαθέτει ένα περισσότερο ρητό API

Παρόλο που η συμπεριφορά της 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.

Η διεπαφή IWorkbenchWindow#getShell() διαθέτει ένα πιο ρητό API

Πάντα ήταν δυνατή η λήψη μιας κενής org.eclipse.swt.widgets.Shell από την υπάρχουσα IWorkbenchWindows στο Eclipse SDK. Πλέον ορίζουμε ρητά τις συνθήκες όπου συμβαίνει αυτό, δηλαδή όταν το κέλυφος δεν έχει δημιουργηθεί ή όταν η IWorkbenchWindow έχει κλείσει.