Vaikka AbstractUIPlugin#getPreferenceStore()
-metodin toimittaman IPreferenceStore-rajapinnan toiminta ei ole muuttunut, IPreferenceStore-rajapinnan määritys on päivitetty määrittämään eksplisiittisesti toimitettu toiminta.
PropertyChangeEvents-luokan lajin määritys
Kaikilla IPreferenceStore-rajapinnan ominaisuuden muutoksen tapahtumilla on oltava vanha ja uusi arvo, joilla on sama laji, joka on yhdenmukainen sen luoneen setValue-kutsun kanssa.
Jos esimerkiksi kutsut IPreferenceStore#setValue(String name, long value)
-metodia, molempien tästä metodista luotujen PropertyChangeEvent-luokkien laji on java.lang.Long
.
putValue
#putValue
-metodin kutsut eivät luo PropertyChangedEvent
-luokkaa.
Eri #setValue
-metodien kutsut luovat.
OSGI-oletusten ja IPreferenceStore-rajapinnan suhde
AbstractUIPlugin#getPreferenceStore()
-metodin toimittama IPreferenceStore on ScopedPreferenceStore
-luokan ilmentymä, joka käyttää org.osgi.service.prefs.Preferences
-rajapintaa taustarakenteena. org.osgi.service.prefs.Preferences
toteuttaa muutostapahtumat ainoastaan String-objekteina.
ScopedPreferenceStore
liittää IPreferenceStore#setValue(String name, String value)
-metodin luomat OSGI-tapahtumat ja oman PropertyChangeEvents
-luokkansa ja välittää tapahtuman kuuntelutoiminnoilleen. Muille IPreferenceStore#setValue
-metodin toteutuksille ScopedPreferenceStore
luo omat oikean lajin tapahtumansa eikä toteuta tapahtumia OSGI-oletuksista.
ScopedPreferenceStore
-luokan kuuntelutoimintojen tulee olla valmistautuneita sekä lajiltaan määritetyille että String-arvoille muutostapahtumiensa osalta, sillä on edelleen mahdollista saada tapahtuma OSGI-oletusten kautta (esimerkiksi oletusten tuonnin yhteydessä).
OSGI-tapahtumien laji on aina java.lang.String.
On aina ollut mahdollista saada tyhjä org.eclipse.swt.widgets.Shell olemassa olevista IWorkbenchWindows-rajapinnoista Eclipse SDK:ssa. Nyt olemme määrittäneet eksplisiittisesti tilanteet, joissa tämä tapahtuu, eli silloin, kun komentoliittymää ei ole luotu tai kun IWorkbenchWindow on suljettu.