GWT-EXT - Quel est le meilleur moyen de créer des widgets pour un ContentPanel spécifique après un événement?

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

  •  02-07-2019
  •  | 
  •  

Question

premier message ne me faites pas mal:)

J'utilise un BorderLayout avec les panneaux Nord, Ouest, Centre et Sud habituels. Sur le Ouest ContentPanel , j'ai un arbre . Si un événement ( OnClick ) se produit, je souhaite qu'une boîte de dialogue particulière soit affichée sur le Centre ContentPanel .

Quel est le meilleur moyen pour moi de faire cela? J'utilise actuellement une fonction appelée returnPanel () qui renvoie le centre ContentPanel . Dans le gestionnaire d'événements, j'appelle cette fonction (MainWindow.returnPanel (). Add (myDialog)) .

Était-ce utile?

La solution

La façon dont vous le faites est intuitive et fonctionne, mais elle commencera à causer un enfer lorsque l’application se développera, car différentes parties de l’application sont fortement couplées. Les solutions à ce problème sont le modèle de conception MVC et le modèle de conception de l'observateur .

Idéalement, en utilisant le modèle MVC, vous ne voulez pas qu'un widget «connaisse» un autre widget. Il n'y a que la classe qui connaît tous les widgets, qui est le contrôleur. Chaque fois qu'un widget doit envoyer un message à un autre widget, il le signale à la classe Controller, qui transmet le message de la manière appropriée au widget approprié. De cette façon, les deux widgets sont découplés et l’un peut changer sans casser l’autre. Vous souhaiterez peut-être utiliser une énumération pour énumérer toutes les actions possibles auxquelles le contrôleur doit répondre.

Si votre widget doit appeler uniquement le contrôleur lorsqu'un événement se produit, vous pouvez simplement appeler une méthode (statique) portant un nom approprié et en terminer avec le résultat. Cependant, dès que plusieurs autres classes doivent être informées d'un événement, il vaut mieux utiliser le modèle Observer, qui vous permet de signaler plusieurs autres classes sans changer de classe. Il appelle simplement notifyPObservers () dans eventHandler et c'est tout. Le nombre d'auditeurs et leur type ne sont pas pertinents. De cette façon, vous séparez également une classe de ses auditeurs. Même si seul le contrôleur écoute, il peut être judicieux d’utiliser le modèle, car il a clairement séparé le code de "rappel" de l’autre code des classes.

BTW, cela n’a rien à voir avec GWT ni même avec Java en particulier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top