GWT-EXT - Qual é a melhor maneira de widgets para um específico ContentPanel depois de um evento?

StackOverflow https://stackoverflow.com/questions/111854

  •  02-07-2019
  •  | 
  •  

Pergunta

primeiro post não me machuque:)

Eu estou usando um BorderLayout com os habituais painéis Norte, Oeste, Centro, Sul. Na West ContentPanel, eu tenho um Tree. Se ocorrer um evento (OnClick) Eu quero uma caixa de diálogo específica exibida no Centro ContentPanel.

Qual é a melhor maneira para eu fazer isso? Atualmente estou usando uma função chamada returnPanel() que retorna a ContentPanel centro. No manipulador de eventos que eu chamar essa função (MainWindow.returnPanel().add(myDialog)).

Foi útil?

Solução

A forma como você está fazendo isso é intuitivo e obras, mas vai começar a causar o inferno quando a aplicação cresce, porque diferentes partes do aplicativo são fortemente acopladas. As soluções para este problema são a MVC padrão de design e observador padrão de design .

O ideal, usando o padrão MVC, você não quer qualquer widget para 'conhecer' de qualquer outro widget. Há apenas classe que conhece todos os widgets, que é o Controller. A qualquer momento um widget precisa mensagem / sinal outro widget, ele diz-lhe para a classe Controller, que retransmite a mensagem de forma adequada para o widget apropriado. Desta forma, os dois widgets são decpoupled e pode-se alterar sem quebrar o outro. Você pode querer usar um enum para enumerar todas as acções possíveis para que o controlador tem para responsd.

Se seu widget tem que chamar apenas o controlador quando um evento ocorre, você pode simplesmente chamar um método apropriadamente chamado (estático) nele e ser feito com ele. No entanto, assim como várias outras necessidades classes para ser informado de um evento, você é melhor de usar o padrão Observer, que lhe permite sinalizar várias outras classes, sem alterar sua classe. Ele simplesmente chama notifyPObservers () na eventHandler e é isso. Quantos ouvintes existem, e que tipo forem, é irrelevante. Desta forma, você também dissociar uma classe dele é ouvintes. Mesmo que apenas as escutas do controlador, pode ser aconselhável usar o padrão, como claramente separados do código de 'call back' do outro código nas classes.

BTW, isso não tem nada a ver com o GWT ou até mesmo Java em particular.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top