В разделе Параметры среды выполнения мы рассмотрели инфраструктуру для определения и сохранения параметров для различных областей. Также мы узнали, что определить дополнительные параметры можно с помощью расширения 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"); // обработка значения. } ...
Для того, чтобы сохранить значение в файл в проекте, следует очистить узел. Управление файлом параметров уровня проекта обеспечивает модуль ресурсов.
projectNode.flush();