Projectvoorkeursinstellingen

In Runtimevoorkeuren is de infrastructuur voor het definiëren en opslaan van voorkeuren met een verschillend bereik besproken. Ook is besproken hoe de extensie org.eclipse.core.runtime.preferences wordt gebruikt om aanvullende bereiken voor voorkeuren te definiëren. In de platformresourcesplugin wordt een eigen voorkeurenbereik gedefinieerd met de naam "Project,". Dit wordt gebruikt om projectvoorkeuren in te stellen. Projectbereikvoorkeuren worden opgeslagen in een bestand binnen het project. Hierdoor is het eenvoudig om een set voorkeuren op te slaan en deze met andere gebruikers uit te wisselen met behulp van resourcegeoriënteerde mechanismen, bijvoorbeeld een versiebeheersysteem.

Het bereik opgeven

De definitie van nieuwe bereiken is eenvoudig. In de plugin wordt de naam van het bereik gedefinieerd en tevens de klasse die deze implementeert. In de resourcesplugin wordt het projectbereik als volgt gedefinieerd:

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

De opgegeven klasse moet de interface IScope implementeren, wat betekent dat deze voorkeurenknooppunten voor het bereik moet kunnen maken.

Voorkeurenknooppunten en projectbereik

Omdat het projectbereik voor voorkeuren niet een van de standaardruntimebereiken is, moet het knooppunt dat een voorkeur op projectniveau aangeeft, specifiek worden opgehaald. U moet vanuit het voorkeurenknooppunt op het hoogste niveau navigeren naar de projectbereikvoorkeuren. Dit is mogelijk met ProjectScope:

	IScopeContext projectScope = new ProjectScope(MyProject);

Als het projectbereik voor een bepaald project is gevonden, kunt u de voorkeurenwaarden ophalen met de mechanismen die eerder zijn besproken. De voorkeuren worden benoemd aan de hand van de naam (een tekenreeks) van de voorkeur. De namen worden gekwalificeerd met een andere tekenreeks (vaak een plugin-ID) die de naamruimte van de voorkeur kwalificeert. In het volgende codefragment wordt een voorkeurenknooppunt opgehaald uit het projectbereik. Als het correcte bereik is opgehaald, is het werken met knooppunten hetzelfde als met knooppunten uit andere bereiken.

	...
	Preferences projectNode = projectScope.node("com.example.myplugin");
	if (projectNode != null) {
		value = node.getBoolean("MyPreference", "true");
		//iets doen met de waarde.
	}
	...

Om de waarde op te slaan in een bestand in het project, wordt het knooppunt leeggemaakt. De resourcesplugin handelt de logistiek voor het beheer van het voorkeurenbestand op projectniveau af.

	projectNode.flush();