Nature di progetto

Identificativo: org.eclipse.core.resources.natures

Descrizione: lo spazio di lavoro supporta la nozione di natura del progetto (abbreviato come "natura"). La natura associa a un progetto un comportamento del ciclo di vita. Le nature vengono installate in base al progetto mediante il metodo setDescription definito in org.eclipes.core.resources.IProject. Sono configurate automaticamente quando viene aperto un progetto e deconfigurate quando il progetto viene chiuso. Ad esempio, la natura potrebbe installare un generatore Java ed eseguire altre configurazioni di progetto quando viene aggiunta allo stesso.

Il punto di estensione delle nature permette a chi scrive una natura di registrarne l'implementazione con un nome simbolico da utilizzare dall'interno dello spazio di lavoro per trovare e configurare una natura. Il nome simbolico rappresenta l'id dell'estensione della natura. Durante la definizione dell'estensione di una natura, si consiglia all'utente di includere un valore significativo per l'attributo "name", che identifica la natura.

Le nature possono specificare vincoli di relazione con altre nature. Il vincolo "one-of-nature" specifica che su un progetto può essere presente al massimo una natura relativa ad un determinato insieme in qualsiasi momento. Il vincolo rafforza l'esclusione reciproca tra nature che non sono compatibili. Il vincolo "requires-nature" specifica la dipendenza di una natura da un'altra. Quando una natura viene aggiunta a un progetto, devono essere aggiunte tutte le altre nature necessarie. Le nature vengono configurate e deconfigurate in modo che le relative nature necessarie siano sempre configurate prima e deconfigurate dopo la natura aggiunta. Per tale motivo, non sono consentite dipendenze cicliche tra le nature.

Le nature possono essere aggiunte o rimosse da un progetto nel caso in cui una modifica dovesse violare un vincolo precedentemente soddisfatto. Se i vincoli di una natura configurata su un progetto non sono più soddisfatti, quella natura e tutte le altre per cui è necessaria vengono contrassegnate come disabilitate, anche se rimangono nel progetto. L'eventualità si verifica, ad esempio,quando una natura necessaria non è presente nell'installazione. Le nature che mancano nell'installazione e quelle coinvolte in cicli di dipendenza sono contrassegnate come disabilitate.

Le nature possono inoltre specificare i generatori di progetti incrementali eventualmente configurati. L'informazione consente allo spazio di lavoro di garantire che i generatori saranno eseguiti soltanto quando la natura corrispondente è presente ed abilitata sul progetto da generare. Quando una natura viene rimossa da un progetto senza che il metodo di deconfigurazione della natura riesca a rimuovere i suoi generatori, lo spazio di lavoro elimina automaticamente quei generatori dalla specifica di generazione. Due nature non possono specificare lo stesso generatore di progetto incrementale nella propria configurazione.

Le nature hanno anche la capacità di controllare la possibilità di creazione di risorse collegate in progetti ai quali sono associate. Impostando l'attributo allowLinking a "false", una natura può dichiarare che non devono essere mai create risorse collegate. Questa è una funzione nuova nella versione 2.1.

Tag di configurazione:

   <!ELEMENT extension (runtime , (one-of-nature | requires-nature | builder)* , options?)>

   <!ATTLIST extension
     point CDATA #REQUIRED
     id    CDATA #IMPLIED
     name  CDATA #IMPLIED
   >

   <!ELEMENT runtime (run)>

   <!ELEMENT run (parameter*)>

   <!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)
   >

Esempi: di seguito è riportato un esempio di tre configurazioni di natura. waterNature e fireNature appartengono allo stesso gruppo di esclusione e non possono essere presenti contemporaneamente in un progetto. snowNature richiede waterNature, quandi snowNature sarà disabilitata se nel progetto non è presente waterNature. Come conseguenza logica, snowNature non può essere abilitata in un progetto con fireNature. fireNature inoltre non consente la creazione di risorse collegate.

 
   <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>

Se queste estensioni sono state definite in un plug-in con identificativo "com.xyz.coolplugin", il nome completo di queste nature sarà "com.xyz.coolplugin.fireNature", "com.xyz.coolplugin.waterNature" e "com.xyz.coolplugin.snowNature".

Informazioni API: il valore dell'attributo class deve rappresentare un implementatore di org.eclipse.core.resources.IProjectNature. Le definizioni delle nature possono essere esaminate mediante l'interfaccia org.eclipse.core.resources.IProjectNatureDescriptor. È possibile ottenere oggetti descrittore utilizzando i metodi getNatureDescriptor(String) e getNatureDescriptors() per org.eclipse.core.resources.IWorkspace.

Implementazione fornita: la piattaforma non è dotata di alcuna natura predefinita. Installazioni particolari del prodotto potrebbero comprendere delle nature, in base alle esigenze.

Copyright (c) 2003 IBM Corporation e altri. Tutti i diritti riservati. Questo programma e il materiale di accompagnamento sono disponibili secondo i termini della Common Public License v1.0 che sono distribuiti con il prodotto, e disponibili all'indirizzo http://www.eclipse.org/legal/cpl-v10.html