Selvom funktionsmåden for IPreferenceStore, der leveres af AbstractUIPlugin#getPreferenceStore()
, ikke er ændret, har vi opdateret angivelsen af IPreferenceStore, så den eksplicit definerer den funktionsmåde,
vi har leveret.
Skrivning af PropertyChangeEvents
En egenskabsændringsaktivitet fra en IPreferenceStore skal have en gammel og en ny værdi af samme type, som er i overensstemmelse med det setValue-kald, som genererede den.
Hvis du f.eks. kalder IPreferenceStore#setValue(String name, long
value)
, er værdierne i den PropertyChangeEvent, der er genereret ud fra denne metode, begge af typen
java.lang.Long
.
putValue
Kald til #putValue
genererer ikke en PropertyChangedEvent
.
Det gør kald til de forskellige #setValue
-metoder derimod.
Forholdet mellem OSGI-indstillingen og en IPreferenceStore
Den IPreferenceStore, som leveres af AbstractUIPlugin#getPreferenceStore()
, er en forekomst af
ScopedPreferenceStore
, der bruger org.osgi.service.prefs.Preferences
som bagvedliggende system. org.osgi.service.prefs.Preferences
videresender kun aktiviteterne som Strings.
ScopedPreferenceStore
indpakker disse OSGI-aktiviteter, som er genereret af
IPreferenceStore#setValue(String name, String value)
og en af dens egne
PropertyChangeEvents
, og videresender aktiviteten til sine lytteprogrammer. For andre implementeringer af IPreferenceStore#setValue
genererer ScopedPreferenceStore
egne aktiviteter af den korrekte type og videregiver ikke aktiviteter fra
OSGI-indstillingerne.
Lytteprogrammer til ScopedPreferenceStore
skal være forberedt på både skrevne værdier og
String-værdier i deres ændringsaktiviteter, da det stadig er muligt at få en aktivitet via
OSGI-indstillingerne (f.eks. under import af en indstilling).
OSGI-aktiviteter har altid typen java.lang.String.
Det har altid været muligt at få en null-org.eclipse.swt.widgets.Shell fra den eksisterende IWorkbenchWindows i Eclipse SDK. Nu definerer vi eksplicit de omstændigheder, hvorunder dette indtræffer, nemlig når Shell ikke er oprettet, eller når IWorkbenchWindow er lukket.