Eclipse 3.1 -version lisäosien siirron usein kysytyt kysymykset

  1. IPreferenceStore-rajapinnalla on eksplisiittisempi sovellusohjelmaliittymä
  2. IWorkbenchWindow#getShell()-metodilla on eksplisiittisempi sovellusohjelmaliittymä

IPreferenceStore-rajapinnalla on eksplisiittisempi sovellusohjelmaliittymä

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.

IWorkbenchWindow#getShell()-metodilla on eksplisiittisempi sovellusohjelmaliittymä

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.