Bár az AbstractUIPlugin#getPreferenceStore() által biztosított
IPreferenceStore viselkedése nem változott, frissítettük az IPreferenceStore
meghatározását azzal, hogy kifejezetten megadtuk a biztosított viselkedést.
PropertyChangeEvents típusossága
Egy IPreferenceStore felületből származó tulajdonságváltozási eseménynek ugyanazon típus régi és új értékével kell rendelkeznie, amely összefügg azzal a setValue hívással, amely előállította.
Például, ha az IPreferenceStore#setValue(String name, long
value) hívást végzi el, akkor az ezen metódusból előállított
PropertyChangeEvent elemben lévő mindkét érték típusa
java.lang.Long lesz.
putValue
A #putValue hívások nem állítanak elő
PropertyChangedEvent eseményt. A különféle #setValue
metódusok hívásai előállítanak ilyen eseményt.
Az OSGI beállítás és egy IPreferenceStore közti viszony
Az AbstractUIPlugin#getPreferenceStore() által biztosított
IPreferenceStore felület a ScopedPreferenceStore egy példánya,
amely az org.osgi.service.prefs.Preferences elemet használja
háttérként. Az org.osgi.service.prefs.Preferences a változási
eseményeket csak karaktersorozatként továbbítja.
A ScopedPreferenceStore átalakítja az
IPreferenceStore#setValue(String name, String value) hívás által
előállított OSGI eseményeket és a saját PropertyChangeEvents
eseményeinek egyikét, majd továbbítja ezt az eseményt a figyelőjének. Az
IPreferenceStore#setValue többi megvalósítása esetén a
ScopedPreferenceStore a helyes típusú saját eseményeit fogja
létrehozni és nem továbbítja az OSGI beállításokból származó eseményeket.
Egy ScopedPreferenceStore figyelőit fel kell készíteni a
típusos és a karaktersorozatos értékekre is a változási eseményeikben, mert
továbbra is kaphatnak az OSGI beállításokon keresztül eseményt (például egy
figyelőimportálás közben). Az OSGI események minden esetben
java.lang.String típusúak.
Egy nullértékű org.eclipse.swt.widgets.Shell mindig lekérhető a meglévő IWorkbenchWindows elemről az Eclipse SDK-ban. Mi most explicit módon megadjuk a feltételeket, amelyeknél előfordul, azaz amikor a parancsértelmező nem kerül létrehozásra vagy ha az IWorkbenchWindow bezárásra kerül.