r1 - 15 Apr 2007 - 08:35:11 - MeLgaYou are here: TWiki >  Cursos Web  > DesenvolvimentoOrientadoAObjetos > EncontrosDOO > TrezeDeAbril > ResumoDoExercicio

lembrando e detalhando o caso...

o código original fazia assim:

_____________________________________________________________________________________________________


   class TratadorDoBotaoCriarComponentes extends TratadorDixAbstrato{
      
      public void seDito(EventoSimples evento)
      {   
         if(evento.obterNomeDoEvento().equals("clicado")){
            String nomeDoComponente = campoDeTextoEntrada.obterTexto();
            ComponenteDix componente = pagina.criarComponente( tipoDoComponente(nomeDoComponente), nomeDoComponente + 1000 * Math.random());
            componente.fixarTopo((int) (1000 * Math.random()));
            componente.fixarEsquerda((int)(1000 * Math.random()));
            valorDoUltimoTextoAdicionado.fixarTexto(nomeDoComponente);         
         }
      }
      
      private TiposDeComponentesDix tipoDoComponente(String nomeComponente)
      {
         TiposDeComponentesDix tipo = null;
         if (nomeComponente.equals("areaDeTexto")) {
            tipo = TiposDeComponentesDix.ÁREA_DE_TEXTO;
         } else if (nomeComponente.equals("botao")) {
            tipo = TiposDeComponentesDix.BOTÃO;
         } else if (nomeComponente.equals("botoesDeRadio")) {
            tipo = TiposDeComponentesDix.BOTÕES_DE_RÁDIO;
         } else if (nomeComponente.equals("caixaDeEscolha")) {
            tipo = TiposDeComponentesDix.CAIXA_DE_ESCOLHA;
         } else if (nomeComponente.equals("campoDeTexto")) {
            tipo = TiposDeComponentesDix.CAMPO_DE_TEXTO;
         } else if (nomeComponente.equals("grade")) {
            tipo = TiposDeComponentesDix.GRADE;
         } else if (nomeComponente.equals("listaDeEscolha")) {
            tipo = TiposDeComponentesDix.LISTA_DE_ESCOLHA;
         }
         return tipo;
      }

_____________________________________________________________________________________________________


ele necessitava do mapeamento nessa linha:

_____________________________________________________________________________________________________
ComponenteDix componente = pagina.criarComponente( tipoDoComponente(nomeDoComponente), nomeDoComponente + 1000 * Math.random());
_____________________________________________________________________________________________________

 eu fatorei a classe toda para:
_____________________________________________________________________________________________________

class TratadorDoBotaoDeCriar extends TratadorDixAbstrato{

      public void seDito(EventoSimples evento)
      {   
         if(evento.obterNomeDoEvento() == CLICADO ) 
            criarComponente(textoDoUsuário.obterTexto());         
      }

      private void criarComponente(String nomeDoComponente) {
         pagina.criarComponente(m.get(nomeDoComponente), nomeDoComponente + gerarAleatórioAté1000())
            .fixarTopo(gerarAleatórioAté1000())
            .fixarEsquerda(gerarAleatórioAté1000());
         componenteCriado.fixarTexto(nomeDoComponente);
      }

      public int gerarAleatórioAté1000(){
         return  (int) (1000 * Math.random());
      }
   }

_____________________________________________________________________________________________________


ou seja, a linha em questão ficou bem mais simples (mostrando a intenção, sem detalhes)

             criarComponente(textoDoUsuário.obterTexto());      


o mapeamento "m" é utilizado agora para criar o componente:

             m.get(nomeDoComponente)
 

O mapeamento eu declarei e criei assim:

_____________________________________________________________________________________________________


    private final Map<String,TiposDeComponentesDix> m = new HashMap<String, TiposDeComponentesDix>();

_____________________________________________________________________________________________________


e inicializei no "iniciar" do aplique:

_____________________________________________________________________________________________________


    public void iniciar(){   
        inicializarMapaDeNomes();
        botãoDeCriar.adicionarTratadorDeEventos(new TratadorDoBotaoDeCriar());
    }
   

_____________________________________________________________________________________________________

invocando o método:

_____________________________________________________________________________________________________

    private void inicializarMapaDeNomes() {
        m.put("área de texto", ÁREA_DE_TEXTO);
        m.put("botão", BOTÃO);
        m.put("campo", CAMPO_DE_TEXTO);
        m.put("enlace", ENLACE);
        //e assim por diante...
    }   
_____________________________________________________________________________________________________

pra ver tudo funcionando, entrar na página dix.xml em: http://telis.edugraf.ufsc.br/apliques/2007/1/melga/CriacaoDinamica/

Edit | WYSIWYG | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r1 | More topic actions
 
Powered by TWiki
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback