Começaram a aparecer dúvidas sobre o post que fiz a respeito do binding Swing suportado pelo genesis. Aproveito para responder aqui as perguntas do Tetsuo, para que fique mais visível para quem visita o blog:
Há como fazer o binding com outras propriedades dos componentes, como ‘enabled’, ’selected’? Por exemplo chamar ‘form.setNome_enabled(false)’ para desabilitar um textfield. Isto seria perfeito para fazer ’subcutaneous testing’ da lógica das telas sem ter que instanciar componente visual algum, já que toda a lógica poderia ser feita diretamente no bean.
Isso é suportado pelo genesis há cerca de dois anos, de forma direta. Uma coisa coisa é o suporte condicional do genesis, que permite controlar a visibilidade e habilitação de widgets, além de permitir a limpeza dos dados e a chamada automática de métodos sob alguma condição.
Por exemplo, se você tivesse um form onde a pessoa deve inserir o nome do cônjuge (i.e., esposo/esposa), mas quer que esse campo esteja disponível somente quando o indivíduo for casado, pode-se fazer:
@Form
public class ExemploEnabledWhenForm {
private boolean casado;
private String nomeConjuge;
public boolean isCasado() {
return casado;
}
public void setCasado(boolean casado) {
this.casado = casado;
}
@EnabledWhen("form.casado")
public String getNomeConjuge() {
return nomeConjuge;
}
public void setNomeConjuge(String nomeConjuge) {
this.nomeConjuge = nomeConjuge;
}
}
Esse exemplo encontra-se na documentação do genesis.
Outra coisa é trabalhar com seleções e com o populamento de widgets como tabelas, comboboxes e listas. Para isso, o genesis provê a anotação @DataProvider
, que permite definir qual propriedade manterá a opção selecionada, como no exemplo abaixo, também retirado da documentação do projeto:
@Form
public class ExemploDataProviderForm {
private Estado estado;
public Estado getEstado() {
return estado;
}
public void setEstado(Estado estado) {
this.estado = estado;
}
@DataProvider(objectField="estado")
public List populaEstados() {
// retorna uma List contendo instâncias de Estado
}
// ...
}
Uma outra dúvida: quais as dependências mínimas para rodar a aplicação no cliente? Sem banco, sem thinlet, só swing+genesis. Tenho que embutir o runtime do werkz? jxpath? beanutils?
Bem, isso depende muito das funcionalidades que você usar. A melhor maneira é verificar no desktop_build.xml
da versão que você baixar quais jars do path run.standard.classpath
você precisa. Ê fácil deduzir quais uma vez que você tenha lido a documentação do genesis.
Aproveito para lembrar que o genesis possui uma lista de discussão em português em usuarios@genesis.dev.java.net, onde outras pessoas que usam o framework poderão responder e tirar proveito das suas perguntas (e das nossas respostas). Para assinar, basta mandar um email para usuarios-subscribe@genesis.dev.java.net e responder a mensagem que o servidor lhe enviará.