Futási beállítások

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.

Beállításhatókörök

A beállítás hatóköre szorosan kapcsolódik a beállítás tárolási helyéhez. A bedolgozófejlesztők eldönthetik, hogy mely szabványos hatókörök érvényesek a beállításokra, vagy megadhatók új, a bedolgozó számára megfelelő hatókörök. Először tekintsük meg a platform futási rendszer által megadott hatóköröket:

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.

Hatókörök és csomópontok használata

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 hatókörök kiterjesztése

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.