프로젝트 범위 환경 설정

런타임 환경 설정에서 환경 설정을 다른 범위로 정의하고 저장하는 하부구조를 살펴 보았습니다. 또한 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);

특정 프로젝트의 프로젝트 범위를 찾으면 이전에 확인한 동일한 메커니즘을 사용하여 환경 설정 값을 얻을 수 있습니다. 환경 설정은 해당 환경 설정의 문자열 이름을 사용하여 이름이 지정됩니다. 이름은 환경 설정의 이름 공간을 규정하는 다른 문자열(대개 플러그인 ID)과 함께 규정됩니다. 다음 스니펫은 프로젝트 범위에서 환경 설정 노드를 가져옵니다. 올바른 범위를 얻으면 해당 노드에 대한 작업이 기타 범위의 노드와 다르지 않음을 알게 됩니다.

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

파일의 값을 프로젝트에 저장하면 노드는 비워집니다. 자원 플러그인은 프로젝트 레벨 환경 설정 파일을 관리하는 논리를 처리합니다.

	projectNode.flush();