summaryrefslogtreecommitdiffstats
path: root/src/de/fhswf/in/inf/java2
diff options
context:
space:
mode:
authorStefan Suhren <suhren.stefan@fh-swf.de>2015-04-14 17:00:22 +0200
committerStefan Suhren <suhren.stefan@fh-swf.de>2015-04-14 17:00:22 +0200
commit31b7641ec7724f7eb2b5833c71705d176cb1bfdf (patch)
treeead1f0d4a872e6053358049caa1901b34b8923ce /src/de/fhswf/in/inf/java2
parentdbfb59b0dd320bfd4f284cd6c3896892529e42f7 (diff)
downloadJava2-31b7641ec7724f7eb2b5833c71705d176cb1bfdf.tar.gz
Java2-31b7641ec7724f7eb2b5833c71705d176cb1bfdf.zip
Includes validator framework and completes Task 3
Diffstat (limited to 'src/de/fhswf/in/inf/java2')
-rw-r--r--src/de/fhswf/in/inf/java2/aufgabe03/EmailTextField.java25
-rw-r--r--src/de/fhswf/in/inf/java2/aufgabe03/JavaFxMain.java47
-rw-r--r--src/de/fhswf/in/inf/java2/aufgabe03/RegExTextField.java89
-rw-r--r--src/de/fhswf/in/inf/java2/aufgabe03/RegExValidator.java45
4 files changed, 206 insertions, 0 deletions
diff --git a/src/de/fhswf/in/inf/java2/aufgabe03/EmailTextField.java b/src/de/fhswf/in/inf/java2/aufgabe03/EmailTextField.java
new file mode 100644
index 0000000..e68860c
--- /dev/null
+++ b/src/de/fhswf/in/inf/java2/aufgabe03/EmailTextField.java
@@ -0,0 +1,25 @@
+/**
+ * File for the EmailTextField class.
+ */
+
+package de.fhswf.in.inf.java2.aufgabe03;
+
+/**
+ * A text field that validates email addresses and gives optical feedback.
+ *
+ * @author $Author: $
+ * @version $Revision: $, $Date: $ UTC
+ */
+public class EmailTextField extends RegExTextField
+{
+
+ /**
+ * Creates a RegExTextField that only accepts email addresses.
+ *
+ */
+ public EmailTextField()
+ {
+ super("\\b[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}\\b", "E-Mail");
+ }
+
+}
diff --git a/src/de/fhswf/in/inf/java2/aufgabe03/JavaFxMain.java b/src/de/fhswf/in/inf/java2/aufgabe03/JavaFxMain.java
new file mode 100644
index 0000000..b822b5f
--- /dev/null
+++ b/src/de/fhswf/in/inf/java2/aufgabe03/JavaFxMain.java
@@ -0,0 +1,47 @@
+/*
+ *
+ */
+
+package de.fhswf.in.inf.java2.aufgabe03;
+
+import javafx.application.Application;
+import javafx.scene.Scene;
+import javafx.scene.layout.VBox;
+import javafx.stage.Stage;
+
+/**
+ * The loader for a RegExTextField that validates e-mail addresses.
+ *
+ * @author $Author: $
+ * @version $Revision: $, $Date: $ UTC
+ */
+public class JavaFxMain extends Application
+{
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see javafx.application.Application#start(javafx.stage.Stage)
+ */
+ @Override
+ public void start(Stage primaryStage)
+ {
+ RegExTextField regText = new RegExTextField("[a-z]");
+ EmailTextField emaText = new EmailTextField();
+ VBox vbox = new VBox(regText, emaText);
+ Scene scene = new Scene(vbox);
+ primaryStage.setScene(scene);
+ primaryStage.show();
+ }
+
+ /**
+ * Loads the main window of this application.
+ *
+ * @param args
+ * Command line arguments
+ */
+ public static void main(String[] args)
+ {
+ launch(args);
+ }
+}
diff --git a/src/de/fhswf/in/inf/java2/aufgabe03/RegExTextField.java b/src/de/fhswf/in/inf/java2/aufgabe03/RegExTextField.java
new file mode 100644
index 0000000..cc68ff2
--- /dev/null
+++ b/src/de/fhswf/in/inf/java2/aufgabe03/RegExTextField.java
@@ -0,0 +1,89 @@
+/**
+ * File containing the RegExTextField class.
+ */
+
+package de.fhswf.in.inf.java2.aufgabe03;
+
+import javafx.scene.control.ContentDisplay;
+import javafx.scene.control.Label;
+import javafx.scene.control.TextField;
+import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
+import javafx.scene.layout.HBox;
+
+/**
+ * A class that checks an input against a regex and gives optical feedback.
+ *
+ * @author $Author: $
+ * @version $Revision: $, $Date: $ UTC
+ */
+public class RegExTextField extends HBox
+{
+
+ private Label label;
+
+ private TextField textField;
+
+ private RegExValidator rv;
+
+ /**
+ * Creates an element that checks regexes.
+ *
+ * @param regEx
+ * The regex to check the text field against.
+ */
+ public RegExTextField(String regEx)
+ {
+ this(regEx, "regEx");
+ }
+
+ /**
+ * Creates an element that checks regexes.
+ *
+ * @param regEx
+ * The regex to check the text field against.
+ * @param labelText
+ * An optional label that is shown before the text field.
+ */
+ public RegExTextField(String regEx, String labelText)
+ {
+ if (regEx == null)
+ {
+ throw new IllegalArgumentException("RegEx can't be null.");
+ }
+ if (regEx.isEmpty())
+ {
+ throw new IllegalArgumentException("RegEx can't be empty.");
+ }
+ if (labelText == null)
+ {
+ throw new IllegalArgumentException("labelText can't be null.");
+ }
+ if (labelText.isEmpty())
+ {
+ throw new IllegalArgumentException("labelText can't be empty.");
+ }
+
+ label = new Label(labelText);
+ textField = new TextField();
+
+ label.setContentDisplay(ContentDisplay.RIGHT);
+
+ this.getChildren().addAll(label, textField);
+
+ rv = new RegExValidator(regEx);
+ rv.addStatusListener(e -> {
+ if (!e.isStatus())
+ {
+ label.setGraphic(new ImageView(new Image("img/error.png")));
+ }
+ else
+ {
+ label.setGraphic(null);
+ }
+ });
+
+ textField.textProperty().addListener(rv);
+ }
+
+}
diff --git a/src/de/fhswf/in/inf/java2/aufgabe03/RegExValidator.java b/src/de/fhswf/in/inf/java2/aufgabe03/RegExValidator.java
new file mode 100644
index 0000000..e17b5ca
--- /dev/null
+++ b/src/de/fhswf/in/inf/java2/aufgabe03/RegExValidator.java
@@ -0,0 +1,45 @@
+/**
+ * Java file containing the RegExValidator class.
+ */
+
+package de.fhswf.in.inf.java2.aufgabe03;
+
+import java.util.regex.Pattern;
+
+import de.fhswf.fbin.java2fx.validation.ValidationAdapter;
+
+/**
+ * A class that checks if a given string matches a predefined regex.
+ *
+ * @author $Author: $
+ * @version $Revision: $, $Date: $ UTC
+ */
+public class RegExValidator extends ValidationAdapter<String>
+{
+
+ private Pattern validRegEx;
+
+ /**
+ * A validator that checks a specific regex.
+ *
+ * @param validRegEx
+ * The regex to validate against
+ */
+ public RegExValidator(String validRegEx)
+ {
+ this.validRegEx = Pattern.compile(validRegEx);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * de.fhswf.fbin.java2fx.validation.Validator#isValid(java.lang.Object)
+ */
+ @Override
+ public boolean isValid(String value)
+ {
+ return validRegEx.matcher(value).matches();
+ }
+
+}