From a97db16dd23a75ba85766e58b453f61e6f498f4c Mon Sep 17 00:00:00 2001 From: orfao Date: Mon, 29 Apr 2024 20:06:02 +0200 Subject: [PATCH] =?UTF-8?q?Am=C3=A9lioration=20du=20MVC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/GMHowToCreateView.java | 2 +- src/GMSaver.java | 19 ++++++------------- src/GMSaverActionListener.java | 19 +++++++++++++++++++ src/GMUserInterfaceView.java | 26 ++++++++++++++++++++++++-- src/GSHomeButtonClickListener.java | 12 ++++++------ src/MusicButton.java | 12 ++++++------ src/MusicPlayer.java | 14 +++++++------- 7 files changed, 69 insertions(+), 35 deletions(-) create mode 100644 src/GMSaverActionListener.java diff --git a/src/GMHowToCreateView.java b/src/GMHowToCreateView.java index ca00c7f..f0c9b1f 100644 --- a/src/GMHowToCreateView.java +++ b/src/GMHowToCreateView.java @@ -16,7 +16,7 @@ public class GMHowToCreateView extends JPanel { private Color TITLE_COLOR = new Color(255, 255, 255); private Font TITLE_FONT = new Font("Copperplate", Font.BOLD, 40); - private String TEXT = "1. Cliquez sur le menu 'Grille'.\n" + + private String TEXT = "1. Cliquez sur le menu 'Fichier'.\n" + "2. Sélectionnez l'option 'Nouveau'.\n" + "3. Entrez les valeurs pour chaque cellule de la grille. (Entrez 0 si vous souhaitez supprimer une valeur de la grille)\n" + "4. Cliquez sur 'Sauvegarder' pour enregistrer votre grille.\n\n" + diff --git a/src/GMSaver.java b/src/GMSaver.java index fb85909..152e8f2 100755 --- a/src/GMSaver.java +++ b/src/GMSaver.java @@ -1,23 +1,22 @@ import java.io.*; import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; -import java.awt.event.ActionListener; -import java.awt.event.ActionEvent; + /** * Cette classe implémente un gestionnaire d'enregistrement de grille de jeu. * Elle permet à l'utilisateur de sauvegarder une grille de jeu dans un fichier spécifié. * Les fichiers de grille sont sauvegardés avec l'extension ".gri". - * Cette classe écoute les événements d'action déclenchés par un composant d'interface utilisateur. * @version 1.0 * @author Moncef STITI * @author Marco ORFAO */ -public class GMSaver implements ActionListener { +public class GMSaver { private File selectedFile; // Le fichier sélectionné pour sauvegarde private JFrame parentFrame; // La fenêtre parent private GMGrid grid; // La grille de jeu à sauvegarder + private GMChecker testGrille; /** * Constructeur de la classe GMSaver. @@ -27,15 +26,10 @@ public class GMSaver implements ActionListener { public GMSaver(JFrame parentFrame, GMGrid grid) { this.parentFrame = parentFrame; this.grid = grid; + this.testGrille = new GMChecker(this.grid); } - /** - * Méthode invoquée lorsqu'un événement d'action est déclenché. - * Elle vérifie si la grille est valide, puis la sauvegarde si c'est le cas. - * Sinon, elle affiche un message d'erreur. - * @param e L'événement d'action déclenché. - */ - public void actionPerformed(ActionEvent e) { + public void saveGridIfNeeded() { if (isValidGrid()) { saveGrid(); } else { @@ -48,8 +42,7 @@ public class GMSaver implements ActionListener { * @return true si la grille est valide, sinon false. */ private boolean isValidGrid() { - GMChecker test = new GMChecker(grid); - return test.isCorrect(); + return this.testGrille.isCorrect(); } /** diff --git a/src/GMSaverActionListener.java b/src/GMSaverActionListener.java new file mode 100644 index 0000000..e072732 --- /dev/null +++ b/src/GMSaverActionListener.java @@ -0,0 +1,19 @@ +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +public class GMSaverActionListener implements ActionListener { + + private Window parentFrame; + private GMGrid grid; + + public GMSaverActionListener(Window parentFrame, GMGrid grid) { + this.parentFrame = parentFrame; + this.grid = grid; + } + + @Override + public void actionPerformed(ActionEvent e) { + GMSaver gMSaver = new GMSaver(parentFrame, grid); + gMSaver.saveGridIfNeeded(); + } +} diff --git a/src/GMUserInterfaceView.java b/src/GMUserInterfaceView.java index cbd35f8..1cfb51f 100755 --- a/src/GMUserInterfaceView.java +++ b/src/GMUserInterfaceView.java @@ -5,12 +5,23 @@ import java.awt.Container; import java.awt.BorderLayout; import java.awt.event.ActionListener; - +/** + * La classe GMUserInterfaceView représente la vue de l'interface utilisateur pour le créateur de grille. + * Elle crée la barre de menu et initialise les différents composants de l'interface utilisateur. + * @version 1.0 + * @author Moncef STITI + * @author Marco ORFAO + */ public class GMUserInterfaceView { private JMenuBar menuBar = new JMenuBar(); private Container content; private GMGrid grid; + /** + * Constructeur de la classe GMUserInterfaceView. + * Initialise la fenêtre avec le titre approprié, crée la barre de menu et ajoute les composants à la fenêtre. + * @param window La fenêtre de l'application + */ public GMUserInterfaceView(Window window) { window.setPageTitle("Créateur de grille"); @@ -27,7 +38,7 @@ public class GMUserInterfaceView { // Ajout des éléments de menu JMenuItem nouveauItem = createMenuItem("Nouveau", new GMResetGrid(grid)); JMenuItem chargerItem = createMenuItem("Charger", new GMImport(window, grid)); - JMenuItem sauvegarderItem = createMenuItem("Sauvegarder", new GMSaver(window, grid)); + JMenuItem sauvegarderItem = createMenuItem("Sauvegarder", new GMSaverActionListener(window, grid)); GMChecker checker = new GMChecker(grid); // Créez une instance de GMChecker GMCheckerListener checkerListener = new GMCheckerListener(checker); // Créez une instance de GMCheckerListener en passant GMChecker en argument JMenuItem verifierItem = createMenuItem("Vérifier", checkerListener); @@ -64,10 +75,21 @@ public class GMUserInterfaceView { window.setVisible(true); } + /** + * Crée un menu avec le titre spécifié. + * @param title Le titre du menu + * @return Le menu créé + */ private JMenu createMenu(String title) { return new JMenu(title); } + /** + * Crée un élément de menu avec le titre et le listener spécifiés. + * @param title Le titre de l'élément de menu + * @param listener Le listener associé à l'élément de menu + * @return L'élément de menu créé + */ private JMenuItem createMenuItem(String title, ActionListener listener) { JMenuItem item = new JMenuItem(title); item.addActionListener(listener); diff --git a/src/GSHomeButtonClickListener.java b/src/GSHomeButtonClickListener.java index d49abc6..661434c 100644 --- a/src/GSHomeButtonClickListener.java +++ b/src/GSHomeButtonClickListener.java @@ -2,8 +2,8 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; /** - * Listener for button clicks in the menu. - * It performs different actions based on the button clicked. + * Listener pour les clics sur les boutons dans le menu. + * Il effectue différentes actions en fonction du bouton cliqué. * @version 1.0 * @author Moncef STITI * @author Marco ORFAO @@ -14,8 +14,8 @@ class GSHomeButtonClickListener implements ActionListener { private GSMenu menuJeu; /** - * Constructs a ButtonClickListener with the specified window. - * @param window The window where the actions will be performed. + * Construit un ButtonClickListener avec la fenêtre spécifiée. + * @param window La fenêtre où les actions seront effectuées. */ public GSHomeButtonClickListener(Window window) { this.window = window; @@ -23,8 +23,8 @@ class GSHomeButtonClickListener implements ActionListener { } /** - * Performs an action based on the button clicked. - * @param e The ActionEvent representing the button click. + * Effectue une action en fonction du bouton cliqué. + * @param e L'ActionEvent représentant le clic sur le bouton. */ @Override public void actionPerformed(ActionEvent e) { diff --git a/src/MusicButton.java b/src/MusicButton.java index a383176..485137d 100644 --- a/src/MusicButton.java +++ b/src/MusicButton.java @@ -1,22 +1,22 @@ import javax.swing.*; /** - * It provides a button that toggles between playing and stopping music when clicked. + * Fournit un bouton qui bascule entre la lecture et l'arrêt de la musique lorsqu'il est cliqué. * @version 1.0 * @author Moncef STITI * @author Marco ORFAO */ - public class MusicButton extends JButton { +public class MusicButton extends JButton { private static MusicPlayer currentMusicPlayer; private ImageIcon iconOn; private ImageIcon iconOff; private MusicPlayer musicPlayer; /** - * Constructs a MusicButton. - * @param onIconPath The file path for the icon when music is on. - * @param offIconPath The file path for the icon when music is off. - * @param musicFilePath The file path for the music file to be played. + * Constructeur : Construit un MusicButton. + * @param onIconPath Le chemin du fichier d'icône lorsque la musique est activée. + * @param offIconPath Le chemin du fichier d'icône lorsque la musique est désactivée. + * @param musicFilePath Le chemin du fichier musical à jouer. */ public MusicButton(String onIconPath, String offIconPath, String musicFilePath) { diff --git a/src/MusicPlayer.java b/src/MusicPlayer.java index 0a451e8..aea7765 100644 --- a/src/MusicPlayer.java +++ b/src/MusicPlayer.java @@ -2,7 +2,7 @@ import java.io.File; import javax.sound.sampled.*; /** - * Class containign a simple music player that allows playing and stopping music. + * Classe contenant un lecteur de musique simple qui permet de jouer et d'arrêter la musique. * @version 1.0 * @author Moncef STITI * @author Marco ORFAO @@ -13,8 +13,8 @@ public class MusicPlayer { private boolean isPlaying; /** - * Constructs a MusicPlayer with the specified file path. - * @param filePath The path to the music file to be played. + * Construit un MusicPlayer avec le chemin de fichier spécifié. + * @param filePath Le chemin du fichier musical à jouer. */ public MusicPlayer(String filePath) { try { @@ -28,7 +28,7 @@ public class MusicPlayer { } /** - * Starts playing the music. + * Démarre la lecture de la musique. */ public void play() { if (this.clip != null && !this.isPlaying) { @@ -38,7 +38,7 @@ public class MusicPlayer { } /** - * Stops the music. + * Arrête la lecture de la musique. */ public void stop() { if (this.clip != null && this.isPlaying) { @@ -48,8 +48,8 @@ public class MusicPlayer { } /** - * Checks if the music is currently playing. - * @return true if the music is playing, false otherwise. + * Vérifie si la musique est en train de jouer actuellement. + * @return true si la musique est en train de jouer, false sinon. */ public boolean isPlaying() { return this.isPlaying;