I Runtime-indstillinger blev infrastrukturen til brug for definition og lagring af indstillinger, hvis omfang er forskellige, gennemgået. Det blev også gennemgået, at udvidelsen org.eclipse.core.runtime.preferences kan bruges til at definere yderligere omfang for indstillinger. Platformens ressource-plugin definerer sit eget indstillingsomfang, som hedder "Project", for at definere indstillinger, hvis omfang er projektbaseret. Indstillinger med projektbaseret omfang lagres i en fil, der er placeret i projektet. Derved lettes opbevaringen af et sæt indstillinger og udvekslingen af dem med andre brugere, der anvender ressourceorienterede mekanismer, f.eks. et system til kontrol af version.
Definitionen til et nyt omfang er ret enkel. Plugin'en definerer navnet på omfanget og også den klasse, som implementerer det. Ressource-plugin'en definerer projektomfanget på følgende måde:
<extension id="preferences" point="org.eclipse.core.runtime.preferences" name="preferences"> <scope name="project" class="org.eclipse.core.internal.resources.ProjectPreferences"/> </extension>
Den angivne klasse skal implementere IScope-grænsefladen, hvilket betyder, at den skal være i stand til at oprette indstillingsnoder for omfanget.
Da projektomfanget for indstillinger ikke er et af standard-runtime-omfangene, skal den node, der repræsenterer en indstilling på projektniveau, hentes specifikt. Fra rodindstillingsnoden skal du navigere til indstillingen, hvis omfang er projektbaseret. Dette opnås vha. ProjectScope:
IScopeContext projectScope = new ProjectScope(MyProject);
Når projektomfanget for et bestemt projekt er fundet, kan indstillingsværdierne hentes vha. de samme mekanismer som tidligere. Indstillinger navngives vha. strengnavnet på indstillingen. Navnene kvalificeres med en anden streng (ofte en plugin-id), der kvalificerer indstillingens navneområde. Følgende stykke kode henter en indstillingsnode fra projektomfanget. Bemærk, at når først det korrekte omfang er hentet, er der ingen forskel på at arbejde med disse noder end med noder fra andre omfang.
... Preferences projectNode = projectScope.node("com.example.myplugin"); if (projectNode != null) { value = node.getBoolean("MyPreference", "true"); //gør noget med værdien. } ...
For at gemme værdien i en fil i projektet udføres flush for noden. Ressource-plugin'en håndterer logistikken for styring af indstillingsfilen på projektniveau.
projectNode.flush();