Rational Developer for System z, Versión 7.6

Filtrar acciones y páginas de propiedades por naturaleza del proyecto

Este ejemplo muestra cómo añadir una naturaleza de proyecto personalizada a un subproyecto. La presencia o ausencia de la naturaleza del proyecto puede utilizarse para controlar la visibilidad de los elementos de menú.

Escenario de ejemplo

Crear un proyecto z/OS y un subproyecto MVS según las instrucciones de los temas siguientes:

Para añadir la naturaleza del proyecto al subproyecto, pulse con el botón derecho del ratón sobre el subproyecto y seleccione la acción Acciones de ejemplo de API > Añadir naturaleza de proyecto.

Imagen de projNatureNoNatureMenu

Recorrido por el código de ejemplo

Definición de naturaleza de subproyecto

Las naturalezas de subproyecto en Rational Developer for System z son parecidas en concepto a IProjectNature en Eclipse base. Proporcionan un medio para distinguir entre subproyectos remotos basados en la funcionalidad que debe habilitarse para cada subproyecto.

Para definir una naturaleza de proyecto personalizada para un subproyecto remoto, debe crear una clase que implementa la interfaz ILogicalSubProjectNature. Así pues, la clase SampleNature contiene lo siguiente:

public class SampleNature implements ILogicalSubProjectNature {
   ......
}

La interfaz ILogicalSubProjectNature es relativamente simple. En SampleNature, simplemente añade un campo privado project para la propiedad del proyecto.

El código fuente completo se puede encontrar en SampleNature.java.

Para completar la definición de la naturaleza del proyecto, declare la clase SampleNature en el manifiesto de plug-in de la forma siguiente:

   <extension
         id=“samplenature”
         name=“
         point=“com.ibm.ftt.projects.core.natures”>
      <nature class=“com.ibm.ftt.api.samples.natures.SampleNature”/>
   </extension>

Este fragmento de código define una naturaleza de proyecto con el ID com.ibm.ftt.api.samples.samplenature, que se obtiene añadiendo el ID de ampliación samplenature al ID del plug-in de definición com.ibm.ftt.api.samples.

Añadir una naturaleza de proyecto

El elemento de menú Añadir naturaleza de proyecto lo implementa la clase AddSubProjectNatureAction. El método run(IAction) añade SampleNature pasando el ID de la naturaleza al método addNatureId(String) de ILogicalSubProject.

  try {
			getSubProject().addNatureId("com.ibm.ftt.api.samples.samplenature");
		} catch (CoreException e) {
			// POR HACER: en producción, la excepción de código debería tratarse en serio
			e.printStackTrace();
		}

El código fuente completo se puede encontrar en AddSubProjectNatureAction.java.

La acción se aporta mediante mecanismos de aportación de Eclipse estándar.

      <objectContribution
            adaptable=“false”
            objectClass=“com.ibm.ftt.projects.core.logical.ILogicalSubProject”
            id=“com.ibm.ftt.api.samples.addnature”>
         <action
               label=“
               class=“com.ibm.ftt.api.samples.natures.AddSubProjectNatureAction”
               id=“com.ibm.ftt.api.samples.addnatureaction”/>
      </objectContribution>

Eliminar una naturaleza de proyecto y aportar elementos de menú filtrados por naturalezas de proyecto

El elemento de menú Eliminar naturaleza de proyecto lo implementa la clase RemoveSubProjectNatureAction. El método run(IAction) elimina SampleNature pasando el ID de la naturaleza al método removeNatureId(String) de ILogicalSubProject.

  try {
			getSubProject().removeNatureId(“com.ibm.ftt.api.samples.samplenature”);
		} catch (CoreException e) {
			// POR HACER: en producción, la excepción de código debería tratarse en serio
			e.printStackTrace();
		}

El código fuente completo puede encontrarse en RemoveSubProjectAction.java.

La acción se aporte mediante mecanismos de aportación Eclipse estándar, parecidos al elemento de menú Añadir naturaleza de proyecto, con la utilización adicional de filtros de acción. Esto hace que la acción Eliminar naturaleza de proyecto aparezca sólo si SampleNature se ha añadido al proyecto en cuestión.

      <objectContribution
            adaptable=“false”
            objectClass=“com.ibm.ftt.projects.core.logical.ILogicalSubProject”
            id=“com.ibm.ftt.api.samples.removenature”>
         <filter
               value=“com.ibm.ftt.api.samples.samplenature”
               name=“projectNature”/>
         <action
               label=“
               class=“com.ibm.ftt.api.samples.natures.RemoveSubProjectNatureAction”
               id=“com.ibm.ftt.api.samples.removenatureaction”/>
      </objectContribution>

Términos de uso | Comentarios

Este Information Center está basado en tecnología Eclipse. (http://www.eclipse.org)