Zachowanie interfejsu IPreferenceStore udostępnianego przez metodę
AbstractUIPlugin#getPreferenceStore()
nie zmieniło się, ale specyfikacja została zaktualizowana o
dokładniejsze definicje udostępnianego zachowania.
Określanie typu zdarzeń PropertyChangeEvent
Typ starej i nowej wartości zdarzenia związanego ze zmianą właściwości interfejsu IPreferenceStore musi być zgodny z typem wskazanym przez wywołanie setValue, które wygenerowało to zdarzenie.
Na przykład wywołanie IPreferenceStore#setValue(String name, long
value)
powoduje, że obie wartości zdarzenia PropertyChangeEvent
wygenerowanego przez tę metodę będą typu java.lang.Long
.
Metoda putValue
Wywołania metody #putValue
nie generują zdarzenia PropertyChangedEvent
.
Zdarzenia są natomiast generowane przez wywołania metod z grupy #setValue
.
Związek między preferencjami środowiska OSGI a interfejsem IPreferenceStore
Interfejs IPreferenceStore udostępniany przez metodę AbstractUIPlugin#getPreferenceStore()
jest instancją klasy
ScopedPreferenceStore
, która używa obiektu org.osgi.service.prefs.Preferences
jako zaplecza. Obiekt
org.osgi.service.prefs.Preferences
przekazuje zdarzenia związane ze zmianami tylko jako typ String.
Obiekt ScopedPreferenceStore
opakowuje zdarzenia
środowiska OSGI, które są generowane przez wywołanie
IPreferenceStore#setValue(String name, String value)
i własne
zdarzenie PropertyChangeEvent
, a następnie przekazuje tak
utworzone zdarzenie do swoich funkcji nasłuchiwania. Dla
innych implementacji metody IPreferenceStore#setValue
obiekt ScopedPreferenceStore
tworzy własne zdarzenia
odpowiedniego typu, zamiast przekazywać zdarzenia preferencji środowiska OSGI.
Funkcje nasłuchiwania związane z obiektem ScopedPreferenceStore
powinny być przygotowane zarówno do obsługi zdarzeń typu String,
jak i do obsługi zdarzeń o określonym typie, ponieważ mimo wszystko
jest możliwe uzyskanie zdarzenia pochodzącego bezpośrednio od preferencji
środowiska OSGI (na przykład podczas importowania preferencji). Zdarzenia
środowiska OSGI zawsze są typu java.lang.String
.
Zawsze możliwe było uzyskanie pustej powłoki org.eclipse.swt.widgets.Shell z istniejącego interfejsu IWorkbenchWindows w pakiecie SDK dla platformy Eclipse. Obecnie jawnie zdefiniowano warunki, w których jest to wykonywane - gdy powłoka nie została utworzona lub jeśli interfejs IWorkbenchWindow został zamknięty.