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.
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.
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();