MVC en swing : Qu'est-ce qui va dans la vue et le controleur
Bonjour,
J'ai rarement eu l'occasion de faire des applications graphiques type swing, et je regarderai quelques tutoriels à droite à gauche sur le respect de MVC avec swing.
Et je suis tombé sur plusieurs cas qui fait que je ne sais pas exactement ce qui doit aller dans la vue et ce qui doit aller dans le controleur.
D'ailleurs, ça m'embête un peu, car je me dis que cette architecture est tellement nase que quelque chose doit m'échapper :aie:.
Imaginons que sur ma vue, j'ai un simple bouton, qui peut par exemple amener à l'ouverture de fichier (Fenêtre de dialogue où l'utilisateur choisi son fichier).
Cas 1 :
D'un côté, je vois des tutos qui mettent l'ActionListener du bouton directement sur la vue, puis passe par le contrôleur pour déclencher le traitement (ou l'action).
=> ce qui me dérange avec cette aspect, c'est finalement que la vue ne joue pas uniquement un rôle de vue, mais aussi de composant qui écoute. Et la demande de traitement au contrôleur est finalement mise dans la vue.
Mais je ne crois pas que l'on puisse faire autrement pour certains type de traitement, comme les drag&drop de fichiers.
D'un autre côté, je vois des tutos où c'est le contrôleur qui ajoute l'ActionListener sur le bouton de la vue
=> et là, ce qui me dérange, c'est que le contrôleur est au courant de l'implémentation de la vue (il sait déjà a priori que c'est du swing).
Cas 2 :
Ensuite, quand l'utiilisateur clique sur le bouton, cela ouvre une fenêtre attachée à l'autre vue. Mais qui s'occupe de l'attachement de la fenêtre ?
- si c'est la vue, il faut y aller à coup d'instanceof, ce qui fait que ça ne respecte pas vraiment le principe de Liskov (même s'il y a un simple "attachView" sur l'interface de la vue)
- si c'est le controleur, on retombe sur le cas où le controleûr est au courant que c'est du swing derrière
Du coup, quelle stratégie adopter pour ces 2 cas ?
Merci