Najczęściej zadawane pytania dotyczące migrowania modułów dodatkowych do środowiska Eclipse 3.1

  1. Bardziej przystępny interfejs API interfejsu IPreferenceStore
  2. Bardziej przystępny interfejs API interfejsu IWorkbenchWindow#getShell()

Bardziej przystępny interfejs API interfejsu IPreferenceStore

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.

Bardziej przystępny interfejs API interfejsu IWorkbenchWindow#getShell()

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.