ネーチャーの作成者は、ネーチャー拡張ポイントを使用することにより、 そのネーチャーの実装をシンボリック名に登録することができます。 これはワークスペース内からネーチャーの検出および構成に使用されます。 シンボル名はネーチャー拡張機能の ID です。 ネーチャー拡張機能を定義する場合は、"name" 属性に人間が理解できる値を組み込むようにしてください。 これは意味を識別し、ユーザーに提示される可能性があります。
ネーチャーは、その他のネーチャーとの関係制約を指定できます。 "one-of-nature" 制約は、プロジェクトに、指定のセットに属するネーチャーが多くとも 1 つ存在するように指定します。 これで、相互に互換性のないネーチャー間の相互排他が強制されます。 "requires-nature" 制約は、別のネーチャーとの依存関係を指定します。 ネーチャーをプロジェクトに追加するときは、必要なすべてのネーチャーも追加する必要があります。 ネーチャーは常に、必要なネーチャーが先に構成され、後で構成解除されることが保証されています。 この理由から、ネーチャー間の循環依存関係は許可されていません。
変更によって、以前は満たされていた制約が満たされなくなる場合、ネーチャーをプロジェクトに追加、 またはプロジェクトから除去することはできません。 ネーチャーがプロジェクト上で構成されたが、後からその制約が満たされていないことが分かると、 そのネーチャーとそのネーチャーを必要とするすべてのネーチャーに使用不可 のマークが付けられますが、 プロジェクト上には残されます。 これは、例えば必要なネーチャーがインストールから欠落したときなどに発生することがあります。 インストールから欠落するネーチャー、また依存関係サイクルに関係するネーチャーにも使用不可のマークが付けられます。
さらにネーチャーは、インクリメンタル・プロジェクト・ビルダーが存在する場合に、それを構成するように指定できます。 この情報を使用して、ワークスペースは、ビルダーに対応するネーチャーが存在し、 ビルドしているプロジェクト上で使用可能になっているときにのみ、ビルダーが実行されるようにします。 ネーチャーはプロジェクトから除去されたが、ネーチャーの構成解除メソッドがそれに対応するビルダーの除去に失敗した場合は、 ワークスペースがビルド・スペックからそれらのビルダーを自動的に除去します。 2 つのネーチャーが、それらのマークアップ内に同じインクリメンタル・プロジェクト・ビルダーを指定することは許可されていません。
また、ネーチャーには、
ネーチャーが関連付けられているプロジェクトで、リンクされたリソースの作成を拒否する機能があります。
allowLinking
属性を「false」に設定することによって、
ネーチャーは、リンクされたリソースが作成されないことを宣言できます。
これは、リリース 2.1 の新しいフィーチャーです。
リリース 3.1 以降、ネーチャーは任意のコンテンツ型との親和性を宣言することができます。これは、ワークスペース内のファイルのコンテンツ型の決定方法に影響を与えます。 コンテンツ型が競合した場合 (複数のコンテンツ型が指定ファイルに対して同等に適している場合) に、対応するプロジェクト用に構成されたネーチャーのいずれかと親和性があるコンテンツ型が選択されます。
<!ELEMENT extension (runtime , (one-of-nature | requires-nature | builder | content-type)* , options?)>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #REQUIRED
name CDATA #IMPLIED>
<!ATTLIST run
class CDATA #REQUIRED>
<!ELEMENT parameter EMPTY>
<!ATTLIST parameter
name CDATA #REQUIRED
value CDATA #REQUIRED>
<!ELEMENT one-of-nature EMPTY>
<!ATTLIST one-of-nature
id CDATA #REQUIRED>
<!ELEMENT requires-nature EMPTY>
<!ATTLIST requires-nature
id CDATA #REQUIRED>
<!ELEMENT builder EMPTY>
<!ATTLIST builder
id CDATA #REQUIRED>
<!ELEMENT options EMPTY>
<!ATTLIST options
allowLinking (true | false) >
<!ELEMENT content-type EMPTY>
<!ATTLIST content-type
id CDATA #REQUIRED>
これらの拡張機能が ID "com.xyz.coolplugin" を使用してプラグインに定義されていた場合、これらの ネーチャーの完全修飾名は "com.xyz.coolplugin.fireNature"、"com.xyz.coolplugin.waterNature"、および "com.xyz.coolplugin.snowNature" になります。<extension id=
"fireNature"
name=
"Fire Nature"
point=
"org.eclipse.core.resources.natures"
>
<runtime>
<run class=
"com.xyz.natures.Fire"
/>
</runtime>
<one-of-nature id=
"com.xyz.stateSet"
/>
<options allowLinking=
"false"
/>
</extension>
<extension id=
"waterNature"
name=
"Water Nature"
point=
"org.eclipse.core.resources.natures"
>
<runtime>
<run class=
"com.xyz.natures.Water"
/>
</runtime>
<one-of-nature id=
"com.xyz.stateSet"
/>
</extension>
<extension id=
"snowNature"
name=
"Snow Nature"
point=
"org.eclipse.core.resources.natures"
>
<runtime>
<run class=
"com.xyz.natures.Snow"
>
<parameter name=
"installBuilder"
value=
"true"
/>
</run>
</runtime>
<requires-nature id=
"com.xyz.coolplugin.waterNature"
/>
<builder id=
"com.xyz.snowMaker"
/>
</extension>
Copyright (c) 2002, 2005 IBM Corporation and others.
All rights reserved.
This program and the accompanying materials are made
available under the terms of the Eclipse Public License v1.0 which
accompanies this distribution, and is available at
http://www.eclipse.org/legal/epl-v10.html