Tutoriel 4: observer le modèle dans le frontal #
-
Dans
frontal.taches
ajouter la classeAfficherFileAttente
-
En Eclipse, s’assurer d’avoir l’arborescence suivante
-
Ouvrir
AfficherFileAttente
et ajouter leimport static
suivant:-
import static ca.ntro.app.tasks.frontend.FrontendTasks.*;
-
-
Dans
AfficherFileAttente
, ajouter un groupe de tâchesimport static ca.ntro.app.tasks.frontend.FrontendTasks.*; public class AfficherFileAttente { public static void creerTaches(FrontendTasks tasks) { tasks.taskGroup("AfficherFileAttente") .waitsFor("afficherVueFileAttente") .contains(subTasks -> { // Prêt à observer le modèle }); }
- NOTE:
- le groupe de tâche au complet attend que la
VueFileAttente
soit créée, ce qui se fait dans le groupe de tâchesInitialisation
- dans le cas de
VuePartie
, la vue est plutôt créée dans le groupe de tâcheNavigation
- le groupe de tâche au complet attend que la
- NOTE:
-
Ajouter la tâche
afficherFileAttente
import static ca.ntro.app.tasks.frontend.FrontendTasks.*; public class AfficherFileAttente { public static void creerTaches(FrontendTasks tasks) { tasks.taskGroup("AfficherFileAttente") .waitsFor("afficherVueFileAttente") .contains(subTasks -> { // ajouter l'appel afficherFileAttente(subTasks); }); } private static void afficherFileAttente(FrontendTasks subTasks) { subTasks.task("afficherFileAttente") .waitsFor(created(VueFileAttente.class)) .waitsFor(modified(ModeleFileAttente.class)) .executes(inputs -> { VueFileAttente vueFileAttente = inputs.get(created(VueFileAttente.class)); Modified<ModeleFileAttente> fileAttente = inputs.get(modified(ModeleFileAttente.class)); ModeleFileAttente ancienneFile = fileAttente.previousValue(); ModeleFileAttente fileCourante = fileAttente.currentValue(); // Prêt à afficher les rendez-vous! // }); } }
- NOTES:
- la tâche récupère la vue
- la tâche observe le modèle
- cette tâche sera donc appelée à chaque fois que le modèle est modifié
- NOTES:
-
Dans
FrontalPong
, appelerAfficherFileAttente.creerTaches
public class FrontalPong implements FrontendFx { // ... @Override public void createTasks(FrontendTasks tasks) { // ... AfficherFileAttente.creerTaches(tasks); }
-
Exécuter
pong
et vérifier le mon graphe de tâches du frontal$ sh gradlew pong
Vérifier le fichier .json
#
-
Le fichier
.json
du modèle est dans_storage/models/ModeleFileAttente.json
-
Vérifier le contenu de
ModeleFileAttente.json
{ "_C": "ModeleFileAttente", "prochainIdRendezVous": 1, "rendezVousDansOrdre": [] }
Ajouter des données au fichier .json
#
-
Ouvrir le fichier
ModeleFileAttente.json
-
Ajouter à la main des rendez-vous
{ "_C": "ModeleFileAttente", "prochainIdRendezVous": 3, "rendezVousDansOrdre": [ { "_C": "RendezVous", "idRendezVous": "1", "premierJoueur": { "_C": "Joueur", "id": "ZQ6B", "nom": "Lagrois", "prenom": "Dominic" } }, { "_C": "RendezVousComplet", "idRendezVous": "2", "premierJoueur": { "_C": "Joueur", "id": "UWmq", "nom": "Abdenouri", "prenom": "Mehdi" }, "deuxiemeJoueur": { "_C": "Joueur", "id": "NrPs", "nom": "Gonzales", "prenom": "Chaaya" } } ] }
- RAPPEL: par héritage, une
RendezVousComplet
a aussi les attributs d’unRendezVous
- RAPPEL: par héritage, une
-
Ré-exécuter
pong
$ sh gradlew pong
-
Fermer la fenêtre afin de générer
ModeleFileAttente.png
-
Observer que le modèle pour la file d’attente contient maitenant trois objets: