Eclipse 3.1-plugin - ofte stillede spørgsmål

  1. IPreferenceStore har mere eksplicit API
  2. IWorkbenchWindow#getShell() har mere eksplicit API

IPreferenceStore har mere eksplicit API

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.

IWorkbenchWindow#getShell() har mere eksplicit API

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.