Les vues d edition d une EMH
Un TopComponent permet d'afficher et d'éditer le contenu d'une EMH. Ces TopComponents héritent de AbstractModellingEMHTopComponent:
Ce composant parent, AbstractModellingEMHTopComponent
, permet de définir les composants graphiques communs à toutes les classes filles: le champ texte pour le nom de l'EMH et le champ texte pour le commentaire.
Il permet également et surtout de définir le comportement global de ces TopComponents:
- au chargement d'un scénario ( méthode
AbstractModellingEMHTopComponent.scenarioLoaded()
), - à la fermeture,
- si le nom est modifié (validation du nom,...)
- si le mode "edit" est activé
- ...
Création de la vue
la construction des éléments d'affichage se fait via la méthode createComponents
et non par la méthode standard de Netbeans initComponents
car la création de l'affichage est mutualisée pour les 4 types d'EMH. La création de la vue se fait en 2 parties:
- la méthode
buildNorthPanel()
permet de créer les composants principaux de la vue. Le terme north est utilisé du fait de l'ancre utilisée dans le layout (http://docs.oracle.com/javase/7/docs/api/java/awt/BorderLayout.html#NORTH). - la méthode
createCancelSaveButtons
() qui est commune à toutes les vues et permet de créer les boutons Cancel et Save de la vue.
Ainsi pour les branches, tout est construit dans ModellingEMHBrancheTopComponent.buildNorthPanel()
.
Remplissage des champs
Comme expliqué dans ModellingEMHTopComponent, une vue doit être capable de réagir à l'ouverture/fermeture d'un scénario. Pour cela, des events sont envoyés au TopComponent et ces derniers implémentent en général la méthode scenarioLoaded
, appelée au chargement et scenarioUnloaded
à la fermeture du scénario.
Dans notre cas, la méthode scenarioLoaded
est utilisée pour remplir les champs de la vue avec les valeurs de l'EMH en cours. Cette action est divisée en 2:
- mise à jour des champs commun soit titre et commentaire
- mise à jour des champs spécifiques au type d'EMH via la méthode
updateOtherComponents
Pour les EMH de type branche qui sont plus complexes ( car une partie de la vue dépend du type de branche), ce remplissage appelle une autre méthode udpdateSpecificCenter
qui permet de créer et gérer des composants d'affichage spécifique au type de branche en cours.