Eclipse 3.1 pluginmigratie FAQ

  1. IPreferenceStore heeft een meer expliciete API
  2. IWorkbenchWindow#getShell() heeft een meer expliciete API

IPreferenceStore heeft een meer expliciete API

Hoewel het gedrag van IPreferenceStore die wordt geleverd doorAbstractUIPlugin#getPreferenceStore() niet is gewijzigd, is de specificatie van IPreferenceStore bijgewerkt om expliciet het gedrag te definiëren dat is geleverd.

Types van PropertyChangeEvents

Elk eigenschapwijzigingsevent van een IPreferenceStore moeten een nieuwe en een oude waarde hebben van hetzelfde type dat consistent is met de setValue-aanroep waarmee het is gegenereerd.

Als u bijvoorbeeld IPreferenceStore#setValue (tekenreeksnaam, lange waarde ) aanroept, zijn de waarden in de PropertyChangeEvent die met deze methode zijn gegenereerd beide van het type java.lang.Long.

putValue

Met het aanroepen van #putValue wordt geen PropertyChangedEvent gegenereerd. Met aanroepen naar de verschillende #setValue methoden gebeurt dit wel.

Relatie tussen de OSGI-voorkeur en een IPreferenceStore

De IPreferenceStore die wordt geleverd door AbstractUIPlugin#getPreferenceStore()is een instance van ScopedPreferenceStore die gebruikmaakt van org.osgi.service.prefs.Preferences als backend. org.osgi.service.prefs.Preferences voert wijzigingsevents alleen als tekenreeksen door in onderliggende niveaus.

De ScopedPreferenceStore verpakt die OSGI-events die zijn gegenereerd doorIPreferenceStore#setValue(tekenreeksnaam, tekenreekswaarde) en een van de eigenPropertyChangeEvents en stuurt die event door naar de listeners. Voor de andere implementaties van IPreferenceStore#setValue maakt de ScopedPreferenceStore eigen events van het juiste type en worden er geen events van de OSGI-voorkeuren doorgevoerd in onderliggende niveaus.

Listeners voor een ScopedPreferenceStore moeten worden voorbereid voor de beide typen en tekenreekswaarden in hun wijzigingsevents omdat het nog steeds mogelijk is om een event via de OSGI-voorkeuren op te halen (tijdens een voorkeursimport bijvoorbeeld). OSGI-events zijn altijd van het type java.lang.String.

IWorkbenchWindow#getShell() heeft een meer expliciete API

Het is altijd mogelijk geweest om een null org.eclipse.swt.widgets.Shell op te halen van de bestaande IWorkbenchWindows in de Eclipse SDK. Nu worden expliciet de voorwaarden gedefinieerd als dit gebeurt, bijvoorbeeld als de shell niet is gemaakt of als het IWorkbenchWindow is gesloten.