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.
A propos de cette tâche
Pour ajouter cette fonctionnalité à la classe Decorator :
Procédure
- Entre la déclaration de classe et la méthode
decorate, ajoutez deux variablesImageDescriptorstatiques qui contiennent les noms de cheminImageDescriptorpour le décorateur de verrou et le décorateur de 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"); }Astuce: Les noms de fichier que vous fournissez doivent correspondre aux noms des icônes que vous avez importées dans le dossiericons. - Ajoutez le code au corps de la méthode
decorate()qui ajoute un suffixe locked aux membres et aux conteneurs CARMA lorsqu'ils sont verrouillés, ou décorez-les avec des points d'interrogation siMemberInfoMapn'a pas été défini. Le pseudocode suivant le démontre :
Utilisez l'exemple de code suivant pour implémenter cette fonctionnalité.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 } } }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 handle exception } } else { decoration.addOverlay(question); decoration.addSuffix(" - (Not Syncronized)"); } } } - 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; - Si la partie
com.ibm.carma.modelde l'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 "Ajoutercom.ibm.carma.modelà la liste des packages importés". - Enregistrez la source et déboguez les éventuelles erreurs.