diff --git a/src/Event.java b/src/Event.java
index ec85c6f..4b581d9 100644
--- a/src/Event.java
+++ b/src/Event.java
@@ -6,65 +6,68 @@ import java.util.function.Consumer;
* La classe Event regroupe et branche tous les listeners liés à Fenetre.
* - Validation de la saisie (1 lettre A-Z, majuscule)
* - Action sur Entrée ou clic bouton
-* - Notification du handler externe (Fenetre#setOnLetterSubmitted)
+* - Notification du handler externe (fourni au constructeur)
* Aucune logique de jeu ici.
-* @version 1.1
-* @author Adrien
+* @version 1.2
+* author Adrien
* Date : 08-10-2025
* Licence :
*/
-public class Event {
+public class Event implements ActionListener {
- private final Fenetre fenetre;
+ private final Fenetre window;
private final Consumer onLetterSubmitted;
- public Event(Fenetre fenetre, Consumer onLetterSubmitted) {
- this.fenetre = fenetre;
+ public Event(Fenetre window, Consumer onLetterSubmitted) {
+ this.window = window;
this.onLetterSubmitted = onLetterSubmitted;
wireEvents();
}
- /** Branchement des listeners sur les composants de Fenetre. */
+ /** Branche les listeners sur les composants de Fenetre. */
private void wireEvents() {
- JTextField letterInput = fenetre.getLetterInput();
- JButton sendButton = fenetre.getSendButton();
+ JTextField letterInput = window.getLetterInput();
+ JButton sendButton = window.getSendButton();
- // Action (Entrée + clic bouton)
- Action sendAction = new AbstractAction() {
- @Override public void actionPerformed(ActionEvent e) { submitLetter(); }
- };
- sendButton.addActionListener(sendAction);
- letterInput.addActionListener(sendAction);
+ // Même listener (this) pour Entrée et clic bouton
+ sendButton.addActionListener(this);
+ letterInput.addActionListener(this);
// UX : limiter à une seule lettre et forcer la majuscule
letterInput.addKeyListener(new KeyAdapter() {
- @Override public void keyTyped(KeyEvent e) {
- char c = e.getKeyChar();
- if (!Character.isLetter(c) || letterInput.getText().length() >= 1) {
- e.consume();
+ @Override
+ public void keyTyped(KeyEvent keyEvent) {
+ char typedChar = keyEvent.getKeyChar();
+ if (!Character.isLetter(typedChar) || letterInput.getText().length() >= 1) {
+ keyEvent.consume();
} else {
- e.setKeyChar(Character.toUpperCase(c));
+ keyEvent.setKeyChar(Character.toUpperCase(typedChar));
}
}
});
}
+ /** Réagit à Entrée ou au clic bouton : soumet la lettre. */
+ @Override
+ public void actionPerformed(ActionEvent actionEvent) {
+ submitLetter();
+ }
+
/** Récupère, valide et transmet la lettre au handler externe. */
private void submitLetter() {
- JTextField letterInput = fenetre.getLetterInput();
- String text = letterInput.getText().trim().toUpperCase();
+ JTextField letterInput = window.getLetterInput();
+ String inputText = letterInput.getText().trim().toUpperCase();
letterInput.setText("");
- if (text.length() != 1 || !text.matches("[A-Z]")) {
- JOptionPane.showMessageDialog(fenetre.getWindow(), "Veuillez entrer une seule lettre (A-Z).");
+ if (inputText.length() != 1 || !inputText.matches("[A-Z]")) {
+ JOptionPane.showMessageDialog(window.getWindow(), "Veuillez entrer une seule lettre (A-Z).");
return;
}
if (onLetterSubmitted != null) {
- onLetterSubmitted.accept(text.charAt(0));
+ onLetterSubmitted.accept(inputText.charAt(0));
} else {
- JOptionPane.showMessageDialog(fenetre.getWindow(), "Lettre soumise (placeholder) : " + text);
+ JOptionPane.showMessageDialog(window.getWindow(), "Lettre soumise (placeholder) : " + inputText);
}
}
}
-