Habilitando e Desabilitando Controles
Imagine que você quer habilitar ou desabilitar controles ou botões de acordo com algumas situações da sua interface gráfica. Em nosso exemplo, queremos habilitar o botão salvar, apenas quando a pessoa preencher ao menos o nome do Filme. Para isso então vamos adicionar um método chamado “reset”, que fará a limpeza e atribuição inicial de nossos atributos do form. Veja o código deste método no FilmeForm.java:
public void reset() {
setNome(”");
setSinopse(”");
setComentarios(”");
}
Vamos agora adicionar um método chamado isValidFields() , que retornar um boolean, e podemos escrever alguma regra para informar quando é válido ou não.
public boolean isValidFields() {
return (getNome().length()>0) ;
}
Agora veja a anotação abaixo da de @Action que vamos fazer em nosso método salvar da classe FilmeForm.java:
@EnabledWhen(”form.validFields”)
Usamos as regras de Introspecção do próprio Java. Assim como métodos gets e sets são usados para descobrir que há um atributo com o nome do método tirando o texto get ou set, o is serve também para descobrirmos atributos booleanos. No caso chamamos o método de validação de forma validFields entre as aspas do script da anotação EnableWhen, e internamente o método isValidFields será chamado. Veja exemplo completo:
@Action
@EnabledWhen(”form.validFields”)
public void salvar() {
System.out.println(”Binder pra o objeto filme ” +
this.toString() + “\n Realizado com sucesso!”);
}
Edgar


Entries (RSS)
September 26th, 2006 at 6:55 pm
Olá Edgar!
Achei interessante essa implementação de lógica com o GenesisBinder.
Como não conheço bem esse framework, permita que eu faça uma pergunta:
É possível testar essa lógica que você implementou no exemplo usando testes unitários?
Atualmente eu utilizo o padrão Presentation Model e a API Binding do JGoodies para implementar as telas e separar a lógica da aplicação dos componentes gráficos. Além disso, consigo testar tudo com JUnit. Esse é o assunto do meu artigo na Java Magazine desse mês (que já deve estar para sair).
Grande abraço,
Hugo.