Bonjour à tous,
Je travaille sur une application designée selon le pattern MVC. Tout fonctionne correctement mais je me pose la question suivante.
J'ai un traitement long à effectuer, mais qui ne nécessite pas d'être lancée dans une Thread différente de l'EDT car mon application est mono-threadée : l'utilisateur n'a pas le choix d'attendre la fin du traitement long
Ce traitement est lancé après un clic dans une JMenuBar, qui est une vue abonnée aux listeners de mon modèle via mon controleur.
Pour le traitement long, je veux utiliser une ProgressBar. Où dois-je la mettre pour respecter MVC ? Selon moi plusieurs choix :
1/ la vue s'occupe d'appeler la classe de traitement long et n'informe le contrôleur que quand le traitement est fini et qu'il y a quelque chose à fournir au modèle ? Ce cas me semble le plus simple car tout se passe en dehors du C et du M !
2/ la vue s'occupe juste de notifier au contrôleur que l'utilisateur a lancé le traitement long. Là j'ai des doutes : est-ce que le contrôleur n'informe le modèle qu'une fois que le traitement est fini et qu'il y a un résultat à transmettre au modèle pour le modifier ? Ou est-ce que le Contrôleur lance le traitement via un model.effectueTraitementLong ? Dans ce dernier cas, ça me semble une montagne pour respecter MVC car il faudrait que par exemple à chaque itération, le modèle informe par un fire() le contrôleur de ces changements, et que le contrôleur synchronise les vues, donc ma JProgressBar.
Merci de vos réponses "architecturales" !
Partager