Tenho um dúvida em relação a MVC com Swing e comunicação entre classes Action (ou Command…).
por exemplo:
Tenho uma aplicação, relativamente grande, em swing onde todos os eventos são tratados por Front Controller que despacha para as respectivas actions. Em determinado momento uma action precisa chamar outra tela. Essa action poderia simplesmente chamar essa tela, fazenddo um new Tela(), ou deveria enviar a requisição de abrir tela para o “controller”?
existe algum framework MVC (tipo um Struts) para Swing?
essa solução de usar um frontController numa aplicação swing é… sei lá … viável, ou é pura invenção.
estive pesquisando sobre isso e quando se fala de framework swing só se encontra coisas sobre montagem de UI via XML
Já fiz usando um “framework” caseiro.
O código é um pouco complexo, senão eu passaria.
Mas o o conceito é simples e se vc implementa-lo de uma maneira eficiente poderá tirar proveito disso.
Tente imaginar como vc aplicaria os conceitos de uma MVC Web em um MVC Swing.
O que dá mais trabalho é a parte de binding do model para a view.
Pra falar a verdade estou me baseando totalmente no struts, mas certas situações não são aplicaveis, ou melhor, eu não consigo aplicar.
Como é o caso de que citei acima, quando uma Action precisa disparar outro caso de uso como por exemplo:
ao executar uma ação “coisa” o sistema verifica se o usuário definiu determinada opção, se não tiver feito isso o sistema apresenta outra tela (que será outro caso de uso “tal”) e no retorno dessa tela termina a execução do caso de uso “coisa”
pergunta.
nessa situação seria mais “correto” fazer
isso?
CoisaAction {
if(!isTalDefinido()) {
return ActionMap.findForward("talNaoDefinido");
//apartir disso o controller efetuaria um "Dispatch"
//para a tela define tal que seria o inicio do outro caso de uso
}
...
}
ou isso?
CoisaAction {
if(!isTalDefinido()) {
TelaDefineTal a = new TelaDefineTal(); //isso seria outro caso de uso
}
...
}
Depois de procurar por um framework para Swing e não encontrar nada, partimos para a construção de um. Nunca usei Struts nem qualquer outro framework web, de modo que não tive uma base para iniciar a construção. Nos baseamos no padrão Model-View-Presenter, uma variante do MVC.
Para o binding model/view (se é que eu entendi corretamente a que o Okara se referia) utilizamos a arquitetura MVC subjacente do Swing para automatizar completamente estas tarefas, relacionando models (i.e., documents, comboboxmodels, tablemodels etc, etc, etc) a atributos de objetos.
O problema é que ninguém investe muito no ambiente desktop.
Senão tenho certeza que existiriam vários frameworks opensource e profissionais.
Porque o pessoal do MentaWai não faz alguma coisa como MentawaiSwing.
Ou deixa o Menta mais desacoplando da web.
[quote=okara]O problema é que ninguém investe muito no ambiente desktop.
Senão tenho certeza que existiriam vários frameworks opensource e profissionais.
Porque o pessoal do MentaWai não faz alguma coisa como MentawaiSwing.
Ou deixa o Menta mais desacoplando da web.
[/quote]
Ou por que você não testa o XWork junto com Swing?
Action para web não foi feita para ser usada em lugar nenhum que não seja web. Ok, vc pode fazer uma action genérica, mas pra que isso ??? Bobeira…
Se vc quer usar swing com o seu projeto web, eu faria requisições HTTP como se o swing fosse um browser. Há classes HttpClient, URL, etc que facilitam bastante isso de forma que vc tenha um back-end e vários front-ends.
Nao ele nao é, mas ajuda no desenvolvimento de um, tanto para desktop quanto para web.
Tu ja chegou da uma olhada no source do JForms? Com certeza se ja olhou vai ver que ele nao é simplemente um set de descendentes do Swing. Na realidade nem Swing precisaria ser.
Ele nunca foi colocado como uma versão final justamente por nao ter documentação, de um tempo pra cá eu to arrumando um tempinho pra escrever a respeito, por sinal se alguem estiver afim de ajudar… Mesmo nao tendo documentacao e nem tendo uma versao oficial lancada o framework ja opera em producao em dois sistemas.
Poxa Fábio não sabia disso. O que eu disse foi a impressão que tive quando olhei alguns exemplos…Parecia que era uma coisa inicial que ficou parada…
Bom eu tava interessado em dar uma olhada nele, mas desde sempre eu nunca tenho “tempo” então não posso prometer nada Acho que no século que vem eu começo a programar em Java efetivamente
Cara pode ser inginurança minha mas no dev.java.net não achei link pra download e algo esquisito aconteceu com o JForms.org…