GWT-EXT - Qual è il modo migliore per widget di un ContentPanel specifico dopo un evento?

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

  •  02-07-2019
  •  | 
  •  

Domanda

il primo post non mi fa male :)

Sto usando un BorderLayout con i soliti pannelli Nord, Ovest, Centro, Sud. Nel Ovest ContentPanel , ho un Tree . Se si verifica un evento ( OnClick ), desidero che una finestra di dialogo particolare venga visualizzata nel Centro ContentPanel .

Qual è il modo migliore per farlo? Attualmente sto usando una funzione chiamata returnPanel () che restituisce il ContentPanel centrale. Nel gestore dell'evento chiamo questa funzione (MainWindow.returnPanel (). Add (myDialog)) .

È stato utile?

Soluzione

Il modo in cui lo fai è intuitivo e funziona, ma inizierà a causare l'inferno quando l'applicazione cresce, perché diverse parti dell'applicazione sono fortemente accoppiate. Le soluzioni a questi problemi sono il modello di progettazione MVC e il modello di progettazione dell'osservatore .

Idealmente, usando il modello MVC, non si desidera che nessun widget "sappia" di nessun altro widget. Esiste solo una classe che conosce tutti i widget, che è il controller. Ogni volta che un widget deve segnalare / segnalare un altro widget, lo comunica alla classe Controller, che inoltra il messaggio nel modo appropriato al widget appropriato. In questo modo, i due widget vengono scomposti e uno può cambiare senza rompere l'altro. È possibile che si desidera utilizzare un enum per elencare tutte le possibili azioni a cui il controller deve rispondere.

Se il tuo widget deve chiamare solo il Controller quando si verifica un evento, puoi semplicemente chiamare un metodo (statico) appropriatamente chiamato e farlo con esso. Tuttavia, non appena più altre classi devono essere informate di un evento, è meglio utilizzare il modello Observer, che consente di segnalare più altre classi, senza cambiare classe. Chiama semplicemente notificationPObservers () in eventHandler e il gioco è fatto. Quanti ascoltatori ci sono e che tipo sono, è irrilevante. In questo modo, puoi anche separare una classe dai suoi ascoltatori. Anche se solo il Controller ascolta, può essere consigliabile utilizzare il modello, poiché separa chiaramente il codice di "richiamata" dall'altro codice nelle classi.

A proposito, questo non ha nulla a che fare con GWT o persino con Java in particolare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top