Rational Developer para System z


Lição 4: Desenvolver o Código para a Classe Java Decorator

Nesta lição, você desenvolverá o código para a classe Decorator que trata da decoração dos recursos do CARMA na visualização Repositórios do CARMA.

Para incluir essa funcionalidade na classe Decorator:

  1. Entre a declaração da classe e o método decorate, inclua duas variáveis estáticas ImageDescriptor que contêm os nomes do caminho ImageDescriptor para o decorador de bloqueio e o decorador de ponto de interrogação. Por exemplo:
    private static ImageDescriptor lock; 	 	
    private static ImageDescriptor question; 	 	
    static 
    { 		
       lock = Activator.getImageDescriptor("icons/lock.jpg"); 		
       question = Activator.getImageDescriptor("icons/question_mark.jpg");
    }
    Dica: Os nomes de arquivo fornecidos devem corresponder aos nomes dos ícones importados para a pasta icons.
  2. Inclua o código no corpo do método decorate() que incluirá um sufixo bloqueado nos membros e contêineres do CARMA quando estiverem bloqueados ou decore-os com pontos de interrogação se MemberInfoMap não tiver sido configurado. O pseudocódigo a seguir demonstra isso:
    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
        }
     	}
    }
    Use o código de amostra de exemplo a seguir para implementar essa funcionalidade.
    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)");
          }
       }
    }
  3. Importe automaticamente as classes e tipos. Certifique-se de que as seguintes importações são incluídas:
    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. Se a parte com.ibm.carma.model da sua instrução dos pacotes de importação ainda estiver sublinhada em vermelho, clique com o botão direito do mouse nela e selecione a correção rápida, "Incluir com.ibm.carma.model na lista de pacotes importados."
  5. Salve a origem e depure qualquer erro.

Termos de Uso | Feedback



Este centro de informações foi desenvolvido com a tecnologia Eclipse. (http://www.eclipse.org)