aboutsummaryrefslogtreecommitdiff
path: root/src/main/model/Observer.java
blob: df9cbc233de0dfd55d74d60d7a4d0edcae3473ad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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);
}