setDescription
zdefiniowanej w klasie org.eclipse.core.resources.IProject. Konfiguruje się je podczas dodawania do projektu. Po usunięciu natury z projektu wraz z nią usuwana jest również konfiguracja. Na przykład natura Java może powodować instalowanie programu budującego Java oraz wykonywanie innych czynności konfiguracyjnych podczas dodawania do projektu.Punkt rozszerzenia natur pozwala ich twórcom na rejestrowanie implementacji natur pod symboliczną nazwą, która jest następnie używana w obszarze roboczym do znajdowania i konfigurowania natur. Nazwa symboliczna to identyfikator rozszerzenia natury. Podczas definiowania rozszerzenia natur zalecane jest podawanie czytelnej dla człowieka wartości atrybutu name, która będzie identyfikowała jego znaczenie i będzie mogła być prezentowana użytkownikowi.
Natury mogą określać ograniczenia związków z innymi naturami. Ograniczenie one-of-nature określa, że w dowolnym momencie w projekcie może istnieć najwyżej jedna natura należąca do danego zestawu. Wymusza to wzajemne wykluczanie się natur, które są niezgodne z innymi naturami. Ograniczenie requires-nature określa zależność od innej natury. Podczas dodawania natury do projektu muszą także zostać dodane wszystkie wymagane przez nią natury. Natury są konfigurowane w taki sposób, że wymagane przez nie natury są zawsze konfigurowane przed nimi i dekonfigurowane po nich. Z tego powodu cykliczne zależności między naturami są niedozwolone.
Nie można dodawać natur do projektu ani usuwać ich z projektu, jeśli taka zmiana spowodowałaby naruszenie jakichkolwiek obowiązujących wcześniej ograniczeń. Jeśli natura zostanie skonfigurowana w projekcie, ale później okaże się, że jej ograniczenia nie zostały spełnione, natura ta oraz wszystkie wymagane przez nią natury zostaną oznaczone jako wyłączone, chociaż pozostaną w projekcie. Może się tak zdarzyć na przykład w przypadku niezainstalowania wymaganej natury. Natury niezainstalowane oraz natury uczestniczące w cyklach zależności również są oznaczane jako wyłączone.
Natury mogą również określać, które programy przyrostowo budujące projekty (o ile istnieją) są przez nie konfigurowane. Dzięki tym informacjom programy budujące są uruchamiane w obszarze roboczym tylko w przypadku, gdy w budowanym projekcie istnieje i jest włączona odpowiednia natura. Jeśli natura zostanie usunięta z projektu, ale metoda dekonfiguracji natury nie usunie odpowiednich programów budujących, programy te zostaną usunięte automatycznie przez obszar roboczy. Określenie przez dwie natury w ich języku znaczników tego samego programu przyrostowo budującego projekty jest niedozwolone.
Natury mogą także uniemożliwiać tworzenie dowiązanych zasobów w projektach, z którymi są powiązane. Przez ustawienie dla atrybutu allowLinking
wartości "false" natura może zadeklarować, że dowiązane zasoby nie powinny być tworzone. Funkcja ta stanowi nowość w wersji 2.1.
Od wersji 3.1 natury mogą zadeklarować powinowactwo z wybranymi typami treści, co ma wpływ na sposób określania typu treści dla plików w obszarze roboczym. W przypadku konfliktów (dwa lub więcej typy treści uznane jako odpowiednie dla danego pliku) zostanie wybrany typ treści, który ma powinowactwo do dowolnej natury skonfigurowanej w odpowiednim projekcie.
<!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>
Jeśli rozszerzenia te zostały zdefiniowane we wtyczce o identyfikatorze com.xyz.coolplugin, pełnymi nazwami tych natur będą: com.xyz.coolplugin.fireNature, com.xyz.coolplugin.waterNature i 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 i inne podmioty.
Wszelkie prawa zastrzeżone. Program ten oraz towarzyszące mu materiały są udostępniane na warunkach licencji EPL (Eclipse Public License), wersja 1.0, dołączonej do nich i dostępnej pod adresem http://www.eclipse.org/legal/epl-v10.html.