From 8dcba3b6b98936791d3d35146e819da8b97fd78a Mon Sep 17 00:00:00 2001 From: 2xsaiko Date: Wed, 22 Apr 2020 20:50:50 +0200 Subject: Prepare for allowing error messages in VerifiableTextField --- .../enigma/gui/dialog/ConnectToServerDialog.java | 4 +-- .../enigma/gui/elements/VerifiableTextField.java | 32 ++++++++++++++++++---- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/ConnectToServerDialog.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/ConnectToServerDialog.java index 070d03d4..4bac97b6 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/ConnectToServerDialog.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/ConnectToServerDialog.java @@ -89,10 +89,10 @@ public class ConnectToServerDialog extends JDialog { public boolean validateInputs() { boolean error = false; - ipField.setErrorState(false); + ipField.clearErrorState(); if (ServerAddress.from(ipField.getText(), EnigmaServer.DEFAULT_PORT) == null) { - ipField.setErrorState(true); + ipField.addError("Invalid IP/Port combination"); error = true; } diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/VerifiableTextField.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/VerifiableTextField.java index 41a24840..928372c3 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/VerifiableTextField.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/VerifiableTextField.java @@ -6,6 +6,8 @@ import java.awt.event.FocusAdapter; import java.awt.event.FocusEvent; import javax.swing.JTextField; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; import javax.swing.text.Document; public class VerifiableTextField extends JTextField { @@ -32,16 +34,36 @@ public class VerifiableTextField extends JTextField { } { - addFocusListener(new FocusAdapter() { + getDocument().addDocumentListener(new DocumentListener() { @Override - public void focusGained(FocusEvent e) { - setErrorState(false); + public void insertUpdate(DocumentEvent e) { + clearErrorState(); + } + + @Override + public void removeUpdate(DocumentEvent e) { + clearErrorState(); + } + + @Override + public void changedUpdate(DocumentEvent e) { + clearErrorState(); } }); } - public void setErrorState(boolean b) { - this.hasError = b; + @Override + public void setText(String t) { + super.setText(t); + } + + public void clearErrorState() { + this.hasError = false; + repaint(); + } + + public void addError(String message) { + this.hasError = true; repaint(); } -- cgit v1.2.3