Rational Developer for System z


Leçon 4 : développement du code pour la classe Java Decorator

Dans cette leçon, vous allez développer le code pour la classe Decorator qui gère la décoration des ressources CARMA dans la vue Référentiels CARMA.

Pour ajouter cette fonctionnalité à la classe Decorator :

  1. Entre la déclaration de classe et la méthode decorate, ajoutez deux variables ImageDescriptor statiques qui contiennent les chemins d'accès ImageDescriptor pour le décorateur verrou et le décorateur point d'interrogation. Par exemple :
    private static ImageDescriptor lock; 	 	
    private static ImageDescriptor question; 	 	
    static 
    { 		
       lock = Activator.getImageDescriptor("icons/lock.jpg"); 		
       question = Activator.getImageDescriptor("icons/question_mark.jpg");
    }
    Conseil : Les noms des fichiers que vous fournissez doivent correspondre aux noms des icônes que vous avez importées dans le dossier icons.
  2. Ajoutez le code au corps de la méthode decorate() qui ajoutera le suffixe locked aux membres et conteneurs CARMA quand ils sont verrouillés, ou décorez-les avec un point d'interrogation si MemberInfoMap n'a pas été défini. Le pseudocode suivant le démontre :
    if( resource is CARMA Container or CARMA Member){
      if( Member Info Map Set){ 		
        if( Member Info Map Set contains the Key “locked”){ 
    		  if( value for the key “locked” is not empty string){ 				
            decorate CARMA Member/Container with lock decorator
            Add “locked” suffix to CARMA Member/Container  } 
          } else { 	
            decorate CARMA Member/Container with question decorator
        }
     	}
    }
    Utilisez l'exemple de code suivant pour implémenter cette fonctionnalité.
    public void decorate(Object resource, IDecoration decoration) 
    {
       if(resource instanceof CARMAContainer || resource instanceof CARMAMember)
       {
          CARMAResource myResource = (CARMAResource) resource;
          if(myResource.isSetMemberInfoMap())
          {
             try
             {
                EMap myMap = myResource.getMemberInfoMap();
                if(myMap.containsKey("locked"))
                {
                   String value = myMap.get("locked").toString();
                   if( !value.equals(""))
                   {
                      decoration.addOverlay(lock);
                      if(myResource instanceof CARMAMember)
                         decoration.addSuffix(" - (Member Locked)");
                      else
                         decoration.addSuffix(" - (Container Locked)");
                   }
                }  	
             }
             catch(NotSynchronizedException e)
             {
                //TODO gère l'exception
             }
          } 
          else 
          {
             decoration.addOverlay(question);
             decoration.addSuffix(" - (Not Syncronized)");
          }
       }
    }
  3. Importez automatiquement les classes et les types. Vérifiez que les importations suivantes sont incluses :
    import com.ibm.carma.plugin.decorators.Activator;
    import org.eclipse.jface.resource.ImageDescriptor;
    import org.eclipse.jface.viewers.IDecoration;
    import org.eclipse.jface.viewers.ILightweightLabelDecorator;
    import org.eclipse.jface.viewers.LabelProvider;
    import com.ibm.carma.model.CARMAMember;
    import com.ibm.carma.model.CARMAContainer;
    import com.ibm.carma.model.CARMAResource;
    import com.ibm.carma.transport.NotSynchronizedException;
    import org.eclipse.emf.common.util.EMap;
  4. Si la partie com.ibm.carma.model de votre instruction d'importation de packages est toujours soulignée en rouge, cliquez dessus avec le bouton droit de la souris et sélectionnez le correctif rapide, "Ajouter com.ibm.carma.model à la liste des packages importés."
  5. 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)