Tutoriel 3.1: créer et installer la VueRacine
#
Créer la classe VueRacine
#
-
En VSCode, créer le paquet
pong.frontal.vues
-
Dans le paquet
vues
, créer la classeVueRacine
-
Ajuster la signature de la classe, qui doit hériter de
ViewFx
:public class VueRacine extends ViewFx {
-
Avec Ctrl+.Eclipse: Ctrl+1, ajouter les
import
et la méthode obligatoire:public class VueRacine extends ViewFx { @Override public void initialize() { } }
- NOTES:
- la méthode
initialize
est requise - on va s’en servir au module 4
- la méthode
- NOTES:
-
S’assurer d’avoir l’arborescence suivante:
Créer le fichier .xml
#
-
Dans le répertoire
pong/src/main/resources/vues
, créer le fichierracine.xml
-
Pour commencer, ajouter le code suivant dans ce fichier:
<?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.layout.*?> <?import javafx.scene.control.*?> <StackPane xmlns:fx="http://javafx.com/fxml" fx:controller="pong.frontal.vues.VueRacine"> <Label text="[TMP] VueRacine"/> </StackPane>
- NOTES:
- l’attribut
fx:controller
déclare notre classeVueRacine
- JavaFx utilise le terme
controller
, mais enNtro
on dirait Vue
- l’attribut
- NOTES:
-
S’assurer d’avoir l’arborescence suivante:
Déclarer la Vue dans le Frontal #
-
Ouvrir
FrontalPong.java
et déclarer laVueRacine
public class FrontalPong implements FrontendFx { // [...] @Override public void registerViews(ViewRegistrarFx registrar) { registrar.registerView(VueRacine.class, "/vues/racine.xml"); } // [...] }
Créer les tâches pour charger la Vue #
-
Dans le paquet
taches
, créer la classeCreerVues
-
S’assurer d’avoir l’arborescence suivante:
-
Dans le
FrontalPong
, ajouter un appel àCreerVues.creerTaches(task)
public class FrontalPong implements FrontendFx { @Override public void createTasks(FrontendTasks tasks) { CreerVues.creerTaches(tasks); PremierAffichage.creerTaches(tasks); }
-
Utiliser Ctrl+.Eclipse: Ctrl+1 pour créer la méthode
CreerVues.creerTaches(tasks)
-
Dans
CreerVues
, ajouter leimport static
pour les tâches:
import static ca.ntro.app.tasks.frontend.FrontendTasks.*;
-
Dans
CreerVues
, créer les tâches suivantes:public class CreerVues { public static void creerTaches(FrontendTasks tasks) { tasks.taskGroup("CreerVues") .waitsFor("ViewLoaders") .contains(subTasks -> { creerVueRacine(subTasks); }); } private static void creerVueRacine(FrontendTasks subTasks) { subTasks.task(create(VueRacine.class)) .waitsFor(viewLoader(VueRacine.class)) .executesAndReturnsValue(inputs -> { ViewLoader<VueRacine> viewLoader = inputs.get(viewLoader(VueRacine.class)); VueRacine vueRacine = viewLoader.createView(); return vueRacine; }); } }
-
Dans la classe
PremierAffichage
, ajouter la dépendance au groupe de tâche"CreerVues"
public static void creerTaches(FrontendTasks tasks) { tasks.taskGroup("PremierAffichage") // ajouter .waitsFor("CreerVues") .contains(subTasks -> { // ... }); }
-
Dans la classe
PremierAffichage
, ajouter la tâche suivantepublic class PremierAffichage { public static void creerTaches(FrontendTasks tasks) { tasks.taskGroup("PremierAffichage") .waitsFor("CreerVues") .contains(subTasks -> { // ajouter installerVueRacine(subTasks); afficherFenetre(subTasks); }); } // ajouter private static void installerVueRacine(FrontendTasks subTasks) { subTasks.task("installerVueRacine") .waitsFor(window()) .waitsFor(created(VueRacine.class)) .executes(inputs -> { VueRacine vueRacine = inputs.get(created(VueRacine.class)); Window window = inputs.get(window()); window.installRootView(vueRacine); }); }
Vérifier que la Vue s’affiche et vérifier le graphe des tâches #
-
Exécuter
pong
$ sh gradlew pong
-
Vérifier que la VueRacine s’affiche
-
Fermer la fenêtre Pong (pour générer le graphe des tâches)
-
Vérifier le graphe des tâches
pong/_storage/graphs/frontend.png