ZenScript main repository
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

SimpleLiveObject.java 766B

1234567891011121314151617181920212223242526272829303132333435
  1. package live;
  2. import java.util.function.BiConsumer;
  3. import listeners.ListenerHandle;
  4. import listeners.ListenerList;
  5. // TODO: write in ZenCode
  6. public class SimpleLiveObject<T> implements MutableLiveObject<T> {
  7. private final ListenerList<BiConsumer<T, T>> listeners = new ListenerList<>();
  8. private T value;
  9. public SimpleLiveObject(T value) {
  10. this.value = value;
  11. }
  12. @Override
  13. public T getValue() {
  14. return value;
  15. }
  16. @Override
  17. public void setValue(T value) {
  18. if (value == this.value)
  19. return;
  20. T oldValue = this.value;
  21. this.value = value;
  22. listeners.accept(listener -> listener.accept(oldValue, value));
  23. }
  24. @Override
  25. public ListenerHandle<BiConsumer<T, T>> addListener(BiConsumer<T, T> listener) {
  26. return listeners.add(listener);
  27. }
  28. }