blob: 2c0d70f521437a7329f041522d89b92ce5d045bc [file] [log] [blame]
<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.ui">
<annotation>
<appInfo>
<meta.schema plugin="org.eclipse.ui" id="capabilities" name="Capabilities"/>
</appInfo>
<documentation>
This extension point is used to register project capability extensions. Capabilities are the UI equivalent of CORE's project natures, and have a one-to-one relationship with project natures. The workbench allows the user to add and remove capabilities from a project at any time using the properties dialog or in the new project wizard.
&lt;p&gt;
Capabilities represent particular abilities of a project. For example, a project may have a "Java" capability that allows the project's *.java files to be compiled using a Java compiler.
If the role of the project changes over time, the project's capabilities can be modified to suit the new needs.
For example, a project may start as a simple Java capability, but may later gain a new requirement to use JNI to some legacy library.
The user may then add a "C++" capability (if one exists) to the project to meet this new requirement.
&lt;p&gt;
Some capabilities may wish to handle the user interface for other capabilities.
This generally occurs when a capability requires a number of other capabilities (note that prerequisite information is derived from the org.eclipse.core.resources.natures extension point).
For example, a "Web" capability needs the "Java" capability to compile servlets, but may want to present a much more simpler page to configure the "Java" capability
or maybe not even present any pages about the "Java" capability and just add it with appropriate defaults.
&lt;p&gt;
The install wizard for a capability is responsible for collecting the necessary information from the user in order to add its nature and the natures of any capabilities it handles the UI for. The install wizard must handle the situation where some or all of the required capabilities are already installed and configured.
&lt;p&gt;
The uninstall wizard for a capability is responsible for collecting the necessary information from the user in order to remove its nature. Also must remove any other natures from capabilities that the user wants removed and the capability handles the UI for. These other capabilities that the user wants removed will be provided in the init method.
&lt;p&gt;
Capabilities can specify which perspectives a user can switch to when added to the project. This allows the user to discover new perspectives that can take advantage of the new capabilities. Capabilities that handle the user interface for other capabilities also control the list of perspectives for these capabilities. For example, the "Web" capability handles the user interface for the "Java" capability it requires. The "Web" capability can choose to include the various Java perspectives, or not.
&lt;p&gt;
The categories defined by one plug-in can be referenced by other plug-ins using the category attribute.
&lt;p&gt;
Note the capability name presented to the user comes from the attribute "name" in the extension element of the org.eclipse.core.resources.natures extension point.
</documentation>
</annotation>
<element name="extension">
<complexType>
<sequence>
<element ref="category" minOccurs="0" maxOccurs="unbounded"/>
<element ref="capability" minOccurs="0" maxOccurs="unbounded"/>
</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="category">
<annotation>
<appInfo>
<meta.element labelAttribute="name"/>
</appInfo>
</annotation>
<complexType>
<attribute name="id" type="string" use="required">
<annotation>
<documentation>
a unique name that can be used to identify this category.
</documentation>
</annotation>
</attribute>
<attribute name="name" type="string" use="required">
<annotation>
<documentation>
a translatable name of the category to be presented to the user.
</documentation>
</annotation>
</attribute>
</complexType>
</element>
<element name="capability">
<complexType>
<sequence>
<element ref="handleUI" minOccurs="0" maxOccurs="unbounded"/>
<element ref="perspectiveChoice" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<attribute name="id" type="string" use="required">
<annotation>
<documentation>
a unique name that can be used to identify this capability.
</documentation>
</annotation>
</attribute>
<attribute name="natureId" type="string" use="required">
<annotation>
<documentation>
a unique identifier of the nature associated with this capability. (see &lt;samp&gt;org.eclipse.core.resources.natures&lt;/samp&gt; extension point).
</documentation>
</annotation>
</attribute>
<attribute name="category" type="string">
<annotation>
<documentation>
an optional attribute which references a previously defined category ID.
If omitted, this capability will be added to the "Other" category.
</documentation>
</annotation>
</attribute>
<attribute name="icon" type="string">
<annotation>
<documentation>
an optional attribute which defines a relative path of the icon that may be used to represent this capability.
If omitted, no icon will be displayed.
</documentation>
<appInfo>
<meta.attribute kind="resource"/>
</appInfo>
</annotation>
</attribute>
<attribute name="installWizard" type="string" use="required">
<annotation>
<documentation>
a fully qualified name of the Java class implementing &lt;samp&gt;org.eclipse.ui.ICapabilityInstallWizard&lt;/samp&gt; interface.
The wizard is responsible for collecting any necessary information from the user,
and adding this capability's nature along will all other natures from capabilities this capability handles the UI for.
</documentation>
<appInfo>
<meta.attribute kind="java" basedOn="org.eclipse.jface.wizard.Wizard:org.eclipse.ui.ICapabilityInstallWizard"/>
</appInfo>
</annotation>
</attribute>
<attribute name="installDetails" type="string">
<annotation>
<documentation>
an optional but highly recommended attribute which describes to the users what will be required of them by the install wizard for this capability.
</documentation>
</annotation>
</attribute>
<attribute name="uninstallWizard" type="string" use="required">
<annotation>
<documentation>
a fully qualified name of the Java class implementing &lt;samp&gt;org.eclipse.ui.ICapabilityUninstallWizard&lt;/samp&gt; interface.
The wizard is responsible for collecting any necessary information from the user,
and removing this capability's nature along with any other natures from capabilities that the user wants removed and this capability handles the UI for.
If omitted, the workbench will provide a wizard that will remove this capability's nature from the project along with any other natures from capabilities that the user wants removed and this capability handles the UI for.
</documentation>
<appInfo>
<meta.attribute kind="java" basedOn="org.eclipse.jface.wizard.Wizard:org.eclipse.ui.ICapabilityUninstallWizard"/>
</appInfo>
</annotation>
</attribute>
<attribute name="uninstallDetails" type="string">
<annotation>
<documentation>
an optional but highly recommended attribute which describes to the user what will be required of them by the uninstall wizard for this capability.
</documentation>
</annotation>
</attribute>
<attribute name="description" type="string">
<annotation>
<documentation>
an optional but highly recommended attribute which consists of a short description of what functionality/ability this capability adds to a project.
</documentation>
</annotation>
</attribute>
</complexType>
</element>
<element name="handleUI">
<annotation>
<documentation>
an optional sub-element that contains a unique identifier of another capability whose UI willl be controlled by this capability.
</documentation>
</annotation>
<complexType>
<attribute name="id" type="string" use="required">
<annotation>
<documentation>
the unique identifier of another capability for which its UI will be handled.
</documentation>
</annotation>
</attribute>
</complexType>
</element>
<element name="perspectiveChoice">
<annotation>
<documentation>
an optional sub-element that contains a unique identifier of a perspective that will be presented to the user to choose from.
</documentation>
</annotation>
<complexType>
<attribute name="id" type="string" use="required">
<annotation>
<documentation>
the unique identifier of a perspective the user can switch to.
</documentation>
</annotation>
</attribute>
</complexType>
</element>
<annotation>
<appInfo>
<meta.section type="since"/>
</appInfo>
<documentation>
Release 2.0
</documentation>
</annotation>
<annotation>
<appInfo>
<meta.section type="examples"/>
</appInfo>
<documentation>
Following is an example of capability configuration:
&lt;p&gt;
&lt;pre&gt;
&lt;extension
point="org.eclipse.ui.capabilities"&gt;
&lt;category
name="Weather Elements"
id="com.xyz.weather"&gt;
&lt;/category&gt;
&lt;capability
installWizard="com.xyz.SnowCapabilityWizard"
icon="./icons/snowCapability.gif"
description="Turn your project into a winter wonderland!"
category="com.xyz.weather"
natureId="com.xyz.snowNature"
installDetails="You will be asked to supply a locale id."
id="com.xyz.snowCapability"&gt;
&lt;handleUI
id="com.xyz.waterCapability"&gt;
&lt;/handleUI&gt;
&lt;perspectiveChoice
id="com.xyz.skiPerspective"&gt;
&lt;/perspectiveChoice&gt;
&lt;perspectiveChoice
id="com.xyz.rainPerspective"&gt;
&lt;/perspectiveChoice&gt;
&lt;/capability&gt;
&lt;capability
installWizard="com.xyz.WaterCapabilityWizard"
icon="./icons/waterCapability.gif"
description="Turn your project into a watery wonderland!"
category="com.xyz.weather"
natureId="com.xyz.waterNature"
installDetails="You will be asked to supply a locale id."
id="com.xyz.waterCapability"&gt;
&lt;perspectiveChoice
id="com.xyz.rainPerspective"&gt;
&lt;/perspectiveChoice&gt;
&lt;perspectiveChoice
id="com.xyz.drinkPerspective"&gt;
&lt;/perspectiveChoice&gt;
&lt;/capability&gt;
&lt;/extension&gt;
&lt;/pre&gt;
&lt;/p&gt;
</documentation>
</annotation>
<annotation>
<appInfo>
<meta.section type="apiInfo"/>
</appInfo>
<documentation>
The value of the &lt;samp&gt;installWizard&lt;/samp&gt; attribute must represent a class that implements &lt;samp&gt;org.eclipse.ui.ICapabilityInstallWizard&lt;/samp&gt; interface.
The IProject passed in the init method will exist and can be queried for the instance of other natures.
The capability install wizard must not close nor delete the project passed in the init method.
&lt;p&gt;
The value of the &lt;samp&gt;uninstallWizard&lt;/samp&gt; attribute must represent a class that implements &lt;samp&gt;org.eclipse.ui.ICapabilityUninstallWizard&lt;/samp&gt; interface.
The IProject passed in the init method will exist and can be queried for the existence of other natures.
The capability uninstall wizard must not close nor delete the project passed in the init method.
</documentation>
</annotation>
<annotation>
<appInfo>
<meta.section type="implementation"/>
</appInfo>
<documentation>
The workbench does not provide any capabilities.
</documentation>
</annotation>
<annotation>
<appInfo>
<meta.section type="copyright"/>
</appInfo>
<documentation>
&lt;p&gt;
Copyright (c) 2002,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 http://www.eclipse.org/legal/cpl-v10.html
</documentation>
</annotation>
</schema>