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 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" +

View File

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

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.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);

View File

@ -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 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) {

View File

@ -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) {

View File

@ -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;