Rational Developer for System z


Lección 4: Desarrollar el código de la clase Java Decorator

En esta lección desarrollará código para la clase Decorator que maneja la decoración de los recursos CARMA en la vista Repositorios de CARMA.

Para añadir esta función a la clase Decorator:

  1. Entre la declaración de clase y el método decorate, añada dos variables estáticas ImageDescriptor que contengan los nombres de vía de acceso ImageDescriptor para el decorador en forma de candado y el decorador en forma de signo de interrogación. Por ejemplo:
    private static ImageDescriptor lock; 	 	
    private static ImageDescriptor question; 	 	
    static 
    { 		
       lock = Activator.getImageDescriptor("icons/lock.jpg"); 		
       question = Activator.getImageDescriptor("icons/question_mark.jpg");
    }
    Consejo: Los nombres de archivo que especifique deben corresponder a los nombres de los iconos que ha importado en la carpeta icons.
  2. Añada al cuerpo del método decorate() el código que añadirá un sufijo locked a los miembros y contenedores de CARMA cuando estén bloqueados o los decorará con signos de interrogación si no se ha establecido MemberInfoMap. A continuación figura un pseudocódigo que lo muestra:
    si( el recurso es Contenedor CARMA o Miembro CARMA){
      si( se ha establecido Member Info Map){ 		
        if( Member Info Map establecida contiene la clave “locked”){ 
    		  if( el valor de la clave “locked” no es una serie vacía){ 				
            decorar miembro/contenedor CARMA con decorador de bloqueo
            Añadir sufijo “locked” al miembro/contenedor CARMA  } 
          } de lo contrario { 	
            decorar miembro/contenedor CARMA con decorador de signo de interrogación
        }
     	}
    }
    Utilice el siguiente código de muestra para implementar esta funcionalidad.
    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(" - (Miembro bloqueado)");
                      else
                         decoration.addSuffix(" - (Contenedor bloqueado)");
                   }
                }  	
             }
             catch(NotSynchronizedException e)
             {
                //Excepción de descriptor de contexto TODO
             }
          } 
          else 
          {
             decoration.addOverlay(question);
             decoration.addSuffix(" - (Sin sincronizar)");
          }
       }
    }
  3. Importe automáticamente las clases y tipos. Asegúrese de incluir las importaciones siguientes:
    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 parte correspondiente a com.ibm.carma.model de la sentencia de importación de paquetes sigue subrayada en rojo, púlsela con el botón derecho del ratón y seleccione el arreglo rápido, "Añadir com.ibm.carma.model a la lista de paquetes importados".
  5. Guarde el código fuente y depure los errores.

Términos de uso | Comentarios



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