Création d'un gestionnaires de panel (Fenêtre)
Motivation
Point qui motive l'utilisation d'un container pour l'injection de dépendance
- Plus le projet grandit plus le nombre de fenêtre est important => Répétition du code création des panels FXML.
- Besoin de fréquent de naviguer entre fenêtre => Besoin d'une classe qui devra gérer cette navigation ?
Choix des tests à effectuer
SceneManager
Test du - Vérifier les cas d'erreur des fonctions
setPanel()
etremovePanel()
lorsque qu'aucun panel n'existe. - Vérifier que la fonction
setPanel()
fonctionne et appel bien les méthodes des contrôleurs associé aux panels. - Vérifier triviale de la fonction
getPanel()
.
Solution à mettre en œuvre
L'idée ici est de crée une classe SceneManager
qui reprendrais les principes du State Pattern. Elle serai mise à disposition des contrôleurs grâce au container.
Actions à implémenté dans cette classe :
- Ajouter, Retirer un panel =>
addPanel(String name, Pane panel)
- Choisir le panel actif =>
setPanel(String name)
(Gestion des erreurs avec une exceptionIllegalArgumentExeption
) - Créer une vue FXML en une ligne avec l'appel d'une méthode
createPanel()
- Cette méthode prends en paramètre le nom du panel
- Le chemin de la vue FXML.
- La classe (
java.lang.Class
) du contrôleur à instancier. - Avec tout ça elle crée le contrôleur, la vue et l'ajoute à la liste de panel.
Une convention est aussi crée pour plus de simplicité.
- Tout les contrôleurs extend d'une classe abstraite générique
Controller
. - Les méthodes
onHide()
etonShow()
sont appelé à chaque activation/désactivation du panel. - Les contrôleurs doivent avoir un constructeur
Controller(Container)
.
Issue hors énoncé