diff options
author | Kjetil Ørbekk <kjetil.orbekk@gmail.com> | 2012-02-28 15:08:58 +0100 |
---|---|---|
committer | Kjetil Ørbekk <kjetil.orbekk@gmail.com> | 2012-02-28 15:08:58 +0100 |
commit | dbb86148a7b53d729085b4ace612e211d7a876ed (patch) | |
tree | 95e8542f0996dd2a7d9e4c92c6330b4ed124594e /same/src/main/java/com/orbekk/same/VariableFactory.java | |
parent | e5418063a31eec06835f294ec6e1054ea42f846d (diff) |
Add support for more than one listener to variables.
Diffstat (limited to 'same/src/main/java/com/orbekk/same/VariableFactory.java')
-rw-r--r-- | same/src/main/java/com/orbekk/same/VariableFactory.java | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/same/src/main/java/com/orbekk/same/VariableFactory.java b/same/src/main/java/com/orbekk/same/VariableFactory.java index fa9eeeb..e04e36b 100644 --- a/same/src/main/java/com/orbekk/same/VariableFactory.java +++ b/same/src/main/java/com/orbekk/same/VariableFactory.java @@ -1,6 +1,7 @@ package com.orbekk.same; import java.io.IOException; +import java.util.ArrayList; import org.codehaus.jackson.JsonGenerationException; import org.codehaus.jackson.map.JsonMappingException; @@ -25,7 +26,8 @@ public class VariableFactory { TypeReference<T> type; T value; long revision = 0; - OnChangeListener<T> listener = null; + ArrayList<OnChangeListener<T>> listeners = + new ArrayList<OnChangeListener<T>>(); public VariableImpl(String identifier, TypeReference<T> type) { this.identifier = identifier; @@ -66,14 +68,19 @@ public class VariableFactory { } @Override - public void setOnChangeListener(OnChangeListener<T> listener) { - this.listener = listener; + public synchronized void addOnChangeListener(OnChangeListener<T> listener) { + listeners.add(listener); + } + + @Override + public synchronized void removeOnChangeListener(OnChangeListener<T> listener) { + listeners.remove(listener); } @Override - public void stateChanged(Component component) { + public synchronized void stateChanged(Component component) { if (component.getName().equals(identifier)) { - if (listener != null) { + for (OnChangeListener<T> listener : listeners) { listener.valueChanged(this); } } |