aboutsummaryrefslogtreecommitdiff
path: root/src/main/model/Observer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/model/Observer.java')
-rw-r--r--src/main/model/Observer.java33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/main/model/Observer.java b/src/main/model/Observer.java
new file mode 100644
index 0000000..df9cbc2
--- /dev/null
+++ b/src/main/model/Observer.java
@@ -0,0 +1,33 @@
+package model;
+
+/**
+ * Data observers for GUI data binding.
+ */
+@FunctionalInterface
+public interface Observer<T> {
+ /**
+ * The data is just added to a list. Index will be its index.
+ */
+ int DIRECTION_ADD = 0;
+
+ /**
+ * The data is just removed from a list. Index will be its previous index.
+ */
+ int DIRECTION_REMOVE = 1;
+
+ /**
+ * The data is modified, either or not in a list. Index will be either INDEX_NOT_IN_LIST or its index.
+ */
+ int DIRECTION_CHANGE = 2;
+
+ /**
+ * A special index representing that the data is not in a list.
+ */
+ int INDEX_NOT_IN_LIST = -1;
+
+ /**
+ * EFFECTS: Handle data change.
+ * REQUIRES: data != null, direction be DIRECTION_*, index >= 0 or == INDEX_NOT_IN_LIST.
+ */
+ void accept(T data, int direction, int index);
+}