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