| <?xml version='1.0' encoding='UTF-8'?> |
| <!-- Schema file written by PDE --> |
| <schema targetNamespace="org.eclipse.core.resources"> |
| <annotation> |
| <appInfo> |
| <meta.schema plugin="org.eclipse.core.resources" id="natures" name="Project Natures"/> |
| </appInfo> |
| <documentation> |
| The workspace supports the notion of project natures |
| (or "natures" for short"). A nature associates lifecycle |
| behaviour with a project. Natures are installed on |
| a per-project basis using the setDescription method defined on |
| <samp>org.eclipes.core.resources.IProject</samp>. They are |
| configured automatically when a project is opened and deconfigured |
| when a project is closed. For example, the Java nature |
| might install a Java builder and do other project |
| configuration when added to a project |
| <p> |
| The natures extension-point allows nature writers |
| to register their nature implementation under a |
| symbolic name that is then used from within the |
| workspace to find and configure natures. |
| The symbolic name is id of the nature extension. When |
| defining a nature extension, users are encouraged to include a |
| human-readable value fo rth e"name" attribute which identifies |
| their meaning and potentially may be presented to users. |
| <p> |
| Natures can specify relationship constraints with other natures. |
| The "one-of-nature" constraint specifies that at most one nature |
| belong to a given set can exist on a project at any given time. |
| This enforces mutual exclusion between natures that are not compatible |
| with each other. The "requires-nature" constraint specifies a |
| dependency on another nature. When a nature is added to a project, |
| all required natures must also be added. The natures are guaranteed |
| to be configured and deconfigured in such a way that their required |
| natures will always be configured before them and deconfigured after |
| them. For this reason, cyclic dependencies between natures are not |
| permitted. |
| <p> |
| Natures cannot be added to or removed from a project if that change would |
| violate any constraints that were previously satisfied. If a nature is |
| configured on a project, but later finds that its constraints are not |
| satisfied, that nature and all natures that require it are marked as |
| <i>disabled</i>, but remain on the project. This can happen, for example, |
| when a required nature goes missing from the install. Natures that are |
| missing from the install, and natures involved in dependency cycles are |
| also marked as disabled. |
| <p> |
| Natures can also specify which incremental project builders, if any, are |
| configured by them. With this information, the workspace will ensure that |
| builders will only run when their corresponding nature is present and |
| enabled on the project being built. If a nature is removed from a project, |
| but the nature's deconfigure method fails to remove its corresponding builders, |
| the workspace will remove those builders from the spec automatically. It |
| is not permitted for two natures to specify the same incremental project builder |
| in their markup. |
| <p> |
| Natures also have the ability to disallow the creation of linked resources on projects they are associated with. By setting the <code>allowLinking</code> attribute to &quot;false&quot;, a nature can declare that linked resources should never be created. This feature is new in release 2.1. |
| </documentation> |
| </annotation> |
| |
| <element name="extension"> |
| <complexType> |
| <sequence> |
| <element ref="runtime"/> |
| <choice minOccurs="0" maxOccurs="unbounded"> |
| <element ref="one-of-nature"/> |
| <element ref="requires-nature"/> |
| <element ref="builder"/> |
| </choice> |
| <element ref="options" minOccurs="0" maxOccurs="1"/> |
| </sequence> |
| <attribute name="point" type="string" use="required"> |
| <annotation> |
| <documentation> |
| a fully qualified identifier of the target extension point |
| </documentation> |
| </annotation> |
| </attribute> |
| <attribute name="id" type="string"> |
| <annotation> |
| <documentation> |
| an optional identifier of the extension instance |
| </documentation> |
| </annotation> |
| </attribute> |
| <attribute name="name" type="string"> |
| <annotation> |
| <documentation> |
| an optional name of the extension instance |
| </documentation> |
| </annotation> |
| </attribute> |
| </complexType> |
| </element> |
| |
| <element name="runtime"> |
| <complexType> |
| <sequence> |
| <element ref="run"/> |
| </sequence> |
| </complexType> |
| </element> |
| |
| <element name="run"> |
| <annotation> |
| <appInfo> |
| <meta.element labelAttribute="name"/> |
| </appInfo> |
| </annotation> |
| <complexType> |
| <sequence> |
| <element ref="parameter" minOccurs="0" maxOccurs="unbounded"/> |
| </sequence> |
| <attribute name="class" type="string" use="required"> |
| <annotation> |
| <documentation> |
| the fully-qualified name of a class which implements |
| <samp>org.eclipse.core.resources.IProjectNature</samp> |
| </documentation> |
| <appInfo> |
| <meta.attribute kind="java" basedOn="org.eclipse.core.resources.IProjectNature"/> |
| </appInfo> |
| </annotation> |
| </attribute> |
| </complexType> |
| </element> |
| |
| <element name="parameter"> |
| <annotation> |
| <appInfo> |
| <meta.element labelAttribute="name"/> |
| </appInfo> |
| </annotation> |
| <complexType> |
| <attribute name="name" type="string" use="required"> |
| <annotation> |
| <documentation> |
| the name of this parameter made available to instances of the specified nature class |
| </documentation> |
| </annotation> |
| </attribute> |
| <attribute name="value" type="string" use="required"> |
| <annotation> |
| <documentation> |
| an arbitrary value associated with the given name and made available to instances of the specificed nature class |
| </documentation> |
| </annotation> |
| </attribute> |
| </complexType> |
| </element> |
| |
| <element name="one-of-nature"> |
| <complexType> |
| <attribute name="id" type="string" use="required"> |
| <annotation> |
| <documentation> |
| the name of an exclusive project nature category. |
| </documentation> |
| </annotation> |
| </attribute> |
| </complexType> |
| </element> |
| |
| <element name="requires-nature"> |
| <complexType> |
| <attribute name="id" type="string" use="required"> |
| <annotation> |
| <documentation> |
| the fully-qualified id of another nature extension that this nature extension requires. |
| </documentation> |
| </annotation> |
| </attribute> |
| </complexType> |
| </element> |
| |
| <element name="builder"> |
| <complexType> |
| <attribute name="id" type="string" use="required"> |
| <annotation> |
| <documentation> |
| the fully-qualified id of an incremental project builder extension that this nature controls. |
| </documentation> |
| </annotation> |
| </attribute> |
| </complexType> |
| </element> |
| |
| <element name="options"> |
| <complexType> |
| <attribute name="allowLinking" type="boolean"> |
| <annotation> |
| <documentation> |
| an option to specify whether this nature allows the creation of linked resources. By default, linking is allowed. |
| </documentation> |
| </annotation> |
| </attribute> |
| </complexType> |
| </element> |
| |
| <annotation> |
| <appInfo> |
| <meta.section type="examples"/> |
| </appInfo> |
| <documentation> |
| Following is an example of three nature configurations. The |
| waterNature and fireNature belong |
| to the same exclusive set, so they cannot co-exist on the same |
| project. The snowNature requires |
| waterNature, so snowNature will be disabled on a project that |
| is missing waterNature. It |
| naturally follows that snowNature cannot be enabled on a project |
| with fireNature. The fireNature also doesn't allow the creation of linked resources. |
| |
| <p> |
| <pre> |
| <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> |
| </pre> |
| </p> |
| |
| If these extensions were defined in a plug-in with id "com.xyz.coolplugin", the fully qualified name |
| of these natures would be "com.xyz.coolplugin.fireNature", "com.xyz.coolplugin.waterNature" and |
| "com.xyz.coolplugin.snowNature". |
| </documentation> |
| </annotation> |
| |
| <annotation> |
| <appInfo> |
| <meta.section type="apiInfo"/> |
| </appInfo> |
| <documentation> |
| The value of the class attribute must represent an |
| implementor of |
| <samp>org.eclipse.core.resources.IProjectNature</samp>. |
| Nature definitions can be examined using the |
| <samp>org.eclipse.core.resources.IProjectNatureDescriptor</samp> interface. |
| The descriptor objects can be obtained using the methods |
| <samp>getNatureDescriptor(String)</samp> and <samp>getNatureDescriptors()</samp> |
| on <samp>org.eclipse.core.resources.IWorkspace</samp>. |
| </documentation> |
| </annotation> |
| |
| <annotation> |
| <appInfo> |
| <meta.section type="implementation"/> |
| </appInfo> |
| <documentation> |
| The platform itself does not have any predefined natures. |
| Particular product installs may include natures as required. |
| </documentation> |
| </annotation> |
| |
| <annotation> |
| <appInfo> |
| <meta.section type="copyright"/> |
| </appInfo> |
| <documentation> |
| <p> |
| Copyright (c) 2003 IBM Corporation and others. |
| All rights reserved. This program and the accompanying materials are made available under the terms of the Common Public License v1.0 which accompanies this distribution, and is available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a> |
| </documentation> |
| </annotation> |
| |
| </schema> |