プロジェクト・スコープにおける設定

ランタイム設定』では、異なるスコープの設定を定義し、保管するインフラストラクチャーについて説明しました。 また、org.eclipse.core.runtime.preferences 拡張を使用した設定の追加スコープの定義についても説明しました。 プラットフォーム・リソース・プラグインは、プロジェクト・スコープにおける設定を定義するために、独自の設定スコープ「Project」を定義します。 プロジェクト・スコープにおける設定は、プロジェクト内のファイルに保管されます。 これにより、バージョン管理システムなどのリソース指向メカニズムを使用して、簡単に一連の設定を保管し、この設定を他のユーザーと交換することができます。

スコープの指定

新規スコープの定義は、非常に単純です。プラグインは、スコープの名前およびそのスコープをインプリメントするクラスを定義します。リソース・プラグインでは、プロジェクト・スコープが以下のように定義されています。

	<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();