Luonteiden laajennuspisteen avulla luonteiden kirjoittajat voivat rekisteröidä luonteidensa toteutuksille symbolisia nimiä, joita voidaan käyttää työtilassa luonteiden hakuun ja määritykseen. Symbolinen nimi on luonnelaajennuksen tunnus. Luonnelaajennusten name-määritteelle kannattaa antaa arvo, sillä se kuvaa luonteen tarkoitusta ja se saatetaan näyttää käyttäjille.
Luonteissa voi olla muita luonteita koskevia suhderajoituksia. One-of-nature-rajoite määrittää, että projektissa voi olla käytössä samanaikaisesti vain yksi tiettyyn joukkoon kuuluva luonne. Tällä rajoitteella voidaan varmistaa, ettei projektissa käytetä luonteita, jotka eivät ole yhteensopivia keskenään. Requires-nature-rajoite määrittää, että luonne edellyttää jonkin toisen luonteen käyttöä. Jos tällainen luonne lisätään projektiin, myös kaikki kyseisen luonteen edellyttämät luonteet on lisättävä projektiin. Luonteet määritetään ja niiden määrityksen poistetaan niin, että edellytetyt luonteet määritetään ennen varsinaisia luonteita ja edellytettyjen luonteiden määritykset poistetaan varsinaisten luonteiden määritysten poiston jälkeen. Tämän takia luonteiden välille ei saa määrittää kehäviittauksia.
Luonteita ei voi lisätä projektiin tai poistaa siitä, jos tällainen toimi rikkoisi edellä kuvattuja rajoitteita. Jos havaitaan, että jonkin projektiin määritetyn luonteen rajoitteiden mukaiset vaatimukset eivät täyty, kyseinen luonne ja siitä riippuvaiset luonteet merkitään käytöstä poistetuiksi, mutta niitä ei poisteta projektista. Näin voi käydä esimerkiksi silloin, kun asennuksesta puuttuu jokin edellytetty luonne. Myös asennuksesta puuttuvat luonteet ja kehäviittauksissa osalliset luonteet merkitään käytöstä poistetuiksi.
Luonteet voivat lisäksi määrittää, mitä täydentäviä projektin koontitoimintoja luonteisiin on määritetty. Kun nämä tiedot välitetään työtilaan, työtila voi varmistaa, että koontitoimintoja ajetaan vain, jos niihin yhdistetty luonne on käytössä koottavassa projektissa. Jos luonne poistetaan projektista mutta luonteen määritysten poistometodi ei onnistu poistamaan vastaavia koontitoimintoja, työtila poistaa kyseiset koontitoiminnot määrityksistä automaattisesti. Luonteiden määrityksissä ei saa olla samoja täydentäviä projektin koontitoimintoja.
Luonteet voivat myös estää linkitettyjen projektien luonnin projekteihin, joihin luonteet on yhdistetty. Jos allowLinking
-määritteen arvo on "false", linkitettyjä resursseja ei luoda koskaan luonteen mukaan. Tämä uusi ominaisuus lisättiin versioon 2.1.
Versiosta 3.1 alkaen luonteisiin voidaan määrittää sellaisia liitoksia pakollisiin sisältölajeihin, jotka määrittävät, miten tiedostojen sisältölaji selvitetään työtilassa. Ristiriitatilanteissa (jollekin tiedostolle on määritetty useita samanarvoisia sisältölajeja) käytetään sitä sisältölajia, joka on liitetty tiedostoa vastaavaan projektiin kuuluvaan luonteeseen.
<!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>
Jos nämä luonnelaajennukset lisättäisiin om.xyz.coolplugin-lisäosaan, näiden luonteiden tarkat nimet olisivat com.xyz.coolplugin.fireNature, com.xyz.coolplugin.waterNature ja com.xyz.coolplugin.snowNature.<extension id=
"fireNature"
name=
"Tuliluonne"
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=
"Vesiluonne"
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=
"Lumiluonne"
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