Az org.eclipse.core.runtime.preferences csomag infrastruktúrát biztosít a bedolgozó beállításainak tárolásához. A beállítások jellemzően leképezésre kerülnek a felhasználó által vezérelt beállításokra a Beállítások oldalon, de ezt nem igényli az alapul szolgáló infrastruktúra. A bedolgozó-beállítások kulcs/érték párok, amelyben a kulcs a beállítás kulcsát írja le, az érték pedig a számos különböző típus egyike (boolean, double, float, int, long vagy string). A platform lekérheti a beállításokat a fájlrendszerről és tárolhatja őket. A mentett beállítások pontos helye a beállítás hatókörétől függ.
A teljes beállítástároló csomópontok hierarchiájaként képzelhető el, amelyben a hierarchia minden fő ága egy adott hatókört ábrázol. Az adott csomópont leszármazottja a hatókör megadásától függ. A példány és konfigurációs hatókörök esetén a leszármazott csomópontok az adott bedolgozó beállításai, ahogy a minősítő beállításban meg van adva - általában a bedolgozó azonosítója.
Ha ez zavarosan hangzik, ne aggódjon. Ha nem törődik a hatókörökkel és csomópontokkal, akkor nem kell aggódnia az adott hatókör miatt vagy amiatt, hogy valójában a fa mely csomópontja tartalmazza a beállításértéket. A beállítások API automatikusan átvizsgálja a csomópontokat a megfelelő sorrendben (példány, konfiguráció, alapértelmezett), amikor lekérdezi a beállításértéket és használja a biztosított minősítőt és beállításnevet az értéket ténylegesen tároló csomópont megkereséséhez.
A beállítások az IPreferencesService protokollon keresztül érhetők el. A platform alapértelmezett beállításszolgáltatása a Platform osztállyal érhető el.
... IPreferencesService service = Platform.getPreferencesService(); ...
A beállításszolgáltatás megszerzése után a beállításértékek az IPreferencesService által biztosított get... metódus segítségével név szerint lekérdezhetők. Az alábbi részlet például lekérdezi a "com.example.myplugin" bedolgozó "MyPreference" beállításértéket.
... IPreferencesService service = Platform.getPreferencesService(); boolean value = service.getBoolean("com.example.myplugin", "MyPreference", true, null); //használja valamire az értéket. ...
A lekérdezés metódus utolsó paramétere a hatókörkontextusok egy tömbje a beállításcsomópont keresésekor. Ha a tömb üres, akkor a platform feltételezi, hogy az alapértelmezett hatókör keresési sorrendet kell használni, és meg kell találni a megfelelő beállítás-csomópontot. Ha a hatókörkontextusok tömbje átadásra került, akkor ez meghatározza a hatókör keresési sorrendet, amelyet a beállítás-csomópont megkereséséhez használni kell. Az alapértelmezett hatókör keresési sorrendet mindig meg kell nézni, ha a megadott hatókör segítségével nem található csomópont.
Ha a bedolgozónak finomabb vezérlőre van szüksége a hatókör-keresési sorrendben, akkor a hatóköröket ábrázoló osztály segítségével elérhető a tényleges csomópont, amely a beállítást egy adott hatókörön ábrázolja. Ezen a módon létrehozható a csomópontok egy tömbje, amely megadja a szükséges keresési sorrendet. Az alábbi részlet lekérdezi a beállítások szolgáltatást a fent használt beállításhoz, és megkeresi a konfigurációs hatókört a bedolgozóhoz, amelyet a bedolgozó példány hatóköre követ. Ha csomópontok vannak megadva a keresési sorrendhez, akkor az alapértelmezett hatókör figyelmen kívül marad. A platform csak a megadott pontos csomópontokat keresi.
... IPreferencesService service = Platform.getPreferencesService(); Preferences configurationNode = new ConfigurationScope().getNode("com.example.myplugin"); Preferences instanceNode = new InstanceScope().getNode("com.example.myplugin"); Preferences[] nodes = new Preferences[] {configurationNode, instanceNode}; stringValue = service.get("MyPreference", "true", nodes); //használja valamire az értéket. ...
A bedolgozó saját bejárási utat is megvalósíthat a beállításfa-csomópontokon keresztül. A beállításfa gyökér csomópontja lekérhető a beállítások szolgáltatásból. A hatókörosztályok segítségével jobban átvizsgálható a fa. Az alábbi részlet átmegy egy adott csomópontra, és lekéri a beállításértéket a csomópontról.
... IPreferencesService service = Platform.getPreferencesService(); Preferences root = service.getRootNode(); Preferences myInstanceNode = root.node(InstanceScope.SCOPE).node("com.example.myplugin"); if (myInstanceNode != null) { value = node.getBoolean("MyPreference", "true"); //használja valamire az értéket. } ...
A bedolgozók az org.eclipse.core.runtime.preferences kiterjesztés segítségével saját speciális hatóköröket hozhatnak létre. Ebben a kiterjesztésben a bedolgozó megadja az új hatókör nevét valamint az osztályt, amely beállítás-csomópontokat hozhat létre az új hatókörhöz. Megadhatja az osztály nevét, amely inicializálja az alapértelmezett beállításértékeket ezen a hatókörön. Amikor a bedolgozó megad egy új hatókört, a bedolgozó feladata, hogy megvalósítsa a bejárási sorrendet az új hatókörhöz a platform bejárási sorrendhez viszonyítva. A képességet részletesebben is megnézzük a Projekt hatókörű beállítások adott példája segítségével.