Wiring de eventos entre componentes  XML
Índice dos Fóruns » Interface Gráfica
Autor Mensagem
louds
Moderador
[Avatar]

Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline

Meu probleminha é o seguinte, estou refatorando meu código de GUI em pequenos componentes reusaveis, a dúvida é sobre como fazer o wiring entre os vários componentes.

Via de regra tenho um objeto com todo o glue code para um caso de uso, ou seja, instancia e configura os componentes GUI. A questão é que a maioria deles costumam espor 1-2 valores e depender de outros. O pepino disso é que as fontes e os destinos desses desses valores mudam muito.

Hoje minha solução envolve os componentes implementarem PropertyChangeListener e um mediador adicionar eles para escutar notificações pertinentes. Um problema disso é que eu trato os eventos de acordo com o tipo da propriedade que mudou, isso meio que cheira mal, o outro é que os componentes tem que estar preparados para receber os eventos.

Ou seja, o código hoje parece +/- com:



Funciona mas fico na dúvida se não seria melhor fazer algo +/- assim:



A idéia é que o Mediador que se vire para entregar o valor ao componente b. Oque tou achando de ruim nisso é que usar composição de componentes fique mais complexo

http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda
[ICQ]
Luca
Moderador
[Avatar]

Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline

Olá

Louds, sem examinar muito seu código mas pegando no ar a questão de que os componentes dependem entre si, me vieram a mente 2 patterns GoFianos: chain of responsabilities e observer. Será que esta idéia ajuda em algo?

[]s
Luca

This message was edited 1 time. Last update was at 08/04/2005 21:36:08


Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."


CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/
[Email] [WWW]
louds
Moderador
[Avatar]

Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline

Luca wrote:Olá

Louds, sem examinar muito seu código mas pegando no ar a questão de que os componentes dependem entre si, me veio a mente 2 patterns GoFianos: chain of responsabilities e observer. Será que esta idéia ajuda em algo?

[]s
Luca


O problema é que os componentes não dependem entre sí, mas sim de valores que podem vir de fontes completamente diferentes.

http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda
[ICQ]
Luca
Moderador
[Avatar]

Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline

Olá

É, reli com mais calma e vi que vc falou que depende de outros e eu entendi dependência entre si.

O modelo de Container do swing é interessante mas eu não recomendaria nem para minha sogra. É dificil tentar advinhar o que pode ser melhor no seu caso. Só me resta ficar lançando idéias ao vento que foi o que fiz no post anterior.

Como está em meio ao processo de refatoramento acho que você mesmo vai descobrir o que é melhor. Só vou lembrar da regra de três do Martin Fowler: na primeira vez você apenas faz, na segunda vez que faz parecido estremece mas faz de novo e na terceira vez parecido chuta o balde e refatora. Então por enquanto deixe como está e siga o processo de refatoração por fora disto. Pode ser que mais adiante vá perceber com mais clareza qual o melhor caminho a adotar.

[]s
Luca


Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."


CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/
[Email] [WWW]
brlima
Moderador
[Avatar]

Membro desde: 12/05/2003 14:03:38
Mensagens: 1537
Localização: São Paulo - SP
Offline

Viajei no que tu falou louds. Não entedi nada.
Vc quer amarrar dois componentes e qdo um alterar, ou outro pega o valor tb ?

Bruno R. Lima
-------------------------------------------
flickr :: twitter
[MSN]
louds
Moderador
[Avatar]

Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline

Bruno, mais ou menos isso.

Os componentes dependem de valores que vem de fontes não determinadas.

Meu atual exemplo é um componente para seleção de tipo java (pense na linha de escolher o super tipo no wizard de criação de classes).

Ele depende do projeto e do pacote atual. No wizard de criação de classes esses dois valores vem de outros dois componentes, no wizard que estou criando o primeiro é constante e o segundo vem de outro componente.

Ou seja, é +/- oque você falou, 2 componentes, quando um alterar, o outro pega o novo valor. Mas sem amarrar eles explicitamente.

http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda
[ICQ]
brlima
Moderador
[Avatar]

Membro desde: 12/05/2003 14:03:38
Mensagens: 1537
Localização: São Paulo - SP
Offline

Será que inputMap / actionMap com clientProperty não ajuda ?

Dai vc pode pegar as ações em cima dos componentes e setar algum valor pro outro componente.

Bruno R. Lima
-------------------------------------------
flickr :: twitter
[MSN]
louds
Moderador
[Avatar]

Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline

brlima wrote:Será que inputMap / actionMap com clientProperty não ajuda ?

Dai vc pode pegar as ações em cima dos componentes e setar algum valor pro outro componente.


Hmm, tou usando SWT então fica complicado usar isso

De qualquer forma valeu, vou dar uma olhada mais a fundo em como seria o equivalente pro SWT/JFaces.

http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda
[ICQ]
 
Índice dos Fóruns » Interface Gráfica
Ir para:   
Powered by JForum 2.1.8 © JForum Team