package org.swellrt.model.js; import com.google.gwt.core.client.JavaScriptObject; import org.swellrt.model.generic.MapType.Listener; import org.swellrt.model.generic.Type; public class ProxyMapListener extends ProxyListener implements Listener { public static final String ON_VALUE_ADDED = "onValueAdded"; public static final String ON_VALUE_UPDATED = "onValueUpdated"; public static final String ON_VALUE_REMOVED = "onValueRemoved"; public static native ProxyMapListener create(JavaScriptObject jsListener) /*-{ return jsListener; }-*/; protected ProxyMapListener() { } @Override public final void onValueChanged(String key, Type oldValue, Type newValue) { if (oldValue == null) { trigger(ON_VALUE_ADDED, getAdapter().ofPrimitive(key), getAdapter().of(newValue)); } else if (newValue == null) { trigger(ON_VALUE_REMOVED, getAdapter().ofPrimitive(key), getAdapter().of(oldValue)); } else { // NOTE: getAdapter().of(oldValue)) returns always undefined, because the trigger(ON_VALUE_UPDATED, getAdapter().ofPrimitive(key), getAdapter().of(newValue), getAdapter().of(oldValue)); } } @Override public final void onValueRemoved(String key, Type value) { trigger(ON_VALUE_REMOVED, getAdapter().ofPrimitive(key), getAdapter().of(value)); } }