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.