All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.googlecode.gwt.test.utils.JavaScriptObjects Maven / Gradle / Ivy

There is a newer version: 0.63
Show newest version
package com.googlecode.gwt.test.utils;

import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.dom.client.Element;
import com.googlecode.gwt.test.internal.utils.JsoProperties;
import com.googlecode.gwt.test.internal.utils.JsoUtils;
import com.googlecode.gwt.test.internal.utils.PropertyContainer;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**
 * Utilities for Overlay types support in gwt-test-utils.
 *
 * @author Gael Lazzari
 */
public class JavaScriptObjects {

    public static void clearProperties(JavaScriptObject jso) {
        getJsoProperties(jso).clear();
    }

    public static Set> entrySet(JavaScriptObject jso) {
        return getJsoProperties(jso).entrySet();
    }

    public static boolean getBoolean(JavaScriptObject jso, String propName) {
        return getJsoProperties(jso, propName).getBoolean(propName);
    }

    public static byte getByte(JavaScriptObject jso, String propName) {
        return getJsoProperties(jso, propName).getByte(propName);
    }

    public static char getChar(JavaScriptObject jso, String propName) {
        return getJsoProperties(jso, propName).getChar(propName);
    }

    public static double getDouble(JavaScriptObject jso, String propName) {
        return getJsoProperties(jso, propName).getDouble(propName);
    }

    public static float getFloat(JavaScriptObject jso, String propName) {
        return getJsoProperties(jso, propName).getFloat(propName);
    }

    public static int getInteger(JavaScriptObject jso, String propName) {
        return getJsoProperties(jso, propName).getInteger(propName);
    }

    @SuppressWarnings("unchecked")
    public static  T getObject(JavaScriptObject jso, String propName) {
        return (T) getJsoProperties(jso, propName).getObject(propName);
    }

    public static short getShort(JavaScriptObject jso, String propName) {
        return getJsoProperties(jso, propName).getShort(propName);
    }

    public static String getString(JavaScriptObject jso, String propName) {
        return getJsoProperties(jso, propName).getString(propName);
    }

    public static boolean hasProperty(JavaScriptObject jso, String propName) {
        return getJsoProperties(jso).contains(propName);
    }

    public static void remove(JavaScriptObject jso, String propName) {
        getJsoProperties(jso, propName).remove(propName);
    }

    public static void setProperty(JavaScriptObject jso, String propName, boolean value) {
        getJsoProperties(jso, propName).put(propName, Boolean.valueOf(value));
    }

    public static void setProperty(JavaScriptObject jso, String propName, double value) {
        getJsoProperties(jso, propName).put(propName, Double.valueOf(value));
    }

    public static void setProperty(JavaScriptObject jso, String propName, float value) {
        getJsoProperties(jso, propName).put(propName, Float.valueOf(value));
    }

    public static void setProperty(JavaScriptObject jso, String propName, int value) {
        getJsoProperties(jso, propName).put(propName, Integer.valueOf(value));
    }

    public static void setProperty(JavaScriptObject jso, String propName, long value) {
        getJsoProperties(jso, propName).put(propName, Long.valueOf(value));
    }

    public static void setProperty(JavaScriptObject jso, String propName, Object value) {

        if (JsoProperties.ID.equals(propName)) {
            JsoUtils.onSetId(jso, value.toString(), getString(jso, JsoProperties.ID));
        }
        getJsoProperties(jso, propName).put(propName, value);
    }

    public static void setProperty(JavaScriptObject jso, String propName, short value) {
        getJsoProperties(jso, propName).put(propName, Short.valueOf(value));
    }

    private static PropertyContainer getJsoProperties(JavaScriptObject o) {
        PropertyContainer pc = GwtReflectionUtils.getPrivateFieldValue(o,
                JsoProperties.JSO_PROPERTIES);

        if (pc == null) {
            pc = PropertyContainer.newInstance(new HashMap());
            GwtReflectionUtils.setPrivateFieldValue(o, JsoProperties.JSO_PROPERTIES, pc);
        }

        return pc;
    }

    private static PropertyContainer getJsoProperties(JavaScriptObject o, String propertyName) {
        if (JsoUtils.isStandardDOMProperty(propertyName)) {
            // case for standard dom properties, like "id", "name", "title"...
            return JsoUtils.getDomProperties(o.cast());
        }

        return getJsoProperties(o);

    }

    private JavaScriptObjects() {
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy