Files
CHESS/src/vue/CaseSwingUI.java
T

94 lines
3.0 KiB
Java
Raw Normal View History

2025-08-12 22:18:58 +02:00
package vue;
import modele.piece.Piece;
import java.awt.*;
import java.lang.ref.Reference;
import modele.Case;
import javax.swing.*;
public class CaseSwingUI extends JPanel {
private int ligne;
private int colonne;
private Color couleurdeFond;
private boolean selectionnee = false;
private final JLabel label = new JLabel("", SwingConstants.CENTER);
private final Case caseModele; // reference vers la case de le modele
public CaseSwingUI(Color couleurdeFond, int ligne, int colonne, Case caseModele) {
this.couleurdeFond = couleurdeFond;
this.ligne = ligne;
this.colonne = colonne;
this.caseModele = caseModele;
setOpaque(true);
setBackground(couleurdeFond);
setPreferredSize(new Dimension(64, 64));
setLayout(new BorderLayout());
// Ajout du label à la case
label.setFont(new Font("SansSerif", Font.BOLD, 28));
add(label, BorderLayout.CENTER);
this.setBorder(BorderFactory.createLineBorder(Color.DARK_GRAY, 2));
this.updateFromModel(); // Mise à jour de l'affichage à partir du modèle
}
@Override
protected void paintComponent(Graphics pinceaux) {
super.paintComponent(pinceaux); // Pour effacer l'ancien objet
// Couleur de fond (jaune)
if(selectionnee){
this.setBackground(new Color(255, 215, 0)); // Jaune doux sélectionnée
}else{
this.setBackground(this.couleurdeFond);
}
}
// Rafrachit le contenu visuel depuis le model
public void updateFromModel(){
Piece p = (caseModele != null) ? caseModele.getPiece(): null;
label.setText(toUnicode(p));
label.setForeground(Color.BLACK);
repaint();
}
private String toUnicode(Piece piece) {
// Conversion du symbole en caractère Unicode
if (piece == null) return "";
String symbole = piece.getSymbole();
return switch (symbole) {
case "BP" -> "";
case "BC" -> "";
case "BF" -> "";
case "BT" -> "";
case "BQ" -> "";
case "BK" -> "";
case "NP" -> "";
case "NC" -> "";
case "NF" -> "";
case "NT" -> "";
case "NQ" -> "";
case "NK" -> "";
default -> symbole;
};
}
// Getters/setters utiles pour l'IHM
public Piece getPiece() { return piece; }
public void setPiece(Piece piece) { this.piece = piece; }
public boolean isSelectionnee() { return selectionnee; }
public void setSelectionnee(boolean selectionnee) {
this.selectionnee = selectionnee;
this.setBorder(BorderFactory.createLineBorder(selectionnee ? Color.ORANGE : Color.DARK_GRAY,selectionnee ? 4 : 2));
// Repaint pour mettre à jour la couleur de fond
repaint();
}
public int getLigne() { return ligne; }
public int getColonne() { return colonne; }
}