summaryrefslogtreecommitdiffstats
path: root/src/de/fhswf/fbin/java2fx/validation
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/fhswf/fbin/java2fx/validation')
-rw-r--r--src/de/fhswf/fbin/java2fx/validation/StatusEvent.java24
-rw-r--r--src/de/fhswf/fbin/java2fx/validation/StatusListener.java6
-rw-r--r--src/de/fhswf/fbin/java2fx/validation/ValidationAdapter.java64
-rw-r--r--src/de/fhswf/fbin/java2fx/validation/Validator.java16
4 files changed, 110 insertions, 0 deletions
diff --git a/src/de/fhswf/fbin/java2fx/validation/StatusEvent.java b/src/de/fhswf/fbin/java2fx/validation/StatusEvent.java
new file mode 100644
index 0000000..3a6ce24
--- /dev/null
+++ b/src/de/fhswf/fbin/java2fx/validation/StatusEvent.java
@@ -0,0 +1,24 @@
+package de.fhswf.fbin.java2fx.validation;
+
+public class StatusEvent<T>
+{
+ private boolean status;
+ private T value;
+
+ public StatusEvent(T value, boolean status)
+ {
+ super();
+ this.status = status;
+ this.value = value;
+ }
+
+ public boolean isStatus()
+ {
+ return status;
+ }
+
+ public T getValue()
+ {
+ return value;
+ }
+}
diff --git a/src/de/fhswf/fbin/java2fx/validation/StatusListener.java b/src/de/fhswf/fbin/java2fx/validation/StatusListener.java
new file mode 100644
index 0000000..26b341d
--- /dev/null
+++ b/src/de/fhswf/fbin/java2fx/validation/StatusListener.java
@@ -0,0 +1,6 @@
+package de.fhswf.fbin.java2fx.validation;
+
+public interface StatusListener<T>
+{
+ public void stateChanged(StatusEvent<T> e);
+}
diff --git a/src/de/fhswf/fbin/java2fx/validation/ValidationAdapter.java b/src/de/fhswf/fbin/java2fx/validation/ValidationAdapter.java
new file mode 100644
index 0000000..6b6afea
--- /dev/null
+++ b/src/de/fhswf/fbin/java2fx/validation/ValidationAdapter.java
@@ -0,0 +1,64 @@
+package de.fhswf.fbin.java2fx.validation;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javafx.beans.value.ObservableValue;
+
+public abstract class ValidationAdapter<T> implements Validator<T>
+{
+ private List<StatusListener<T>> listeners;
+
+ private boolean wasValid = true;
+
+ // Partial implementation of interface Validator
+ public boolean validate(T value)
+ {
+ boolean isValidNow = isValid(value);
+ if (isValidNow != wasValid)
+ { // state changed
+ fireChangedEvent(value, isValidNow);
+ wasValid = isValidNow;
+ }
+ return (isValidNow);
+ }
+
+ // Implementation of interface ChangeListener<T>
+ @Override
+ public void changed(ObservableValue<? extends T> observable, T oldValue,
+ T newValue)
+ {
+ validate(newValue);
+ }
+
+ // Support for StatusListeners
+ public void addStatusListener(StatusListener<T> l)
+ {
+ if (listeners == null)
+ {
+ listeners = new ArrayList<>();
+ }
+
+ listeners.add(l);
+ }
+
+ public void removeStatusListener(StatusListener<T> l)
+ {
+ if (listeners != null)
+ {
+ listeners.remove(l);
+ }
+ }
+
+ public void fireChangedEvent(T value, boolean status)
+ {
+ if (listeners != null)
+ {
+ StatusEvent<T> event = new StatusEvent<T>(value, status);
+ for (StatusListener<T> sl : listeners)
+ {
+ sl.stateChanged(event);
+ }
+ }
+ }
+}
diff --git a/src/de/fhswf/fbin/java2fx/validation/Validator.java b/src/de/fhswf/fbin/java2fx/validation/Validator.java
new file mode 100644
index 0000000..ee23298
--- /dev/null
+++ b/src/de/fhswf/fbin/java2fx/validation/Validator.java
@@ -0,0 +1,16 @@
+package de.fhswf.fbin.java2fx.validation;
+
+import javafx.beans.value.ChangeListener;
+
+public interface Validator<T> extends ChangeListener<T>
+{
+
+ public boolean isValid(T value);
+
+ public boolean validate(T value);
+
+ // support StatusListeners
+ public void addStatusListener(StatusListener<T> l);
+
+ public void removeStatusListener(StatusListener<T> l);
+}