JFace-Benutzervorgabespeicher

Ab Release 3.1 handelt es sich bei dem org.eclipse.jface.preference.IPreferenceStore , der von 'AbstractUIPlugin#getPreferenceStore' zurückgegeben wird, um ein Exemplar von org.eclipse.ui.preferences.ScopedPreferenceStore. ScopedPreferenceStore verwendet die neue Kern-Laufzeit-API, um Benutzervorgaben zu verwalten. In 3.0 wurde die Kompatibilitätsebene als Schnittstelle mit einem Exemplar von org.eclipse.core.runtime.Preferences verwendet.

In 3.1 haben wir IPreferenceStore eindeutiger gestaltet, um in Bezug auf die Wertetypen, die in Änderungsereignissen von Benutzervorgaben gesendet werden spezifischer zu sein. Der IPreferenceStore von AbstractUIPlugin#getPreferenceStore hat dasselbe Verhalten wie zuvor - die einzige Änderung ist, dass es deutlicher spezifiziert worden ist.

Typisierung: org.eclipse.jface.util.IPreferenceChangeListener Durch die Hinzufügung zu einem 'IPreferenceStore' erhält man möglicherweise zwei Typen von alten und neuen Werten - typisierte oder Zeichenfolgendarstellungen. Jedes Ereignis, das durch einen Aufruf einer typisierten IPreferenceStore API (wie setValue(String key, boolean value) generiert wurde, wird ein typisiertes Ereignis generieren. Es ist jedoch auch möglich, dass Ereignisse von den Kern-Laufzeit-Benutzervorgaben propagiert werden, die ein untypisiertes Ereignis generieren (zum Beispiel beim Import einer Benutzervorgabe). Eigenschaften-Listener-Funktionen müssen für beide vorbereitet werden. Beachten Sie auch, dass typisierte Ereignisse keine Basiselementtypen propagieren, also wird ein Aufruf von setValue(String key, boolean value) zu einem Ergebnis führen, bei dem oldValue und newValue Boolesche Werte sind.

putValue: IPreferenceStore.putValue(String key, String value) wird kein Änderungsereignis generieren. Diese API dient zur Verwendung mit nicht öffentlichen Benutzervorgaben, auf die keine Listener-Funktionen reagieren wollen.

initializeDefaultPreferences. Diese API wurde in Eclipse 3.0 nicht mehr verwendet, da sie nur bei Verwendung der Kompatibilitätsebene ausgelöst wurde. Da sich die meisten Plug-ins auf AbstractUIPlugin#getPreferenceStore verlassen, um ihren Benutzervorgabenspeicher zu erhalten, wurde dies zuvor beim Start des Plug-ins ausgelöst. Wenn Ihr Plug-in nicht auf die Kompatibilitätsebene selbst zugreift, kann diese Methode nicht ausgelöst werden. Es wird empfohlen, eine org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer zu erstellen, um die Initialisierung Ihrer Benutzervorgabe zu handhaben.