com.googlecode.gwt.test.uibinder.UiBinderXmlUtils Maven / Gradle / Ivy
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() {
}
}