项目范围的首选项

运行时首选项中,查看用于定义和存储具有不同作用域的首选项的基础结构。还看到 org.eclipse.core.runtime.preferences 扩展可以用来为首选项定义其它作用域。平台资源插件定义它自己的首选项作用域(称为“项目”),以便定义项目范围的首选项。项目范围的首选项存储在位于项目内的文件中。这使得很容易存储一组首选项,并使用面向资源的机制(例如,版本控制系统)将这些首选项与其他用户交换。

指定作用域

新作用域的定义相当简单。插件定义作用域的名称以及实现该作用域的类。资源插件按如下所示定义项目作用域:

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

指定的类必须实现 IScope 接口,这意味着它必须能够为作用域创建首选节点。

项目范围的首选节点

因为首选项的项目作用域不是其中一个标准运行时作用域,所以必须特别获得表示项目级别首选项的节点。从根首选节点,必须浏览至项目范围的首选项。这可以通过使用 ProjectScope 来实现:

	IScopeContext projectScope = new ProjectScope(MyProject);

一旦找到了特定项目的项目作用域,就可以使用更容易查看的相同机制来获取首选项值。首选项是使用首选项的字符串名称来命名的。这些名称是使用限定首选项的名称空间的另一个字符串(通常是插件标识)来限定的。以下片段将从项目作用域中获取首选节点。您将注意到,一旦获得了正确的作用域,使用这些节点与使用来自其它作用域的节点就没有什么不同。

	...
	Preferences projectNode = projectScope.node("com.example.myplugin");
	if (projectNode != null) {
		value = node.getBoolean("MyPreference", "true");
		//do something with the value.
	}
	...

要将该值保存至项目中的文件,清空节点。资源插件处理用于管理项目级别的首选项文件的事务。

	projectNode.flush();