Rational Developer for System z


Leçon 1 : création d'une classe CustomContextProvider

Cette leçon se construit par dessus le projet de plug-in que vous avez créé dans l'exercice 5 et modifié dans l'exercice 6. Dans cette leçon, vous allez créer la classe CustomContextProvider, qui peut être personnalisée pour s'adapter à l'afficheur que vous voulez. Si, par exemple, vous voulez l'afficheur de champ, le fournisseur de contexte peut étendre le CarmaFieldsContentProvider.

Pour créer la classe CARMAContextProvider :

  1. Assurez-vous d'être dans la perspective Développement de plug-in. Dans la vue Explorateur de package, développez le projet de plug-in que vous avez utilisé dans les exercices 5 et 6.
  2. Cliquez avec le bouton droit de la souris sur le package view contenant les classes CARMADeveloperView et CustomLabelProvider, et sélectionnez Nouveau > Classe.
  3. Dans la boîte de dialogue Nouvelle classe Java qui s'ouvre, saisissez CustomContextProvider dans la zone de texte Nom.
  4. Sélectionnez le bouton Parcourir à droite de la zone de texte Superclasse. Dans la boîte de dialogue Sélection de la superclasse qui s'ouvre, saisissez le texte de filtre : CARMATreeContentProvider. Sélectionnez la classe correspondante et cliquez sur OK.
  5. Cochez la case Constructeurs de la superclasse et cliquez sur Terminer. La boîte de dialogue Nouvelle classe Java se ferme et la classe CustomContentProvider est créée.
  6. Commencez par vérifier que les importations suivantes sont incluses dans la classe Java. Ajoutez les importations éventuellement manquantes.
    import java.util.Vector;
    
    import com.ibm.carma.model.RepositoryInstance;
    import com.ibm.carma.ui.view.CarmaTreeContentProvider;
  7. Vous devez modifier la méthode getChildren pour changer le contenu qui est fourni à l'afficheur. C'est dans cette méthode que le fournisseur peut contrôler quels éléments sont envoyés à l'afficheur lors de l'extension du gestionnaire RAM. Pour ce tutoriel, vous allez implémenter la méthode getChildren pour ne retourner que des instances de référentiel qui comportent un composant CARMA dans leur nom et qui ne sont pas des instances de référentiel de liste, d'objet ou de chargement.

    Le pseudocode suivant démontre ce que la méthode getChildren doit faire :

    obtenir les enfants de l'objet qui doit être normalement retourné;
    pour chaque enfant
    {
       if(l'enfant est une instance de référentiel)
       {
          if(l'instance de référentiel comporte un composant CARMA et n'est pas une instance de référentiel de liste, d'objet ou de chargement)
              ajouter l'enfant à la liste des enfants affichables;
       }
    }
    Ce qui suit est un exemple de code pour la méthode getChildren :
    public Object[] getChildren(Object parent)
    {
       Object[] children = super.getChildren(parent);
    
       //Ne pas effectuer d'analyse syntaxique des enfants non existants
       if(children == null)
       {
          return children;
       }
    
       Vector<Object> displayChildren = new Vector<Object>();
       for(int i = 0; i < children.length; i++)
       {
          if(children[i] instanceof RepositoryInstance)
          {
             RepositoryInstance myContainer = (RepositoryInstance) children[i];
             if (myContainer.getName().contains("CARMA"))
             {
                displayChildren.add(children[i]);
             }
          }
          else
          {
             displayChildren.add(children[i]);
          }
       }
       return displayChildren.toArray();
    }
  8. Enregistrez la source et déboguez les éventuelles erreurs.

Conditions d'utilisation | Commentaires en retour



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