13 23 TodoList partie 2

Nous reprenons notre application TodoList. Chaque tâche à faire doit afficher une courte description dans la liste de gauche, des détails plus longs sur le côté droit, et une date d'échéance. Trois nouveaux champs dans notre classe TodoItem, donc.

Enrichir la classe TodoItem

Dans TodoItem, on déclare trois variables d'instance privées :

private String shortDescription;
private String details;
private LocalDate deadline;

Attention à bien importer java.time.LocalDate. On ajoute ensuite un constructeur prenant ces trois paramètres, ainsi que les getters et setters habituels.

Initialiser le controller avec des exemples

Côté contrôleur, on déclare une liste privée todoItems typée List<TodoItem>. On crée une méthode initialize() publique qui sera appelée automatiquement par JavaFX au démarrage. Dans cette méthode, on crée trois TodoItem de démonstration :

  • Item 1 : « Carte d'anniversaire », détails « Acheter une carte d'anniversaire pour le 30e anniversaire de John », deadline LocalDate.of(2022, 5, 12).
  • Item 2 : « Rendez-vous chez le médecin », détails « Voir Dr. Smith au 123 Main Street. Apporter les papiers », deadline le 20 juin.
  • Item 3 : « Proposition de design finale pour le client », détails « Envoyer à Mike une maquette du site web par e-mail d'ici au vendredi 22 mai », deadline le 22 mai.

On instancie ensuite une ArrayList<TodoItem> dans todoItems et on y ajoute les trois éléments avec todoItems.add(item1), etc. À ce stade, notre application dispose d'un modèle peuplé, prêt à être affiché.

Nous nous arrêtons ici. Dans la prochaine vidéo, nous brancherons cette liste à la ListView du fichier FXML pour faire apparaître les descriptions courtes sur le côté gauche de l'écran. À bientôt.

En résumé

Dans cette deuxième partie du projet TodoList, l'instructeur ajoute de nouvelles propriétés à la classe TodoItem : une description courte, des détails étendus et une date limite de type LocalDate. Après génération automatique des getters, setters et constructeur, le focus se déplace vers le contrôleur qui gère l'interaction entre l'interface utilisateur et le modèle de données. Une méthode initialize() est ensuite mise en place pour initialiser l'application avec des exemples de données, incluant la création d'une ArrayList de TodoItems et l'ajout d'items exemple avec leurs propriétés complètes.

Points clés

  • Ajout de trois champs à la classe TodoItem : description (String), détails (String) et dateEchéance (LocalDate importée de java.time)
  • Génération automatique des getters, setters et constructeur acceptant les trois nouveaux paramètres
  • Le contrôleur gère l'interaction entre l'interface utilisateur et le modèle de données TodoItem
  • Création d'une méthode initialize() pour pré-remplir l'application avec des exemples de données (anniversaire, rendez-vous médecin, proposition de conception)
  • Utilisation de LocalDate.of() pour créer des dates spécifiques (exemple : LocalDate.of(2022, 5, 12))
  • Création d'une ArrayList<TodoItem> et ajout des items exemple via la méthode add()

Questions fréquentes

Pourquoi utiliser LocalDate au lieu d'une simple String pour la date d'échéance?

LocalDate de java.time offre une meilleure gestion des dates avec des opérations spécifiques (comparaisons, calculs d'intervalles, formatage), tandis qu'une String nécessiterait un parsing manuel et serait moins fiable.

Quel est le rôle du contrôleur dans cette architecture?

Le contrôleur sert d'intermédiaire entre l'interface utilisateur et le modèle de données (la classe TodoItem), gérant la logique de présentation et orchestrant les interactions utilisateur.

Comment initialise-t-on l'ArrayList dans la méthode initialize()?

On crée une nouvelle instance avec new ArrayList<TodoItem>() et on ajoute chaque item via la méthode add(), comme montré avec item1, item2 et item3 dans l'exemple du transcript.