Amélioration MVC / Responsabilité unique partie 1
This commit is contained in:
parent
79010f68fd
commit
8ac0415c08
@ -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.secondaryValue = 0;
|
|
||||||
this.tertiaryValue = 0;
|
|
||||||
this.quaternaryValue = 0;
|
|
||||||
|
|
||||||
this.setBackground(Color.white);
|
|
||||||
this.addMouseListener(this);
|
|
||||||
this.parentGrid = grid;
|
|
||||||
this.add(label);
|
|
||||||
deactivateCell();
|
|
||||||
layoutSetup();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
this.primaryValue = 0;
|
||||||
|
|
||||||
|
this.setBackground(Color.white);
|
||||||
|
|
||||||
|
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();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
|
39
src/GridSolver/GSCaseMouseListener.java
Normal file
39
src/GridSolver/GSCaseMouseListener.java
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user