A partire dalla versione 3.1, org.eclipse.jface.preference.IPreferenceStore restituito da AbstractUIPlugin#getPreferenceStore sarà un'istanza di org.eclipse.ui.preferences.ScopedPreferenceStore. ScopedPreferenceStore utilizza la nuova API runtime di base per la gestione delle preferenze. Nella versione 3.0 veniva utilizzato il livello di compatibilità per interfacciare un'istanza di org.eclipse.core.runtime.Preferences.
Nella versione 3.1, IPreferenceStore è stato reso più specifico relativamente ai tipi di valori inviati negli eventi di modifica delle preferenze. IPreferenceStore da AbstractUIPlugin#getPreferenceStore presenta lo stesso comportamento che aveva in precedenza, ma con una maggiore chiarezza nelle specifiche.
Tipi:
org.eclipse.jface.util.IPreferenceChangeListeners
aggiunti ad un IPreferenceStore possono potenzialmente
ricevere due tipi di vecchi e nuovi valori: rappresentazioni con tipi o String. Ogni evento generato da una chiamata ad un'API con tipo
IPreferenceStore (ad esempio, setValue(String key, boolean value)
), genererà un evento con tipo. Tuttavia, è possibile
anche che gli eventi siano propagati dalle preferenze runtime di base, che generano un evento con tipo (ad esempio nel caso di
importazione di preferenze). I listener delle preferenze devono essere preparati per entrambe le situazioni. Inoltre, si noti che gli
eventi con tipi non propagheranno i tipi primitivi, quindi una chiamata a setValue(String key, boolean
value)
genererà un evento in cui oldValue e newValue sono booleani.
putValue: IPreferenceStore.putValue(String key, String value) non genererà un evento di modifica. Questa API deve essere utilizzata per le preferenze private che non hanno effetto sui listener.
initializeDefaultPreferences: questa API era obsoleta in Eclipse 3.0 poiché viene attivata solo se viene utilizzato il livello di compatibilità. Dal momento che molti plugin si basano su AbstractUIPlugin#getPreferenceStore per ricevere l'archivio delle preferenze, in precedenza veniva attivata all'avvio del plugin. Se il plugin non accede al livello di compatibilità, questo metodo non può essere attivato. Si consiglia di creare un org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer per gestire l'inizializzazione delle preferenze.