diff options
Diffstat (limited to 'src/main/model/Observer.java')
-rw-r--r-- | src/main/model/Observer.java | 33 |
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); +} |