Préférences de portée de projet

Dans les préférences d'exécution, vous avez observé l'infrastructure de définition et de stockage des préférences avec différentes portées. Vous avez également découvert que le point d'extension org.eclipse.core.runtime.preferences peut être utilisé pour définir d'autres portées pour les préférences. Le plug-in de ressources de la plate-forme définit sa propre portée de préférences, appelée "Project," afin de définir les préférences de portée de projet. Les préférences de portée de projet sont stockées dans un fichier situé dans le projet. Cela permet de stocker un jeu de préférences et de les échanger avec d'autres utilisateurs à l'aide de mécanismes orientés ressources comme un système de contrôle de version.

Spécification de la portée

La définition des nouvelles portées est relativement simple. Le plug-in définit le nom de la portée, ainsi que la classe qui l'implémente. Le plug-in de ressources définit la portée du projet de la manière suivante :

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

La classe spécifiée doit implémenter l'interface IScope, ce qui signifie qu'elle doit être capable de créer des noeuds de préférences pour la portée.

Noeuds de préférences de portée de projet

Dans la mesure où la portée de projet des préférences n'est pas une des portées d'exécution standard, le noeud qui représente une préférence de niveau de projet doit être obtenu de manière spécifique. Dans le noeud de préférence principal, vous devez naviguer vers la préférence de portée de projet. Cette opération est possible à l'aide de ProjectScope :

	IScopeContext projectScope = new ProjectScope(MyProject);

Une fois que la portée de projet pour un projet donné est détectée, les valeurs de préférences peuvent être obtenues à l'aide des mécanismes que vous avez découverts précédemment. Les préférences sont appelées à l'aide du nom de chaîne de la préférence. Les noms sont qualifiés avec une autre chaîne (souvent un ID plug-in) qui qualifie l'espace de nom de la préférence. Le fragment de code ci-dessous extrait un noeud de préférence à partir de la portée de projet. Vous remarquerez que l'utilisation des noeuds ne diffère pas de l'utilisation des noeuds d'autres portées, une fois que la portée adéquate est obtenue.

	...
	Preferences projectNode = projectScope.node("com.example.myplugin");
	if (projectNode != null) {
		value = node.getBoolean("MyPreference", "true");
		// pour effectuer une opération avec cette valeur.
	}
	...

Pour enregistrer la valeur dans un fichier du projet, le noeud est vidé. Le plug-in de ressources gère la logistique de gestion du fichier de préférences au niveau du projet.

	projectNode.flush();