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

com.googlecode.gwt.test.uibinder.UiBinderXmlUtils Maven / Gradle / Ivy

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

import com.google.gwt.dom.client.Element;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.HasHorizontalAlignment.HorizontalAlignmentConstant;
import com.google.gwt.user.client.ui.HasVerticalAlignment;
import com.google.gwt.user.client.ui.HasVerticalAlignment.VerticalAlignmentConstant;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.TextBoxBase;
import com.google.gwt.user.client.ui.TextBoxBase.TextAlignConstant;
import com.googlecode.gwt.test.utils.GwtReflectionUtils;
import com.googlecode.gwt.test.utils.JavaScriptObjects;

import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * Utility class for UiBinder XML stuff.
 *
 * @author Gael Lazzari
 */
@SuppressWarnings("deprecation")
public class UiBinderXmlUtils {

    public static final String CLIENTUI_NSURI = "urn:import:com.google.gwt.user.client.ui";
    public static final String DATA_TAG = "data";
    public static final String FIELD_ATTR_NAME = "field";
    public static final String IMAGE_TAG = "image";
    public static final String IMPORT_TAG = "import";
    public static final String MSG_TAG = "msg";
    public static final String TEXT_TAG = "text";
    public static final String UIBINDER_NSURI = "urn:ui:com.google.gwt.uibinder";

    private static final Set RESOURCE_TAGS = new HashSet() {

        private static final long serialVersionUID = -619331154951585990L;

        {
            add(DATA_TAG);
            add(IMAGE_TAG);
            add(STYLE_TAG);
            add(WITH_TAG);
        }
    };

    private static final String STYLE_TAG = "style";
    private static final String TYPE_ATTR_NAME = "type";
    private static final String UIBINDER_TAG = "UiBinder";
    private static final String WITH_TAG = "with";

    /**
     * Retrieve all child widgets contained in a UiBinder custom Element (for example : ,
     * ...).
     *
     * @param element The UiBinder custom Element.
     * @return The list of child widget, which would be empty if the element has no child.
     */
    public static List getChildWidgets(Element element) {
        List childWidgets = JavaScriptObjects.getObject(element,
                UiElementTag.UIBINDER_CHILD_WIDGETS_LIST);

        return childWidgets != null ? childWidgets : Collections.emptyList();
    }

    public static String getEffectiveStyleName(String style) {
        style = style.replaceAll("[\\{\\}\\s]", "");
        String[] array = style.split("\\.");
        return array[array.length - 1];
    }

    public static boolean isDataTag(String nameSpaceURI, String tagName) {
        return DATA_TAG.equals(tagName) && UIBINDER_NSURI.equals(nameSpaceURI);
    }

    public static boolean isImageTag(String nameSpaceURI, String tagName) {
        return IMAGE_TAG.equals(tagName) && UIBINDER_NSURI.equals(nameSpaceURI);
    }

    public static boolean isImportTag(String nameSpaceURI, String tagName) {
        return IMPORT_TAG.equals(tagName) && UIBINDER_NSURI.equals(nameSpaceURI);
    }

    public static boolean isMsgTag(String nameSpaceURI, String tagName) {
        return MSG_TAG.equals(tagName) && UIBINDER_NSURI.equals(nameSpaceURI);
    }

    public static boolean isResourceTag(String nameSpaceURI, String tagName) {
        return UIBINDER_NSURI.equals(nameSpaceURI) && RESOURCE_TAGS.contains(tagName);
    }

    public static boolean isStyleTag(String nameSpaceURI, String tagName) {
        return STYLE_TAG.equals(tagName) && UIBINDER_NSURI.equals(nameSpaceURI);
    }

    public static boolean isTextTag(String nameSpaceURI, String tagName) {
        return TEXT_TAG.equals(tagName) && UIBINDER_NSURI.equals(nameSpaceURI);
    }

    public static boolean isTypeAttribute(String nameSpaceURI, String attrName) {
        return TYPE_ATTR_NAME.equals(attrName) && UIBINDER_NSURI.equals(nameSpaceURI);
    }

    public static boolean isUiBinderTag(String nameSpaceURI, String tagName) {
        return UIBINDER_TAG.equals(tagName) && UIBINDER_NSURI.equals(nameSpaceURI);
    }

    public static boolean isUiFieldAttribute(String nameSpaceURI, String attrName) {
        return FIELD_ATTR_NAME.equals(attrName) && UIBINDER_NSURI.equals(nameSpaceURI);
    }

    public static boolean isWithTag(String nameSpaceURI, String tagName) {
        return WITH_TAG.equals(tagName) && UIBINDER_NSURI.equals(nameSpaceURI);
    }

    public static HorizontalAlignmentConstant parseHorizontalAlignment(String horizontalAlignment) {
        return GwtReflectionUtils.getStaticFieldValue(HasHorizontalAlignment.class,
                horizontalAlignment);
    }

    public static TextAlignConstant parseTextAlignConstant(String string) {
        string = string.toLowerCase();

        if (string.equals("center")) {
            return TextBoxBase.ALIGN_CENTER;
        } else if (string.equals("justify")) {
            return TextBoxBase.ALIGN_JUSTIFY;
        } else if (string.equals("left")) {
            return TextBoxBase.ALIGN_LEFT;
        } else if (string.equals("right")) {
            return TextBoxBase.ALIGN_RIGHT;
        }

        return null;
    }

    public static VerticalAlignmentConstant parseVerticalAlignment(String verticalAlignment) {
        return GwtReflectionUtils.getStaticFieldValue(HasVerticalAlignment.class, verticalAlignment);
    }

    private UiBinderXmlUtils() {

    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy