Bonjour à tous,

Je vous expose mon problème : j'ai une application du style livre de cuisine à développer. Celle-ci est composée de deux panneaux, dans l'un on définit la recette et dans l'autre on la visualise.
Plus précisément : dans le premier on inscrit le nom (JTextField) et on définit les ingrédients un par un (représentation graphique d'un objet Ingredient), on peut bien entendu enregistrer la recette dans un fichier.
Le deuxième panneau permet de charger un fichier recette, précédemment créé et se contente de l'afficher (les JTextField deviennent des JLabel).
Pour faire tout cela j'ai commencé à utiliser l'architecture MVC.

Ainsi j'ai les classes IngredientModel, IngredientCtrl, IngredientView et RecetteModel, RecetteCtrl, RecetteView.

Les problèmes sont :
Comment associé Recette et Ingrédient, logiquement RecetteModel contient une liste d'IngredientModel mais alors RecetteCrtl contient également une liste d'IngredientCtrl et pareil pour les vues. Du coup si RecetteModel détruit un IngredientModel il faut faire pareil dans RecetteCtrl et RecetteView (très lourd à gérer !) ?
Dans le premier panneau, le choix de l'ingrédient se fait par une JComboBox. Suivant l'ingrédient sélectionné certains champs sont affichés ou masqués. Mon problème est la mise en oeuvre du modèle MVC dans un formulaire de ce type car selon le choix de la JComboBox l'instance IngredientModel va changer (il existe des sous classes de Ingredient, par exemple IngredientViande, IngredientCondiment...). Donc à un changement du type dingrédient, il faut remplacer un objet (le précédent objet ingrédient sélectionné) par le nouveau. Donc là on touche à RecetteModel et non plus à IngredientModel pourtant la JComboBox appartient à la vue de l'Ingredient (elle représente le type d'ingrédient). Je me demande donc s'il est correct de vouloir représenter un modèle dans un formulaire, si non comment faire pour créer l'objet Recette à la fin lorsqu'on voudra l'enregistrer (qui devra créer l'objet ?)
Le panneau deux me pose beaucoup moins de problème puisqu'il s'agit vraiment d'une représentation de données, néanmoins il s'agit ici d'une deuxième vue, qui permet dans mon cas de cliquer sur un ingrédient pour obtenir des informations dessus (caloris...), infos non enregistrées dans la recette mais ailleurs. Donc la vue doit pouvoir notify le controller de cette action de l'utilisateur. Or le IngredientCtrl utilisé dans le premier panneau n'avait pas cette fonctionnalité. Faut-il créer un IngredientCtrl pour chaque panneau (ce que je trouverais lourd) ? De plus cette action ne concerne pas réellement IngredientCtrl, mais un autre controleur qui doit afficher les infos, donc comment lui passer le message ? En plus il est possible d'augmenter les quantité d'un ingrédient (on multiplie simplement par 2,3,4... la quantité initiale), ce qui vient également changer des infos de la recette. Comment remonter cet évènement ?

Je connais très bien le tuto de Baptiste Wicht mais il est minimaliste.
J'ai bien pensé à lié les controlleurs entre eux et qu'un controleur peut envoyer des évènements en les remontant à son parent jusqu'à ce que l'un d'eux l'intercepte, ça résoudrait le problème de l'affichage des infos de l'ingrédient, mais pas mon problème de formulaire, ni la remonter d'évènements des ingrédient vers la recette.

Bref je suis un peu perdu pour cette application !

Merci d'avance !