『ランタイム設定』では、異なるスコープの設定を定義し、保管するインフラストラクチャーについて説明しました。 また、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();