在运行时首选项中,查看用于定义和存储具有不同作用域的首选项的基础结构。还看到 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();