Amélioration du MVC

This commit is contained in:
Marco ORFAO 2024-04-29 20:06:02 +02:00
parent a18285e0f2
commit a97db16dd2
7 changed files with 69 additions and 35 deletions

View File

@ -16,7 +16,7 @@ public class GMHowToCreateView extends JPanel {
private Color TITLE_COLOR = new Color(255, 255, 255); private Color TITLE_COLOR = new Color(255, 255, 255);
private Font TITLE_FONT = new Font("Copperplate", Font.BOLD, 40); 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" + "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" + "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" + "4. Cliquez sur 'Sauvegarder' pour enregistrer votre grille.\n\n" +

View File

@ -1,23 +1,22 @@
import java.io.*; import java.io.*;
import javax.swing.*; import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter; 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. * 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é. * 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". * 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 * @version 1.0
* @author Moncef STITI * @author Moncef STITI
* @author Marco ORFAO * @author Marco ORFAO
*/ */
public class GMSaver implements ActionListener { public class GMSaver {
private File selectedFile; // Le fichier sélectionné pour sauvegarde private File selectedFile; // Le fichier sélectionné pour sauvegarde
private JFrame parentFrame; // La fenêtre parent private JFrame parentFrame; // La fenêtre parent
private GMGrid grid; // La grille de jeu à sauvegarder private GMGrid grid; // La grille de jeu à sauvegarder
private GMChecker testGrille;
/** /**
* Constructeur de la classe GMSaver. * Constructeur de la classe GMSaver.
@ -27,15 +26,10 @@ public class GMSaver implements ActionListener {
public GMSaver(JFrame parentFrame, GMGrid grid) { public GMSaver(JFrame parentFrame, GMGrid grid) {
this.parentFrame = parentFrame; this.parentFrame = parentFrame;
this.grid = grid; this.grid = grid;
this.testGrille = new GMChecker(this.grid);
} }
/** public void saveGridIfNeeded() {
* 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) {
if (isValidGrid()) { if (isValidGrid()) {
saveGrid(); saveGrid();
} else { } else {
@ -48,8 +42,7 @@ public class GMSaver implements ActionListener {
* @return true si la grille est valide, sinon false. * @return true si la grille est valide, sinon false.
*/ */
private boolean isValidGrid() { private boolean isValidGrid() {
GMChecker test = new GMChecker(grid); return this.testGrille.isCorrect();
return test.isCorrect();
} }
/** /**

View File

@ -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();
}
}

View File

@ -5,12 +5,23 @@ import java.awt.Container;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.event.ActionListener; 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 { public class GMUserInterfaceView {
private JMenuBar menuBar = new JMenuBar(); private JMenuBar menuBar = new JMenuBar();
private Container content; private Container content;
private GMGrid grid; 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) { public GMUserInterfaceView(Window window) {
window.setPageTitle("Créateur de grille"); window.setPageTitle("Créateur de grille");
@ -27,7 +38,7 @@ public class GMUserInterfaceView {
// Ajout des éléments de menu // Ajout des éléments de menu
JMenuItem nouveauItem = createMenuItem("Nouveau", new GMResetGrid(grid)); JMenuItem nouveauItem = createMenuItem("Nouveau", new GMResetGrid(grid));
JMenuItem chargerItem = createMenuItem("Charger", new GMImport(window, 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 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 GMCheckerListener checkerListener = new GMCheckerListener(checker); // Créez une instance de GMCheckerListener en passant GMChecker en argument
JMenuItem verifierItem = createMenuItem("Vérifier", checkerListener); JMenuItem verifierItem = createMenuItem("Vérifier", checkerListener);
@ -64,10 +75,21 @@ public class GMUserInterfaceView {
window.setVisible(true); 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) { private JMenu createMenu(String title) {
return new JMenu(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) { private JMenuItem createMenuItem(String title, ActionListener listener) {
JMenuItem item = new JMenuItem(title); JMenuItem item = new JMenuItem(title);
item.addActionListener(listener); item.addActionListener(listener);

View File

@ -2,8 +2,8 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
/** /**
* Listener for button clicks in the menu. * Listener pour les clics sur les boutons dans le menu.
* It performs different actions based on the button clicked. * Il effectue différentes actions en fonction du bouton cliqué.
* @version 1.0 * @version 1.0
* @author Moncef STITI * @author Moncef STITI
* @author Marco ORFAO * @author Marco ORFAO
@ -14,8 +14,8 @@ class GSHomeButtonClickListener implements ActionListener {
private GSMenu menuJeu; private GSMenu menuJeu;
/** /**
* Constructs a ButtonClickListener with the specified window. * Construit un ButtonClickListener avec la fenêtre spécifiée.
* @param window The window where the actions will be performed. * @param window La fenêtre les actions seront effectuées.
*/ */
public GSHomeButtonClickListener(Window window) { public GSHomeButtonClickListener(Window window) {
this.window = window; this.window = window;
@ -23,8 +23,8 @@ class GSHomeButtonClickListener implements ActionListener {
} }
/** /**
* Performs an action based on the button clicked. * Effectue une action en fonction du bouton cliqué.
* @param e The ActionEvent representing the button click. * @param e L'ActionEvent représentant le clic sur le bouton.
*/ */
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {

View File

@ -1,7 +1,7 @@
import javax.swing.*; 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 * @version 1.0
* @author Moncef STITI * @author Moncef STITI
* @author Marco ORFAO * @author Marco ORFAO
@ -13,10 +13,10 @@ import javax.swing.*;
private MusicPlayer musicPlayer; private MusicPlayer musicPlayer;
/** /**
* Constructs a MusicButton. * Constructeur : Construit un MusicButton.
* @param onIconPath The file path for the icon when music is on. * @param onIconPath Le chemin du fichier d'icône lorsque la musique est activée.
* @param offIconPath The file path for the icon when music is off. * @param offIconPath Le chemin du fichier d'icône lorsque la musique est désactivée.
* @param musicFilePath The file path for the music file to be played. * @param musicFilePath Le chemin du fichier musical à jouer.
*/ */
public MusicButton(String onIconPath, String offIconPath, String musicFilePath) { public MusicButton(String onIconPath, String offIconPath, String musicFilePath) {

View File

@ -2,7 +2,7 @@ import java.io.File;
import javax.sound.sampled.*; 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 * @version 1.0
* @author Moncef STITI * @author Moncef STITI
* @author Marco ORFAO * @author Marco ORFAO
@ -13,8 +13,8 @@ public class MusicPlayer {
private boolean isPlaying; private boolean isPlaying;
/** /**
* Constructs a MusicPlayer with the specified file path. * Construit un MusicPlayer avec le chemin de fichier spécifié.
* @param filePath The path to the music file to be played. * @param filePath Le chemin du fichier musical à jouer.
*/ */
public MusicPlayer(String filePath) { public MusicPlayer(String filePath) {
try { try {
@ -28,7 +28,7 @@ public class MusicPlayer {
} }
/** /**
* Starts playing the music. * Démarre la lecture de la musique.
*/ */
public void play() { public void play() {
if (this.clip != null && !this.isPlaying) { 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() { public void stop() {
if (this.clip != null && this.isPlaying) { if (this.clip != null && this.isPlaying) {
@ -48,8 +48,8 @@ public class MusicPlayer {
} }
/** /**
* Checks if the music is currently playing. * Vérifie si la musique est en train de jouer actuellement.
* @return true if the music is playing, false otherwise. * @return true si la musique est en train de jouer, false sinon.
*/ */
public boolean isPlaying() { public boolean isPlaying() {
return this.isPlaying; return this.isPlaying;