Rational Developer for System z

Filtrage des actions et des pages de propriétés par nature de projet

Cet exemple montre comment ajouter une nature de projet personnalisée à un sous-projet. La présence ou l'absence de la nature du projet peut ensuite permettre de contrôler la visibilité des éléments de menu.

Exemple de scénario

Créez un nouveau projet z/OS avec un sous-projet MVS en suivant les instructions des rubriques suivantes :

Pour ajouter l'exemple de nature du projet au sous-projet, cliquez avec le bouton droit de la souris sur le sous-projet et sélectionnez l'action Actions de l'échantillon d'API > Ajouter une nature de projet.

Exemple de structure de code

Définition de la nature d'un sous-projet

Au niveau conceptuel, les natures de sous-projet dans Rational Developer for System z sont semblables à IProjectNature dans le produit Eclipse de base. Elles permettent de faire la distinction entre des sous-projets distants basés sur la fonctionnalité activée pour chaque sous-projet.

Pour définir une nature de projet personnalisée pour un sous-projet distant, vous devez créer une classe qui implémente l'interface ILogicalSubProjectNature. La classe SampleNature contient alors le code suivant :

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

L'interface ILogicalSubProjectNature est relativement simple. Dans SampleNature, vous ajoutez simplement une zone privée project pour la propriété du projet.

Vous pouvez trouver le code source complet dans SampleNature.java.

Pour terminer la définition de la nature du projet, déclarez la classe SampleNature dans le manifeste du plug-in comme suit :

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

Ce fragment de code définit une nature de projet avec l'ID com.ibm.ftt.api.samples.samplenature, obtenue par l'ajout de l'ID d'extension samplenature à l'ID du plug-in de définition com.ibm.ftt.api.samples.

Ajout d'une nature de projet

L'élément de menu Ajouter une nature de projet est implémenté par la classe AddSubProjectNatureAction. Sa méthode run(IAction) ajoute la SampleNature via la transmission de l'ID de la nature à la méthode addNatureId(String) de ILogicalSubProject.

  try {
			getSubProject().addNatureId("com.ibm.ftt.api.samples.samplenature");
		} catch (CoreException e) {
			// TODO: in production code exception should be handled for real
			e.printStackTrace();
		}

Vous pouvez trouver le code source complet dans AddSubProjectNatureAction.java.

L'action est ajoutée via les mécanismes d'ajout standard d'Eclipse.

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

Suppression d'une nature de projet et ajout d'éléments de menu filtrés par natures de projet

L'élément de menu Supprimer la nature du projet est implémenté par la classe RemoveSubProjectNatureAction. Sa méthode run(IAction) supprime la SampleNature via la transmission de l'ID de la nature à la méthode removeNatureId(String) de ILogicalSubProject.

  try {
			getSubProject().removeNatureId(“com.ibm.ftt.api.samples.samplenature”);
		} catch (CoreException e) {
			// TODO: in production code exception should be handled for real
			e.printStackTrace();
		}

Vous pouvez trouver le code source complet dans RemoveSubProjectAction.java.

L'action est ajoutée via les mécanismes d'ajout standard d'Eclipse, de la même façon que pour l'élément de menu Ajouter une nature de projet, avec en plus l'utilisation de filtres d'action. A cause de ces derniers, l'action Supprimer la nature du projet apparaît uniquement si la SampleNature a été ajoutée au projet en question.

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

Conditions d'utilisation | Commentaires

Ce centre de documentation utilise la technologie Eclipse. (http://www.eclipse.org)