package edu.ucdavis.cstars.client;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.core.client.JsArrayString;
/**
* Used for generic getting and setting of a JavaScriptObject's fields
*
* @author Justin Merz
*/
public class JSObject extends JavaScriptObject {
protected JSObject() {}
public final native boolean hasKey(String key) /*-{
if( this[key] ) return true;
return false;
}-*/;
public final native JsArrayString getKeys() /*-{
var keys = [];
for( var i in this ) keys.push(i);
return keys;
}-*/;
public final native void setInt(String key, int value) /*-{
this[key] = value;
}-*/;
public final native int getInt(String key) /*-{
return this[key];
}-*/;
public final native void setString(String key, String value) /*-{
this[key] = value;
}-*/;
public final native String getString(String key) /*-{
return this[key];
}-*/;
public final native void setObject(String key, JavaScriptObject jso) /*-{
this[key] = jso;
}-*/;
public final native JSObject getObject(String key) /*-{
return this[key];
}-*/;
/**
* Cast to string
*
* @param key
* @return
*/
public final native String getStringForced(String key) /*-{
return new String(this[key]);
}-*/;
public final native void setBoolean(String key, boolean value) /*-{
this[key] = value;
}-*/;
public final native int getBoolean(String key) /*-{
return this[key];
}-*/;
public final native void setFloat(String key, float value) /*-{
this[key] = value;
}-*/;
public final native float getFloat(String key) /*-{
return this[key];
}-*/;
public final native void setDouble(String key, double value) /*-{
this[key] = value;
}-*/;
public final native double getDouble(String key) /*-{
return this[key];
}-*/;
}