ntro.ca

        • Contrats de classe
        • Liens utiles
        • Calendrier
        • Calendrier groupe 3
        • Calendrier groupes 1, 2
        • Structure du cours
        • Évaluations
        • Matériel à se procurer
        • Les profs
          • Marc-Olivier Tremblay
          • Mathieu Bergeron
        • Module 1.1: installation + trier des cartes
        • Module 1.2: rappels POO
          • URL dépôt Git à remettre
        • Module 1.3: tableau d'objets
        • Examen 1
        • Validation des ateliers
        • Module 2.1: données JSON
        • Module 2.2: données en Java
        • Module 2.3: récursivité
        • Examen 2
        • Validation des ateliers
        • Module 3.1: structure générique
        • Module 3.2: efficacité (1)
        • Module 3.3: efficacité (2)
        • Examen 3
        • Validation des ateliers
        • Module 4.1: liste naïve
        • Module 4.2: liste par tableau
        • Module 4.3: liste chaînée
        • Examen 4
        • Validation des ateliers
        • Module 5.1: mappage naïf
        • Module 5.2: mappage par hachage
        • Module 5.3: mappage par arbre
        • Examen 5
        • Validation des ateliers
        • Travail de rattrapage
        • Projets vedettes
          • Contrat gr1
          • Contrat gr2
          • Contrat gr3
        • Survol
        • Structure
        • Calendrier semaines
          • Calendrier gr1
          • Calendrier gr2
          • Calendrier gr3
        • Utilisation IA
        • Évaluations
        • Exemples de pages
        • Exemples de jeu
        • Jeux choisis
        • Réponses à vos questions
        • Module 1: créer le projet
        • Module 2: concevoir l'application
        • Module 3: vues NtroFx
        • Examen 1
        • Examen 2
        • Calendrier
        • Évaluations
        • Structure du cours
        • Contrat de classe
        • Le prof
        • 01: Windows et Word
          • Astuces et raccourcis
        • 02: Word
          • Exercice Word: insertion d'éléments spéciaux
          • Exercice Word: tableaux
        • 03: Word
          • Exercice Word: références
          • TP01: Word (15%)
        • 04: Word
        • 05: PowerPoint
          • TP02: PowerPoint (10%)
        • 06: Examen Word (20%)
        • 07: Excel
        • 08: Excel
        • 09: Excel
          • TP03: Excel (15%)
        • 10: Excel
        • 11: Examen Excel (20%)
        • 12: Access
        • 13: Access
        • 14: Access
        • 15: Examen Access
      • Sondage H2023 (dept. info)
      • Vision H2023 (dept. info)
      • P1) exercices interactifs de lecture
      • P2) transition Excel vers Python
        • Atelier 2: un exemple
      • Index
      • Point de vue sur l'IA
    Tutoriel 3: analyse
    • Tutoriel 3: analyse
      • Comparer le comportement de dep02 et dep03
      • Comparer les graphes de tâches de dep02 et dep03
      • Comparer les fichiers dep02 et dep03
      • Analyser les nouveaux fichiers
      • Analyser la VueA
      • Extra: analyse VueA de dep03_extra02
      • Extra: analyse VueA de dep03_extra03

    Tutoriel 3: analyse #

    Comparer le comportement de dep02 et dep03 #

    dep02

    dep03

    $ sh gradlew dep02

    $ sh gradlew dep03

    Affiche une fenêtre vide Affiche une vue simple, avec mise en forme de base

    Comparer les graphes de tâches de dep02 et dep03 #

    dep02/_storage/graphs/frontend.png

    dep03/_storage/graphs/frontend.png

    • Groupe de tâches TachesB avec une tâche qui affiche la fenêtre.
    • Groupe de tâches TachesB avec une tâche qui affiche la fenêtre et une autre tâche (qui installe la Vue?)

    • Groupe de tâches ViewLoaders (qui charge les fichiers .xml et/ou .css pour la Vue?)

    • Groupe de tâches TachesA (pour créer la vue VueA à partir du ViewLoader?)

    Comparer les fichiers dep02 et dep03 #

    • Comparer les répertoires dep02/src et dep03/src avec VSCode:

    Fichiers différents

    TachesB

    parce qu’on a une nouvelle tâche tacheB1

    FrontalDepart

    pour déclarer la Vue?

    Nouveaux fichiers dans dep03

    VueA

    code Java de la VueA

    h.png
    v.png

    images de fond pour les conteneurs

    dev.css

    régles CSS pour la Vue

    en.properties
    fr.properties

    textes traduits anglais / français

    vue_a.fmlx

    le FXML de la VueA

    • Différences dans le code de TachesB

      • Ajout d’une nouvelle tâche au groupe de tâches TachesB

      • La tacheB1 est complètement nouvelle:

        • On récupère objA avec inputs.get(created(VueA.class))

          • objA est donc la VueA
        • On récupère objA avec inputs.get(window())

          • objB est donc la fenêtre
        • La tâche sert donc à installer la VueA dans la fenêtre

        • Noms possibles pour la tâche

          • installerVueA
          • afficherVueA
          • installerVuePrincipale
          • installerVueRacine
    • Différences dans le code de FrontalDepart

      • Création des TachesA

      • Déclaration de la vue

      • Si on veut changer le nom du fichier vue_a.fxml il faudra changer ce code là:

        registrar.registerView(VueFileAttente.class, "/vues/vue_a.fxml");  // <-----
        

    Analyser les nouveaux fichiers #

    1. Classe TachesA

      tasks.taskGroup("TachesA")
      
           .waitsFor(viewLoaders())
      
           .contains(subTasks -> {
      
              tacheA(subTasks); // <---
      
           });
      
      • Une seule tâche dans le groupe de tâches

      • La tacheA est comme suit

        private static void tacheA(FrontendTasks subTasks) {
        
            subTasks.task(create(VueA.class))
        
                 .waitsFor(viewLoader(VueA.class))
        
                 .executesAndReturnsValue(inputs -> {
        
                     var objA = inputs.get(viewLoader(VueA.class));
                     var objB = objA.createView();
        
                     return objB;
                 });
        
        • objA est un ViewLoader<VueA> puisque récupéré via inputs.get(viewLoader(VueA.class))
        • objB est une VueA puisque créé via la méthode createView d’un ViewLoader<VueA>
      • Noms possible pour le groupe de tâches TachesA

        • CreerVues
        • CreationDesVues
        • ChargerVues
        • etc.
    2. Fichier vue_a.fxml pour la VueA (VueFileAttente)

      <?xml version="1.0" encoding="UTF-8"?>
      
      <?import javafx.scene.layout.* ?>
      <?import javafx.scene.control.* ?>
      
      <VBox xmlns:fx="http://javafx.com/fxml"
          fx:controller="depart.frontal.vues.VueA" 
          styleClass="conteneur,v,center">
      
          <Pane styleClass="espacement,petit"/>
      
          <Label text="%texteA" />
      
          <Pane styleClass="espacement,petit"/>
      
          <Button text="%texteB" />
      
          <Pane styleClass="espacement,petit"/>
      
      </VBox>
      
      • Puisqu’on a renommé VueA => VueFileAttente, il faut modifier la valeur de fx:controller

        <VBox xmlns:fx="http://javafx.com/fxml"
            fx:controller="depart.frontal.vues.FileAttente"  <-----
            styleClass="conteneur,v,center">
        
      • Ensuite, %texteA et %texteB semble quelque chose de spécial, cherchons dans le répertoire dep03/src

      • On trouve que texteA est définit dans fr.properties (et en.properties)

        texteA=Texte A, en français
        texteB=Texte B, en français
        

    Analyser la VueA #

    1. Les contrôles sont dans un VBox, donc placés de haut en bas

    Extra: analyse VueA de dep03_extra02 #

    1. Les contrôles sont dans un HBox, donc placés de gauche à droite

    Extra: analyse VueA de dep03_extra03 #

    1. On a un mélange VBox et HBox

    2. En particulier: on a un VBox, et un des éléments est un HBox

    Creative Commons License Creative Commons Attribution Creative Commons ShareAlike
    • Tutoriel 3: analyse
      • Comparer le comportement de dep02 et dep03
      • Comparer les graphes de tâches de dep02 et dep03
      • Comparer les fichiers dep02 et dep03
      • Analyser les nouveaux fichiers
      • Analyser la VueA
      • Extra: analyse VueA de dep03_extra02
      • Extra: analyse VueA de dep03_extra03