org.eclipse.core.runtime.preferences 패키지는 플러그인의 환경 설정을 저장하는 하부구조를 제공합니다. 환경 설정은 일반적으로 기본 하부구조에서 필요하지 않더라도 환경 설정 페이지의 사용자에 의해 제어되는 설정에 맵핑됩니다. 플러그인 환경 설정은 키/값 쌍이며, 여기서 키는 환경 설정의 이름을 설명하고 값은 여러 가지 유형(boolean, double, float, int, long 또는 string) 중 하나입니다. 환경 설정이 저장되어 파일 시스템의 플랫폼에서 검색됩니다. 저장된 환경 설정의 정확한 위치는 환경 설정의 범위에 따라 다릅니다.
전체 환경 설정 저장을 노드의 계층 구조로 생각할 수 있는데, 여기서 계층 구조의 각 기본 분기는 특정 범위를 표시합니다. 특정 노드의 하위는 해당 범위가 정의되는 방법에 따라 다릅니다. 인스턴스 및 구성 범위의 경우 하위 노드는 환경 설정 규정자(대개 플러그인의 ID)에서 지정한 특정 플러그인의 환경 설정입니다.
이 모든 내용이 혼동되더라도 걱정하지 마십시오. 범위 및 노드에 대해 문제가 없으면 특정 범위 또는 실제로 환경 설정 값이 들어 있는 트리 노드에 대해 걱정할 필요가 없습니다. 환경 설정 값을 조회하고 제공된 규정자 및 환경 설정 이름을 사용하여 실제로 값이 들어 있는 노드를 찾을 때 환경 설정 API는 적절한 순서(인스턴스, 구성, 기본값)로 노드를 자동으로 순회합니다.
환경 설정은 IPreferencesService 프로토콜을 사용하여 액세스됩니다. 플랫폼의 기본 환경 설정 서비스는 플랫폼 클래스를 사용하여 액세스할 수 있습니다.
... IPreferencesService service = Platform.getPreferencesService(); ...
환경 설정 서비스를 얻으면 IPreferencesService에 제공된 get... 메소드 중 하나를 사용하여 이름별로 환경 설정 값을 조회할 수 있습니다. 예를 들어 다음 스니펫은 "com.example.myplugin" 플러그인의 "MyPreference" 환경 설정 값을 조회합니다.
... IPreferencesService service = Platform.getPreferencesService(); boolean value = service.getBoolean("com.example.myplugin", "MyPreference", true, null); //do something with the value. ...
조회 메소드의 마지막 매개변수는 환경 설정 노드를 검색할 때 사용하는 범위 컨텍스트의 배열입니다. 배열이 널(null)이면 플랫폼은 기본 범위 검색 순서가 사용되어야 함을 가정하고 해당 환경 설정 노드를 예상합니다. 범위 컨텍스트의 배열이 전달되면 환경 설정 노드를 찾는 데 사용될 범위 찾아보기 순서가 판별됩니다. 지정된 범위를 사용하여 노드를 찾을 수 없을 경우 항상 기본 범위 찾아보기 순서가 사용됩니다.
플러그인에 범위 검색 순서에 대한 더욱 정밀한 제어가 필요할 경우 해당 범위를 표시하는 클래스를 사용하여 특정 범위에 있는 환경 설정을 표시하는 실제 노드에 액세스할 수 있습니다. 이 방법을 사용하면 필요한 특정 검색 순서를 지정하는 노드 배열을 작성할 수 있습니다. 다음 스니펫은 위에서 사용한 것과 동일한 환경 설정의 환경 설정 서비스를 조회하지만 플러그인의 구성 범위을 검색하고 뒤이어 플러그인의 인스턴스 범위를 검색합니다. 노드가 검색 순서에 지정되면 기본 범위 지정은 고려되지 않습니다. 즉, 플랫폼은 제공된 정확한 노드만 검색합니다.
... IPreferencesService service = Platform.getPreferencesService(); Preferences configurationNode = new ConfigurationScope().getNode("com.example.myplugin"); Preferences instanceNode = new InstanceScope().getNode("com.example.myplugin"); Preferences[] nodes = new Preferences[] {configurationNode, instanceNode}; stringValue = service.get("MyPreference", "true", nodes); //do something with the value. ...
또한 플러그인은 환경 설정 트리 노드를 통해 고유 순회를 구현할 수도 있습니다. 환경 설정 서비스에서 환경 설정 트리의 루트 노드를 얻을 수 있습니다. 범위 클래스를 사용하여 트리를 자세히 순회할 수 있습니다. 다음 스니펫은 특정 노드를 순회하고 노드 자체에서 환경 설정 값을 검색합니다.
... IPreferencesService service = Platform.getPreferencesService(); Preferences root = service.getRootNode(); Preferences myInstanceNode = root.node(InstanceScope.SCOPE).node("com.example.myplugin"); if (myInstanceNode != null) { value = node.getBoolean("MyPreference", "true"); //do something with the value. } ...
플러그인은 org.eclipse.core.runtime.preferences 확장을 사용하여 특수화된 고유 범위를 정의할 수 있습니다. 이 확장에서 플러그인은 새 범위의 환경 설정 노드를 작성할 수 있는 클래스뿐만 아니라 새 범위의 이름도 정의합니다. 선택적으로 이 플러그인은 해당 범위에 있는 기본 환경 설정 값을 초기화하는 클래스 이름을 지정할 수 있습니다. 플러그인이 새 범위를 지정할 때 플랫폼 순회 순서와 관련된 새 범위에 순회 순서를 구현하는 것은 해당 플러그인에 따라 다릅니다. 프로젝트 범위의 환경 설정에 대한 특정 예제를 사용하여 이 기능을 자세히 살펴 보기로 합니다.