/* * Copyright (C) 2015 Actor LLC. <https://actor.im> */ package im.actor.core.js.modules; import java.util.ArrayList; /** * Created by ex3ndr on 27.03.15. */ public class JsBindedValue<T> { private T value; private ArrayList<JsBindedValueCallback> callbacks = new ArrayList<JsBindedValueCallback>(); public JsBindedValue(T value) { this.value = value; } public JsBindedValue() { } public T get() { return value; } public void subscribe(JsBindedValueCallback callback) { if (!callbacks.contains(callback)) { callbacks.add(callback); callback.onChanged(value); } } public void unsubscribe(JsBindedValueCallback callback) { callbacks.remove(callback); } public void changeValue(T value) { this.value = value; for (JsBindedValueCallback callback : callbacks) { callback.onChanged(value); } } }