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

com.googlecode.gwt.test.internal.patchers.dom.PotentialElementPatcher Maven / Gradle / Ivy

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

import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.Node;
import com.google.gwt.user.client.ui.PotentialElement;
import com.google.gwt.user.client.ui.UIObject;
import com.googlecode.gwt.test.internal.utils.JsoUtils;
import com.googlecode.gwt.test.patchers.PatchClass;
import com.googlecode.gwt.test.patchers.PatchMethod;
import com.googlecode.gwt.test.utils.GwtReflectionUtils;
import com.googlecode.gwt.test.utils.JavaScriptObjects;

@PatchClass(PotentialElement.class)
class PotentialElementPatcher {

    private static final String POTENTIALELEMENT_TAG = "POTENTIALELEMENT_TAG";
    private static final String POTENTIALELEMENT_UIOBJECT = "POTENTIALELEMENT_UIOBJECT";
    private static final String POTENTIALELEMENT_WRAPPED_ELEMENT = "POTENTIALELEMENT_WRAPPED_ELEMENT";

    @PatchMethod
    static PotentialElement build(UIObject o, String tagName) {
        PotentialElement e = JsoUtils.newNode(Node.ELEMENT_NODE).cast();
        Element wrappedElement = JsoUtils.newElement(tagName, o.getElement().getOwnerDocument());
        JavaScriptObjects.setProperty(e, POTENTIALELEMENT_TAG, true);
        JavaScriptObjects.setProperty(e, POTENTIALELEMENT_WRAPPED_ELEMENT, wrappedElement);
        JavaScriptObjects.setProperty(e, POTENTIALELEMENT_UIOBJECT, o);

        return e;
    }

    @PatchMethod
    static void declareShim() {

    }

    @PatchMethod
    static boolean isPotential(JavaScriptObject o) {
        return JavaScriptObjects.getBoolean(o, POTENTIALELEMENT_TAG);
    }

    @PatchMethod
    static Element resolve(Element maybePotential) {
        if (isPotential(maybePotential)) {
            UIObject o = JavaScriptObjects.getObject(maybePotential, POTENTIALELEMENT_UIOBJECT);
            GwtReflectionUtils.callPrivateMethod(o, "resolvePotentialElement");

            return JavaScriptObjects.getObject(maybePotential, POTENTIALELEMENT_WRAPPED_ELEMENT);

        } else {
            return maybePotential;
        }
    }

    @PatchMethod
    static Element setResolver(PotentialElement pe, UIObject resolver) {
        JavaScriptObjects.setProperty(pe, POTENTIALELEMENT_UIOBJECT, resolver);

        return pe;

    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy