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

One Response to “Usando condições com o GenesisBinder”

  1. Hugo Vidal Teixeira says:

    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.

Leave a Reply