Archivi delle preferenze JFace

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.