对于发行版 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 具有与先前相同的行为 - 所作的更改只是使它被更加清楚地指定。
类型: org.eclipse.jface.util.IPropertyChangeListener
添加至 IPreferenceStore 的 org.eclipse.jface.util.IPreferenceChangeListeners 可能会获得两种类型的旧值和新值 - 类型化表 示或字符串表示。通过调用类型化 IPreferenceStore API(例如 setValue(String key, boolean value)
生成的任何事件均将生成一个类型化事件。但是,这些事件也可能通过生成无类型化事件(例如,针对首选项导入)的核心运行时首选项传播。属性侦听器需要对这两种情况做好准备。另请注意,类型化事件将不会传播基本类型,因此调用 setValue(String key, boolean value)
将产生一个旧值和新值均为布尔值的事件。
putValue:IPreferenceStore.putValue(String key, String value) 将不会生成更改事件。此 API 要用于没有侦听器对其进行响应的专用首选项。
initializeDefaultPreferences。在 Eclipse 3.0 中不推荐使用此 API,因为它只有在使用兼容性层时才被激发。由于大多数插件依靠 AbstractUIPlugin#getPreferenceStore 来获取它们的首选项库,因此其在先前启动插件时激发。如果插件自身没有访问兼容性层,则可能不会激发此方法。我们建议您创建一个 org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer 来处理首选项初始化。