從 3.1 版開始,從 AbstractUIPlugin#getPreferenceStore 傳回的 org.eclipse.jface.preference.IPreferenceStore 將會成為 org.eclipse.ui.preferences.ScopedPreferenceStore 的實例。 ScopedPreferenceStore 使用新的核心執行時期 API 來管理喜好設定。 在 3.0 中,它使用相容性層來作為與 org.eclipse.core.runtime.Preferences 實例之間的介面。
3.1 中,我們在喜好設定變更事件中傳送的值類型方面,將 IPreferenceStore 界定得更清楚。 來自 AbstractUIPlugin#getPreferenceStore 的 IPreferenceStore 行為將與從前一樣 - 不同的只是這些行為會被指定的更清楚。
類型:新增至 IPreferenceStore 的 org.eclipse.jface.util.IPropertyChangeListener
可能可以取得兩種舊類型與新類型的值 - typed 或 String 表示法。呼叫類型 IPreferenceStore API(例如 setValue(String key, boolean value)
)
所產生的事件將會產生 typed 事件。然而,也可能從產生 un typed 事件的核心執行時期喜好設定傳送事件(例如喜好設定匯入)。
內容接聽器需要做兩種準備。請注意,typed 事件不會傳送初始類型,所以,對 setValue(String key, boolean value)
的呼叫,
會導致事件,其 oldValue 與 newValue 為 Booleans。
putValue:IPreferenceStore.putValue(String key, String value) 將不會傳送變更事件。此 API 是用於沒有接聽器會對其產生反應的私密喜好設定。
initializeDefaultPreferences。此 API 在 Eclipse 3.0 中已棄用,因為它只有在使用相容性層時才有作用。因為大部分外掛程式 根據 AbstractUIPlugin#getPreferenceStore 取得其喜好設定儲存,在之前, 這會在外掛程式啟動時產生作用。如果您的外掛程式不能存取相容性層本身, 則此方法無法產生作用。建議您建立一個 org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer 以處理您的喜好設定初值設定。