Descripción: este punto de extensión permite registrar extensiones de las posibilidades de un proyecto. Las posibilidades son el equivalente UI de las naturalezas de los proyectos del núcleo (CORE) y tienen una relación biunívoca con dichas naturalezas. El entorno de trabajo permite al usuario añadir posibilidades a un proyecto o eliminarlas en cualquier momento, utilizando para ello el diálogo de propiedades o el asistente de proyecto nuevo.
Las posibilidades representan las prestaciones concretas que tiene un proyecto. Por ejemplo, un proyecto puede tener una posibilidad "Java" que permite que los archivos *.java del proyecto se compilen con un compilador Java. Si el cometido del proyecto cambia con el tiempo, se pueden modificar las posibilidades del proyecto para que respondan a las nuevas necesidades. Por ejemplo, un proyecto podría tener inicialmente una posibilidad Java simple, pero más adelante podría adquirir un nuevo requisito para utilizar la interfaz JNI en una determinada biblioteca de legado. Luego el usuario podría añadir una posibilidad "C++" (si existe alguna) al proyecto para responder al nuevo requisito.
Algunas posibilidades podrían proponerse manejar la interfaz de usuario de otras posibilidades. Esto sucede en general cuando una posibilidad necesita un número determinado de otras posibilidades (tenga en cuenta que la información de prerrequisitos se deriva del punto de extensión org.eclipse.core.resources.natures). Por ejemplo, una posibilidad "Web" necesita la posibilidad "Java" para compilar servlets, pero podría tener previsto presentar una página mucho más sencilla para configurar la posibilidad "Java" o incluso no presentar ninguna página acerca de la posibilidad "Java" y tan solo añadirla con los valores por omisión apropiados.
El asistente de instalación de una posibilidad es responsable de recoger la información necesaria del usuario para añadir la correspondiente naturaleza y las naturalezas de aquellas posibilidades cuya UI vaya a estar manejada por esta posibilidad. El asistente de instalación debe manejar la situación en la que algunas o todas las posibilidades necesarias ya estén instaladas y configuradas.
El asistente de desinstalación de una posibilidad es responsable de recoger la información necesaria del usuario para eliminar la correspondiente naturaleza. También debe eliminar las otras naturalezas de las posibilidades que el usuario quiere que se eliminen y cuya UI esté manejada por esta posibilidad. Estas otras posibilidades que el usuario quiere que se eliminen se proporcionarán en el método init.
Las posibilidades pueden especificar a qué perspectivas puede pasar un usuario cuando se añadan al proyecto. Esto permite al usuario descubrir nuevas perspectivas que puedan sacar partido de las nuevas posibilidades. Las posibilidades que manejan la interfaz de usuario de otras posibilidades también controlan la lista de perspectivas de esas posibilidades. Por ejemplo, la posibilidad "Web" maneja la interfaz de usuario de la posibilidad "Java" que necesita. La posibilidad "Web" puede optar por incluir o no las diversas perspectivas Java.
El atributo category permite que otros conectores puedan hacer referencia a las categorías definidas por un conector.
Fíjese en que el nombre de la posibilidad que se presenta al usuario procede del atributo "name" del elemento extension del punto de extensión org.eclipse.core.resources.natures.
A partir del: Release 2.0
Códigos XML de configuración:
<!ELEMENT category EMPTY>
<!ATTLIST category
id
CDATA #REQUIRED
name
CDATA #REQUIRED
>
A continuación figura un ejemplo de configuración de posibilidades:
<extension point="org.eclipse.ui.capabilities">
<category
id="com.xyz.weather"
name="Elementos meteorológicos">
</category>
<capability
id="com.xyz.snowCapability"
natureId="com.xyz.snowNature"
category="com.xyz.weather"
icon="./icons/snowCapability.gif"
installWizard="com.xyz.SnowCapabilityWizard">
installDetails="Se le pedirá
que proporcione el ID de un entorno local.">
description="¡Convierta
su proyecto en un maravilloso país invernal!">
<handleUI
id="com.xyz.waterCapability"
</handleUI>
<perspectiveChoice
id="com.xyz.skiPerspective"
</perspectiveChoice>
<perspectiveChoice
id="com.xyz.rainPerspective"
</perspectiveChoice>
</capability>
<capability
id="com.xyz.waterCapability"
natureId="com.xyz.waterNature"
category="com.xyz.weather"
icon="./icons/waterCapability.gif"
installWizard="com.xyz.WaterCapabilityWizard">
installDetails="Se le pedirá
que proporcione el ID de un entorno local.">
description="¡Convierta
su proyecto en un maravilloso país lluvioso!">
<perspectiveChoice
id="com.xyz.rainPerspective"
</perspectiveChoice>
<perspectiveChoice
id="com.xyz.drinkPerspective"
</perspectiveChoice>
</capability>
</extension>
Información sobre las API: el valor del atributo installWizard debe representar una clase que implemente la interfaz org.eclipse.ui.ICapabilityInstallWizard. El IProject que se pasa en el método init existirá y en él se podrán realizar consultas relacionadas con la existencia de otras naturalezas. El asistente de instalación de la posibilidad no debe cerrar ni suprimir el proyecto que se pasa en el método init.
El valor del atributo uninstallWizard debe representar una clase que implemente la interfaz org.eclipse.ui.ICapabilityUninstallWizard. El IProject que se pasa en el método init existirá y en él se podrán realizar consultas relacionadas con la existencia de otras naturalezas. El asistente de desinstalación de la posibilidad no debe cerrar ni suprimir el proyecto que se pasa en el método init.
Implementación suministrada: el entorno de trabajo no proporciona ninguna posibilidad.