Amélioration MVC / Responsabilité unique partie 1

This commit is contained in:
Moncef STITI 2024-04-29 12:34:00 +02:00
parent 79010f68fd
commit 8ac0415c08
2 changed files with 72 additions and 74 deletions

View File

@ -1,51 +1,41 @@
import java.awt.*; import java.awt.Color;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.JLabel; import javax.swing.JLabel;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
/** public class GSCase extends JPanel {
* La classe GSCase représente une case individuelle dans une grille de Sudoku. private int primaryValue;
*/ private int secondaryValue = 0;
public class GSCase extends JPanel implements MouseListener{ private int tertiaryValue = 0;
private int quaternaryValue = 0;
private int primaryValue; // Valeur principale de la case private String text = "";
private int secondaryValue; // Deuxième valeur de la case (utilisée pour les cas spéciaux) protected boolean isInitial = false;
private int tertiaryValue; // Troisième valeur de la case (utilisée pour les cas spéciaux) protected boolean isActive;
private int quaternaryValue; // Quatrième valeur de la case (utilisée pour les cas spéciaux) private JLabel label = new JLabel();
private String text = ""; // Texte affiché dans la case private byte digitCount = 0;
private Boolean isInitial = false; // Indique si la valeur de la case est initiale (fournie avec le puzzle) protected int positionX;
private Boolean isActive; // Indique si la case est active (sélectionnée par l'utilisateur) protected int positionY;
JLabel label = new JLabel(); // Composant pour afficher le texte dans la case protected GSGrid parentGrid;
private byte digitCount = 0; // Compte le nombre de valeurs insérées dans la case private GSCaseMouseListener mouseListener; // Instance de la classe qui gère les événements de souris
private int positionX; // Position X de la case dans la grille
private int positionY; // Position Y de la case dans la grille
private GSGrid parentGrid; // Référence à la grille parente
/** public GSCase(GSGrid grid, int x, int y) {
* Constructeur de la classe GSCase. this.positionX = x;
* @param grid La grille parente à laquelle cette case appartient. this.positionY = y;
* @param x Position X de la case dans la grille.
* @param y Position Y de la case dans la grille.
*/
public GSCase(GSGrid grid, int x, int y) {
this.positionX = x;
this.positionY = y;
this.primaryValue = 0; this.primaryValue = 0;
this.secondaryValue = 0;
this.tertiaryValue = 0;
this.quaternaryValue = 0;
this.setBackground(Color.white); this.setBackground(Color.white);
this.addMouseListener(this);
this.parentGrid = grid;
this.add(label);
deactivateCell();
layoutSetup();
}
/** this.parentGrid = grid;
this.add(label);
layoutSetup();
// Initialisation de l'écouteur de souris
this.mouseListener = new GSCaseMouseListener(this);
this.addMouseListener(this.mouseListener);
}
/**
* Configure l'apparence initiale de la case. * Configure l'apparence initiale de la case.
*/ */
public void layoutSetup() { public void layoutSetup() {
@ -82,36 +72,6 @@ public class GSCase extends JPanel implements MouseListener{
return this.primaryValue; return this.primaryValue;
} }
/**
* Gère les actions de clic de souris sur la case.
*/
public void mouseClicked(MouseEvent e) {
if (!this.isInitial) {
this.isActive = true;
this.setBackground(Color.GREEN);
this.parentGrid.testActivity(this.positionX, this.positionY);
}
}
// D'autres méthodes de l'interface MouseListener
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {
if (!isInitial) {
if (!isActive) {
this.setBackground(Color.yellow);
}
}
}
public void mouseExited(MouseEvent e) {
if (!isInitial) {
if (!isActive) {
this.setBackground(Color.white);
}
}
}
/** /**
* Désactive la case. * Désactive la case.
*/ */
@ -197,5 +157,4 @@ public class GSCase extends JPanel implements MouseListener{
this.text = String.valueOf(this.primaryValue); this.text = String.valueOf(this.primaryValue);
layoutSetup(); layoutSetup();
} }
} }

View File

@ -0,0 +1,39 @@
import java.awt.Color;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class GSCaseMouseListener implements MouseListener {
private GSCase casePanel;
public GSCaseMouseListener(GSCase casePanel) {
this.casePanel = casePanel;
}
public void mouseClicked(MouseEvent e) {
if (!casePanel.isInitial) {
casePanel.isActive = true;
casePanel.setBackground(Color.GREEN);
casePanel.parentGrid.testActivity(casePanel.positionX, casePanel.positionY);
}
}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {
if (!casePanel.isInitial) {
if (!casePanel.isActive) {
casePanel.setBackground(Color.yellow);
}
}
}
public void mouseExited(MouseEvent e) {
if (!casePanel.isInitial) {
if (!casePanel.isActive) {
casePanel.setBackground(Color.white);
}
}
}
}