Projekt-hatókörű beállítások

A Futási beállításokban megtekintettük az infrastruktúrát a különböző hatókörű beállítások megadásához és tárolásához. Azt is láttuk, hogy az org.eclipse.core.runtime.preferences kiterjesztés segítségével a beállításokhoz megadhatók további hatókörök. A platformerőforrások bedolgozó megadja a saját "Projekt" nevű beállítás-hatókörét a projekt hatókörű beállításokhoz. A projekt-hatókörű beállítások a projektben lévő fájlokban kerülnek tárolásra. Ez az erőforrás-orientált mechanizmusok segítségével - mint például a verziókövetési rendszer - leegyszerűsíti a beállításhalmaz tárolását és cseréjüket más felhasználókkal.

A hatókör megadása

Az új hatókörök megadása meglehetősen egyszerű. A bedolgozó megadja a hatókör nevét, valamint a megvalósító osztályt. Az erőforrások bedolgozó az alábbi módon adja meg a projekt-hatókört:

	<extension id="preferences" point="org.eclipse.core.runtime.preferences" name="preferences">
		<scope name="project" class="org.eclipse.core.internal.resources.ProjectPreferences"/>
	</extension>

A megadott osztálynak meg kell valósítani az IScope felületet, amely azt jelenti, hogy létre kell tudnia hozni beállításcsomópontokat a hatókörhöz.

Projekt-hatókörű beállításcsomópontok

Mivel a beállítások projekt hatóköre nem egy szabványos futási hatókör, a projekt szintű beállítást ábrázoló csomópontot kell lekérni. A gyökér beállítás-csomópontból át kell térnie a projekt hatókörű beállításra. Ez a ProjectScope segítségével érhető el:

	IScopeContext projectScope = new ProjectScope(MyProject);

Ha egy adott projekt projekthatóköre nem található, akkor a beállításértékek a korábban látott mechanizmussal lekérhetők. A beállítások a beállítás karaktersorozat-nevével kerülnek megnevezésre. A nevek minősítettek egy másik karaktersorozattal (gyakran egy bedolgozó-azonosító), amely minősíti a beállítás névterét. Az alábbi részlet lekér egy beállításcsomópontot a projekt-hatókörből. Ne feledje el, hogy a megfelelő hatókör elérésekor a csomópontok kezelése nem különbözik más hatókörbe tartozó csomópontok kezelésétől.

	...
	Preferences projectNode = projectScope.node("com.example.myplugin");
	if (projectNode != null) {
		value = node.getBoolean("MyPreference", "true");
		//használja valamire az értéket.
	}
	...

Az érték a projekt egy fájljához elmentéséhez a csomópont kiürítésre kerül. Az erőforrások bedolgozó kezeli a projektszintű beállításfájl felügyeletének logisztikáját.

	projectNode.flush();