package com.guit.client.dom.impl;
import static com.google.gwt.query.client.GQuery.*;
import com.google.gwt.dom.client.Node;
import com.google.gwt.dom.client.NodeCollection;
import com.google.gwt.dom.client.NodeList;
import com.google.gwt.dom.client.Style.BorderStyle;
import com.google.gwt.dom.client.Style.Cursor;
import com.google.gwt.dom.client.Style.Display;
import com.google.gwt.dom.client.Style.Float;
import com.google.gwt.dom.client.Style.FontStyle;
import com.google.gwt.dom.client.Style.FontWeight;
import com.google.gwt.dom.client.Style.ListStyleType;
import com.google.gwt.dom.client.Style.Overflow;
import com.google.gwt.dom.client.Style.Position;
import com.google.gwt.dom.client.Style.TextDecoration;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.dom.client.Style.VerticalAlign;
import com.google.gwt.dom.client.Style.Visibility;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.query.client.Function;
import com.google.gwt.query.client.GQuery;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.UIObject;
import com.google.gwt.user.client.ui.Widget;
import com.guit.client.dom.Element;
import com.guit.client.dom.EventHandler;
import java.util.ArrayList;
import java.util.List;
public class ElementImpl implements Element {
protected com.google.gwt.dom.client.Element e;
public ElementImpl() {
this("div");
}
public ElementImpl(String tagName) {
e = DOM.createElement(tagName);
}
public ElementImpl(com.google.gwt.dom.client.Element e) {
if (e == null) {
throw new RuntimeException("Null element");
}
this.e = e;
}
protected ArrayList<Element> nodesToElements(
NodeCollection<com.google.gwt.dom.client.Element> elements) {
ArrayList<Element> el = new ArrayList<Element>();
for (int i = 0; i < elements.getLength(); i++) {
el.add(new ElementImpl(elements.getItem(i)));
}
return el;
}
@Override
public void setTarget(java.lang.Object target) {
if (target instanceof IsWidget) {
e = ((IsWidget) target).asWidget().getElement();
} else if (target instanceof Widget) {
e = ((Widget) target).getElement();
} else {
e = (com.google.gwt.dom.client.Element) target;
}
}
@Override
public Element attr(String name, String value) {
e.setAttribute(name, value);
return this;
}
@Override
public Element css(String property, String value) {
assertCamelCase(property);
e.getStyle().setProperty(property, value);
return this;
}
@Override
public Element css(String property, String value, Unit unit) {
css(property, value + unit);
return this;
}
@Override
public Element html(String html) {
e.setInnerHTML(html);
return this;
}
@Override
public List<Element> children() {
NodeList<Node> children = e.getChildNodes();
ArrayList<Element> c = new ArrayList<Element>();
for (int i = 0; i < children.getLength(); i++) {
Node node = children.getItem(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
c.add(new ElementImpl((com.google.gwt.dom.client.Element) node));
}
}
return c;
}
@Override
public String attr(String name) {
return e.getAttribute(name);
}
@Override
public String css(String property) {
return e.getStyle().getProperty(property);
}
@Override
public String html() {
return e.getInnerHTML();
}
@Override
public String text() {
return e.getInnerText();
}
@Override
public Element text(String html) {
e.setInnerText(html);
return this;
}
@Override
public String tag() {
return e.getTagName().toLowerCase();
}
@Override
public List<Element> query(String selectors) {
ArrayList<Element> elements = new ArrayList<Element>();
for (com.google.gwt.dom.client.Element element : GQuery.$(e).find(selectors).elements()) {
elements.add(new ElementImpl(element));
}
return elements;
}
@Override
public Element addClassName(String className) {
e.addClassName(className);
return this;
}
@Override
public Element removeClassName(String className) {
e.removeClassName(className);
return this;
}
@Override
public Element toogleClassName(String className) {
if (hasClassName(className)) {
removeClassName(className);
} else {
addClassName(className);
}
return this;
}
@Override
public String getClassName() {
return e.getClassName();
}
@Override
public boolean hasClassName(String className) {
return e.getClassName().contains(className);
}
@Override
public int absoluteBottom() {
return e.getAbsoluteBottom();
}
@Override
public int absoluteLeft() {
return e.getAbsoluteLeft();
}
@Override
public int absoluteRight() {
return e.getAbsoluteRight();
}
@Override
public int absoluteTop() {
return e.getAbsoluteTop();
}
@Override
public int clientHeight() {
return e.getClientHeight();
}
@Override
public int clientWidth() {
return e.getClientWidth();
}
@Override
public String dir() {
return e.getDir();
}
@Override
public List<Element> elementsByTagName(String name) {
NodeList<com.google.gwt.dom.client.Element> els = e.getElementsByTagName(name);
ArrayList<Element> el = new ArrayList<Element>();
for (int i = 0; i < els.getLength(); i++) {
el.add(new ElementImpl((com.google.gwt.dom.client.Element) els.getItem(i)));
}
return el;
}
@Override
public Element first() {
return children().get(0);
}
@Override
public Element last() {
List<Element> children = children();
return children.get(children.size() - 1);
}
@Override
public String id() {
return e.getId();
}
@Override
public String lang() {
return e.getLang();
}
@Override
public int offsetHeight() {
return e.getOffsetHeight();
}
@Override
public int offsetLeft() {
return e.getOffsetLeft();
}
@Override
public Element parent() {
return new ElementImpl((com.google.gwt.dom.client.Element) e.getParentElement());
}
@Override
public int offsetTop() {
return e.getOffsetTop();
}
@Override
public int offsetWidth() {
return e.getOffsetWidth();
}
@Override
public boolean propertyBoolean(String name) {
return e.getPropertyBoolean(name);
}
@Override
public double propertyDouble(String name) {
return e.getPropertyDouble(name);
}
@Override
public int propertyInt(String name) {
return e.getPropertyInt(name);
}
@Override
public java.lang.Object propertyObject(String name) {
return e.getPropertyObject(name);
}
@Override
public String propertyString(String name) {
return e.getPropertyString(name);
}
@Override
public int scrollHeight() {
return e.getScrollHeight();
}
@Override
public int scrollLeft() {
return e.getScrollLeft();
}
@Override
public int scrollTop() {
return e.getScrollTop();
}
@Override
public int scrollWidth() {
return e.getScrollWidth();
}
@Override
public int tabIndex() {
return e.getTabIndex();
}
@Override
public String title() {
return e.getTitle();
}
@Override
public boolean hasAttribute(String name) {
return e.hasAttribute(name);
}
@Override
public boolean hasTagName(String tagName) {
return e.hasTagName(tagName);
}
@Override
public Element removeAttr(String name) {
e.removeAttribute(name);
return this;
}
@Override
public Element replaceClassName(String oldClassName, String newClassName) {
e.replaceClassName(oldClassName, newClassName);
return this;
}
@Override
public Element scrollIntoView() {
e.scrollIntoView();
return this;
}
@Override
public Element setClassName(String className) {
e.setClassName(className);
return this;
}
@Override
public Element dir(String dir) {
e.setDir(dir);
return this;
}
@Override
public Element id(String id) {
e.setId(id);
return this;
}
@Override
public Element lang(String lang) {
e.setLang(lang);
return this;
}
@Override
public Element propertyBoolean(String name, boolean value) {
e.setPropertyBoolean(name, value);
return this;
}
@Override
public Element propertyDouble(String name, double value) {
e.setPropertyDouble(name, value);
return this;
}
@Override
public Element propertyInt(String name, int value) {
e.setPropertyInt(name, value);
return this;
}
@Override
public Element propertyObject(String name, java.lang.Object value) {
e.setPropertyObject(name, value);
return this;
}
@Override
public Element propertyString(String name, String value) {
e.setPropertyString(name, value);
return this;
}
@Override
public Element scrollLeft(int scrollLeft) {
e.setScrollLeft(scrollLeft);
return this;
}
@Override
public Element scrollTop(int scrollTop) {
e.setScrollTop(scrollTop);
return this;
}
@Override
public Element tabIndex(int tabIndex) {
e.setTabIndex(tabIndex);
return this;
}
@Override
public Element title(String title) {
e.setTitle(title);
return this;
}
@Override
public void scrollWidth(int scrollWidth) {
// This is only for testing
}
@Override
public Element insert(Element element, int index) {
NodeList<Node> children = e.getChildNodes();
int pos = 0;
for (int i = 0; i < children.getLength(); i++) {
Node n = children.getItem(i);
if (n.getNodeType() == Node.ELEMENT_NODE) {
if (index == pos) {
e.insertBefore(((ElementImpl) element).e, n);
break;
}
pos++;
}
}
return this;
}
@Override
public Element add(Element element) {
e.appendChild(((ElementImpl) element).e);
return this;
}
@Override
public Element remove(Element element) {
e.removeChild(((ElementImpl) element).e);
return this;
}
@Override
public Element remove(int index) {
remove(children().get(index));
return this;
}
@Override
public Element removeFromParent() {
e.removeFromParent();
return this;
}
@SuppressWarnings("unchecked")
@Override
public <T extends Element> T from(Element e) {
this.e = ((ElementImpl) e).e;
return (T) this;
}
@Override
public Element insert(Element element, Element beforeElement) {
insert(element, children().indexOf(beforeElement)); // Fix bug when wrapping
// child element
return this;
}
@Override
public HandlerRegistration click(final EventHandler handler) {
$(e).click(new Function() {
@Override
public void f() {
}
@Override
public boolean f(com.google.gwt.user.client.Event e) {
handler.onEvent(new EventImpl(e));
return super.f(e);
}
});
return new HandlerRegistration() {
@Override
public void removeHandler() {
$(e).unbind(com.google.gwt.user.client.Event.ONCLICK);
}
};
}
@Override
public HandlerRegistration dblclick(final EventHandler handler) {
$(e).dblclick(new Function() {
@Override
public void f() {
}
@Override
public boolean f(com.google.gwt.user.client.Event e) {
handler.onEvent(new EventImpl(e));
return super.f(e);
}
});
return new HandlerRegistration() {
@Override
public void removeHandler() {
$(e).unbind(com.google.gwt.user.client.Event.ONDBLCLICK);
}
};
}
@Override
public HandlerRegistration blur(final EventHandler handler) {
$(e).blur(new Function() {
@Override
public void f() {
}
@Override
public boolean f(com.google.gwt.user.client.Event e) {
handler.onEvent(new EventImpl(e));
return super.f(e);
}
});
return new HandlerRegistration() {
@Override
public void removeHandler() {
$(e).unbind(com.google.gwt.user.client.Event.ONBLUR);
}
};
}
@Override
public HandlerRegistration focus(final EventHandler handler) {
$(e).focus(new Function() {
@Override
public void f() {
}
@Override
public boolean f(com.google.gwt.user.client.Event e) {
handler.onEvent(new EventImpl(e));
return super.f(e);
}
});
return new HandlerRegistration() {
@Override
public void removeHandler() {
$(e).unbind(com.google.gwt.user.client.Event.ONFOCUS);
}
};
}
@Override
public HandlerRegistration change(final EventHandler handler) {
$(e).change(new Function() {
@Override
public void f() {
}
@Override
public boolean f(com.google.gwt.user.client.Event e) {
handler.onEvent(new EventImpl(e));
return super.f(e);
}
});
return new HandlerRegistration() {
@Override
public void removeHandler() {
$(e).unbind(com.google.gwt.user.client.Event.ONCHANGE);
}
};
}
@Override
public HandlerRegistration mousedown(final EventHandler handler) {
$(e).mousedown(new Function() {
@Override
public void f() {
}
@Override
public boolean f(com.google.gwt.user.client.Event e) {
handler.onEvent(new EventImpl(e));
return super.f(e);
}
});
return new HandlerRegistration() {
@Override
public void removeHandler() {
$(e).unbind(com.google.gwt.user.client.Event.ONMOUSEDOWN);
}
};
}
@Override
public HandlerRegistration mouseup(final EventHandler handler) {
$(e).mouseup(new Function() {
@Override
public void f() {
}
@Override
public boolean f(com.google.gwt.user.client.Event e) {
handler.onEvent(new EventImpl(e));
return super.f(e);
}
});
return new HandlerRegistration() {
@Override
public void removeHandler() {
$(e).unbind(com.google.gwt.user.client.Event.ONMOUSEUP);
}
};
}
@Override
public HandlerRegistration mousemove(final EventHandler handler) {
$(e).mousemove(new Function() {
@Override
public void f() {
}
@Override
public boolean f(com.google.gwt.user.client.Event e) {
handler.onEvent(new EventImpl(e));
return super.f(e);
}
});
return new HandlerRegistration() {
@Override
public void removeHandler() {
$(e).unbind(com.google.gwt.user.client.Event.ONMOUSEMOVE);
}
};
}
@Override
public HandlerRegistration mouseout(final EventHandler handler) {
$(e).mouseout(new Function() {
@Override
public void f() {
}
@Override
public boolean f(com.google.gwt.user.client.Event e) {
handler.onEvent(new EventImpl(e));
return super.f(e);
}
});
return new HandlerRegistration() {
@Override
public void removeHandler() {
$(e).unbind(com.google.gwt.user.client.Event.ONMOUSEOUT);
}
};
}
@Override
public HandlerRegistration mouseover(final EventHandler handler) {
$(e).mouseover(new Function() {
@Override
public void f() {
}
@Override
public boolean f(com.google.gwt.user.client.Event e) {
handler.onEvent(new EventImpl(e));
return super.f(e);
}
});
return new HandlerRegistration() {
@Override
public void removeHandler() {
$(e).unbind(com.google.gwt.user.client.Event.ONMOUSEOVER);
}
};
}
@Override
public HandlerRegistration keydown(final EventHandler handler) {
$(e).keydown(new Function() {
@Override
public void f() {
}
@Override
public boolean f(com.google.gwt.user.client.Event e) {
handler.onEvent(new EventImpl(e));
return super.f(e);
}
});
return new HandlerRegistration() {
@Override
public void removeHandler() {
$(e).unbind(com.google.gwt.user.client.Event.ONKEYDOWN);
}
};
}
@Override
public HandlerRegistration keyup(final EventHandler handler) {
$(e).keyup(new Function() {
@Override
public void f() {
}
@Override
public boolean f(com.google.gwt.user.client.Event e) {
handler.onEvent(new EventImpl(e));
return super.f(e);
}
});
return new HandlerRegistration() {
@Override
public void removeHandler() {
$(e).unbind(com.google.gwt.user.client.Event.ONKEYUP);
}
};
}
@Override
public HandlerRegistration keypress(final EventHandler handler) {
$(e).keypress(new Function() {
@Override
public void f() {
}
@Override
public boolean f(com.google.gwt.user.client.Event e) {
handler.onEvent(new EventImpl(e));
return super.f(e);
}
});
return new HandlerRegistration() {
@Override
public void removeHandler() {
$(e).unbind(com.google.gwt.user.client.Event.ONKEYPRESS);
}
};
}
@SuppressWarnings("deprecation")
@Override
public HandlerRegistration load(final EventHandler handler) {
$(e).load(new Function() {
@Override
public void f() {
}
@Override
public boolean f(com.google.gwt.user.client.Event e) {
handler.onEvent(new EventImpl(e));
return super.f(e);
}
});
return new HandlerRegistration() {
@Override
public void removeHandler() {
$(e).unbind(com.google.gwt.user.client.Event.ONLOAD);
}
};
}
@Override
public void click() {
$(e).click();
}
@Override
public void dblclick() {
$(e).dblclick();
}
@Override
public void blur() {
e.blur();
}
@Override
public void focus() {
e.focus();
}
@Override
public void change() {
$(e).change();
}
@Override
public void mousedown() {
$(e).mousedown();
}
@Override
public void mouseup() {
$(e).mouseup();
}
@Override
public void mousemove() {
$(e).mousemove();
}
@Override
public void mouseout() {
$(e).mouseout();
}
@Override
public void mouseover() {
$(e).mouseover();
}
@Override
public void keydown() {
$(e).keydown();
}
@Override
public void keyup() {
$(e).keyup();
}
@Override
public void keypress() {
$(e).keypress();
}
@Override
public Element nextSibling() {
com.google.gwt.dom.client.Element n = e.getNextSiblingElement();
if (n == null) {
return null;
}
return new ElementImpl((com.google.gwt.dom.client.Element) n);
}
@Override
public Element previousSibling() {
Node p = e.getPreviousSibling();
while (p != null && p.getNodeType() != Node.ELEMENT_NODE) {
p = p.getPreviousSibling();
}
if (p == null) {
return null;
}
return new ElementImpl((com.google.gwt.dom.client.Element) p);
}
private static final String STYLE_Z_INDEX = "zIndex";
private static final String STYLE_WIDTH = "width";
private static final String STYLE_VISIBILITY = "visibility";
private static final String STYLE_TOP = "top";
private static final String STYLE_TEXT_DECORATION = "textDecoration";
private static final String STYLE_RIGHT = "right";
private static final String STYLE_POSITION = "position";
private static final String STYLE_PADDING_TOP = "paddingTop";
private static final String STYLE_PADDING_RIGHT = "paddingRight";
private static final String STYLE_PADDING_LEFT = "paddingLeft";
private static final String STYLE_PADDING_BOTTOM = "paddingBottom";
private static final String STYLE_PADDING = "padding";
private static final String STYLE_OVERFLOW = "overflow";
private static final String STYLE_OPACITY = "opacity";
private static final String STYLE_MARGIN_TOP = "marginTop";
private static final String STYLE_MARGIN_RIGHT = "marginRight";
private static final String STYLE_MARGIN_LEFT = "marginLeft";
private static final String STYLE_MARGIN_BOTTOM = "marginBottom";
private static final String STYLE_MARGIN = "margin";
private static final String STYLE_LIST_STYLE_TYPE = "listStyleType";
private static final String STYLE_LEFT = "left";
private static final String STYLE_HEIGHT = "height";
private static final String STYLE_FONT_WEIGHT = "fontWeight";
private static final String STYLE_FONT_STYLE = "fontStyle";
private static final String STYLE_FONT_SIZE = "fontSize";
private static final String STYLE_DISPLAY = "display";
private static final String STYLE_CURSOR = "cursor";
private static final String STYLE_COLOR = "color";
private static final String STYLE_BOTTOM = "bottom";
private static final String STYLE_BORDER_WIDTH = "borderWidth";
private static final String STYLE_BORDER_STYLE = "borderStyle";
private static final String STYLE_BORDER_COLOR = "borderColor";
private static final String STYLE_BACKGROUND_IMAGE = "backgroundImage";
private static final String STYLE_BACKGROUND_COLOR = "backgroundColor";
private static final String STYLE_VERTICAL_ALIGN = "verticalAlign";
/**
* Clear the background-color css property.
*/
@Override
public final Element clearBackgroundColor() {
clearProperty(STYLE_BACKGROUND_COLOR);
return this;
}
/**
* Clear the background-image css property.
*/
@Override
public final Element clearBackgroundImage() {
clearProperty(STYLE_BACKGROUND_IMAGE);
return this;
}
/**
* Clear the border-color css property.
*/
@Override
public final Element clearBorderColor() {
clearProperty(STYLE_BORDER_COLOR);
return this;
}
/**
* Clears the border-style CSS property.
*/
@Override
public final Element clearBorderStyle() {
clearProperty(STYLE_BORDER_STYLE);
return this;
}
/**
* Clear the border-width css property.
*/
@Override
public final Element clearBorderWidth() {
clearProperty(STYLE_BORDER_WIDTH);
return this;
}
/**
* Clear the bottom css property.
*/
@Override
public final Element clearBottom() {
clearProperty(STYLE_BOTTOM);
return this;
}
/**
* Clear the color css property.
*/
@Override
public final Element clearColor() {
clearProperty(STYLE_COLOR);
return this;
}
/**
* Clears the cursor CSS property.
*/
@Override
public final Element clearCursor() {
clearProperty(STYLE_CURSOR);
return this;
}
/**
* Clears the display CSS property.
*/
@Override
public final Element clearDisplay() {
clearProperty(STYLE_DISPLAY);
return this;
}
/**
* Clear the font-size css property.
*/
@Override
public final Element clearFloat() {
e.getStyle().clearFloat();
return this;
}
/**
* Clear the font-size css property.
*/
@Override
public final Element clearFontSize() {
clearProperty(STYLE_FONT_SIZE);
return this;
}
/**
* Clears the font-style CSS property.
*/
@Override
public final Element clearFontStyle() {
clearProperty(STYLE_FONT_STYLE);
return this;
}
/**
* Clears the font-weight CSS property.
*/
@Override
public final Element clearFontWeight() {
clearProperty(STYLE_FONT_WEIGHT);
return this;
}
/**
* Clear the height css property.
*/
@Override
public final Element clearHeight() {
clearProperty(STYLE_HEIGHT);
return this;
}
/**
* Clear the left css property.
*/
@Override
public final Element clearLeft() {
clearProperty(STYLE_LEFT);
return this;
}
/**
* Clears the list-style-type CSS property.
*/
@Override
public final Element clearListStyleType() {
clearProperty(STYLE_LIST_STYLE_TYPE);
return this;
}
/**
* Clear the margin css property.
*/
@Override
public final Element clearMargin() {
clearProperty(STYLE_MARGIN);
return this;
}
/**
* Clear the margin-bottom css property.
*/
@Override
public final Element clearMarginBottom() {
clearProperty(STYLE_MARGIN_BOTTOM);
return this;
}
/**
* Clear the margin-left css property.
*/
@Override
public final Element clearMarginLeft() {
clearProperty(STYLE_MARGIN_LEFT);
return this;
}
/**
* Clear the margin-right css property.
*/
@Override
public final Element clearMarginRight() {
clearProperty(STYLE_MARGIN_RIGHT);
return this;
}
/**
* Clear the margin-top css property.
*/
@Override
public final Element clearMarginTop() {
clearProperty(STYLE_MARGIN_TOP);
return this;
}
/**
* Clear the opacity css property.
*/
@Override
public final Element clearOpacity() {
e.getStyle().clearOpacity();
return this;
}
/**
* Clears the overflow CSS property.
*/
@Override
public final Element clearOverflow() {
clearProperty(STYLE_OVERFLOW);
return this;
}
/**
* Clear the padding css property.
*/
@Override
public final Element clearPadding() {
clearProperty(STYLE_PADDING);
return this;
}
/**
* Clear the padding-bottom css property.
*/
@Override
public final Element clearPaddingBottom() {
clearProperty(STYLE_PADDING_BOTTOM);
return this;
}
/**
* Clear the padding-left css property.
*/
@Override
public final Element clearPaddingLeft() {
clearProperty(STYLE_PADDING_LEFT);
return this;
}
/**
* Clear the padding-right css property.
*/
@Override
public final Element clearPaddingRight() {
clearProperty(STYLE_PADDING_RIGHT);
return this;
}
/**
* Clear the padding-top css property.
*/
@Override
public final Element clearPaddingTop() {
clearProperty(STYLE_PADDING_TOP);
return this;
}
/**
* Clears the position CSS property.
*/
@Override
public final Element clearPosition() {
clearProperty(STYLE_POSITION);
return this;
}
/**
* Clears the value of a named property, causing it to revert to its default.
*/
@Override
public final Element clearProperty(String name) {
css(name, "");
return this;
}
/**
* Clear the right css property.
*/
@Override
public final Element clearRight() {
clearProperty(STYLE_RIGHT);
return this;
}
/**
* Clears the text-decoration CSS property.
*/
@Override
public final Element clearTextDecoration() {
clearProperty(STYLE_TEXT_DECORATION);
return this;
}
/**
* Clear the top css property.
*/
@Override
public final Element clearTop() {
clearProperty(STYLE_TOP);
return this;
}
/**
* Clears the visibility CSS property.
*/
@Override
public final Element clearVisibility() {
clearProperty(STYLE_VISIBILITY);
return this;
}
/**
* Clear the width css property.
*/
@Override
public final Element clearWidth() {
clearProperty(STYLE_WIDTH);
return this;
}
/**
* Clear the z-index css property.
*/
@Override
public final Element clearZIndex() {
clearProperty(STYLE_Z_INDEX);
return this;
}
/**
* Get the background-color css property.
*/
@Override
public final String backgroundColor() {
return css(STYLE_BACKGROUND_COLOR);
}
/**
* Get the background-image css property.
*/
@Override
public final String backgroundImage() {
return css(STYLE_BACKGROUND_IMAGE);
}
/**
* Get the border-color css property.
*/
@Override
public final String borderColor() {
return css(STYLE_BORDER_COLOR);
}
/**
* Gets the border-style CSS property.
*/
@Override
public final String borderStyle() {
return css(STYLE_BORDER_STYLE);
}
/**
* Get the border-width css property.
*/
@Override
public final String borderWidth() {
return css(STYLE_BORDER_WIDTH);
}
/**
* Get the bottom css property.
*/
@Override
public final String bottom() {
return css(STYLE_BOTTOM);
}
/**
* Get the color css property.
*/
@Override
public final String color() {
return css(STYLE_COLOR);
}
/**
* Gets the cursor CSS property.
*/
@Override
public final String cursor() {
return css(STYLE_CURSOR);
}
/**
* Gets the display CSS property.
*/
@Override
public final String display() {
return css(STYLE_DISPLAY);
}
/**
* Get the font-size css property.
*/
@Override
public final String fontSize() {
return css(STYLE_FONT_SIZE);
}
/**
* Gets the font-style CSS property.
*/
@Override
public final String fontStyle() {
return css(STYLE_FONT_STYLE);
}
/**
* Gets the font-weight CSS property.
*/
@Override
public final String fontWeight() {
return css(STYLE_FONT_WEIGHT);
}
/**
* Get the height css property.
*/
@Override
public final String height() {
return css(STYLE_HEIGHT);
}
/**
* Get the left css property.
*/
@Override
public final String left() {
return css(STYLE_LEFT);
}
/**
* Gets the list-style-type CSS property.
*/
@Override
public final String listStyleType() {
return css(STYLE_LIST_STYLE_TYPE);
}
/**
* Get the margin css property.
*/
@Override
public final String margin() {
return css(STYLE_MARGIN);
}
/**
* Get the margin-bottom css property.
*/
@Override
public final String marginBottom() {
return css(STYLE_MARGIN_BOTTOM);
}
/**
* Get the margin-left css property.
*/
@Override
public final String marginLeft() {
return css(STYLE_MARGIN_LEFT);
}
/**
* Get the margin-right css property.
*/
@Override
public final String marginRight() {
return css(STYLE_MARGIN_RIGHT);
}
/**
* Get the margin-top css property.
*/
@Override
public final String marginTop() {
return css(STYLE_MARGIN_TOP);
}
/**
* Get the opacity css property.
*/
@Override
public final String opacity() {
return css(STYLE_OPACITY);
}
/**
* Gets the overflow CSS property.
*/
@Override
public final String overflow() {
return css(STYLE_OVERFLOW);
}
/**
* Get the padding css property.
*/
@Override
public final String padding() {
return css(STYLE_PADDING);
}
/**
* Get the padding-bottom css property.
*/
@Override
public final String paddingBottom() {
return css(STYLE_PADDING_BOTTOM);
}
/**
* Get the padding-left css property.
*/
@Override
public final String paddingLeft() {
return css(STYLE_PADDING_LEFT);
}
/**
* Get the padding-right css property.
*/
@Override
public final String paddingRight() {
return css(STYLE_PADDING_RIGHT);
}
/**
* Get the padding-top css property.
*/
@Override
public final String paddingTop() {
return css(STYLE_PADDING_TOP);
}
/**
* Gets the position CSS property.
*/
@Override
public final String position() {
return css(STYLE_POSITION);
}
/**
* Get the right css property.
*/
@Override
public final String right() {
return css(STYLE_RIGHT);
}
/**
* Gets the text-decoration CSS property.
*/
@Override
public final String textDecoration() {
return css(STYLE_TEXT_DECORATION);
}
/**
* Get the top css property.
*/
@Override
public final String top() {
return css(STYLE_TOP);
}
/**
* Gets the vertical-align CSS property.
*/
@Override
public final String verticalAlign() {
return css(STYLE_VERTICAL_ALIGN);
}
/**
* Gets the visibility CSS property.
*/
@Override
public final String visibility() {
return css(STYLE_VISIBILITY);
}
/**
* Get the width css property.
*/
@Override
public final String width() {
return css(STYLE_WIDTH);
}
/**
* Get the z-index css property.
*/
@Override
public final String zIndex() {
return css(STYLE_Z_INDEX);
}
/**
* Set the background-color css property.
*/
@Override
public final Element backgroundColor(String value) {
return css(STYLE_BACKGROUND_COLOR, value);
}
/**
* Set the background-image css property.
*/
@Override
public final Element backgroundImage(String value) {
return css(STYLE_BACKGROUND_IMAGE, value);
}
/**
* Set the border-color css property.
*/
@Override
public final Element borderColor(String value) {
return css(STYLE_BORDER_COLOR, value);
}
/**
* Sets the border-style CSS property.
*/
@Override
public final Element borderStyle(BorderStyle value) {
return css(STYLE_BORDER_STYLE, value.getCssName());
}
/**
* Set the border-width css property.
*/
@Override
public final Element borderWidth(double value, Unit unit) {
return css(STYLE_BORDER_WIDTH, value, unit);
}
/**
* Set the bottom css property.
*/
@Override
public final Element bottom(double value, Unit unit) {
return css(STYLE_BOTTOM, value, unit);
}
/**
* Sets the color CSS property.
*/
@Override
public final Element color(String value) {
return css(STYLE_COLOR, value);
}
/**
* Sets the cursor CSS property.
*/
@Override
public final Element cursor(Cursor value) {
return css(STYLE_CURSOR, value.getCssName());
}
/**
* Sets the display CSS property.
*/
@Override
public final Element display(Display value) {
return css(STYLE_DISPLAY, value.getCssName());
}
/**
* Set the float css property.
*/
@Override
public final Element floatTo(Float value) {
e.getStyle().setFloat(value);
return this;
}
/**
* Set the font-size css property.
*/
@Override
public final Element fontSize(double value, Unit unit) {
return css(STYLE_FONT_SIZE, value, unit);
}
/**
* Sets the font-style CSS property.
*/
@Override
public final Element fontStyle(FontStyle value) {
return css(STYLE_FONT_STYLE, value.getCssName());
}
/**
* Sets the font-weight CSS property.
*/
@Override
public final Element fontWeight(FontWeight value) {
return css(STYLE_FONT_WEIGHT, value.getCssName());
}
/**
* Set the height css property.
*/
@Override
public final Element height(double value, Unit unit) {
return css(STYLE_HEIGHT, value, unit);
}
/**
* Set the left css property.
*/
@Override
public final Element left(double value, Unit unit) {
return css(STYLE_LEFT, value, unit);
}
/**
* Sets the list-style-type CSS property.
*/
@Override
public final Element listStyleType(ListStyleType value) {
return css(STYLE_LIST_STYLE_TYPE, value.getCssName());
}
/**
* Set the margin css property.
*/
@Override
public final Element margin(double value, Unit unit) {
return css(STYLE_MARGIN, value, unit);
}
/**
* Set the margin-bottom css property.
*/
@Override
public final Element marginBottom(double value, Unit unit) {
return css(STYLE_MARGIN_BOTTOM, value, unit);
}
/**
* Set the margin-left css property.
*/
@Override
public final Element marginLeft(double value, Unit unit) {
return css(STYLE_MARGIN_LEFT, value, unit);
}
/**
* Set the margin-right css property.
*/
@Override
public final Element marginRight(double value, Unit unit) {
return css(STYLE_MARGIN_RIGHT, value, unit);
}
/**
* Set the margin-top css property.
*/
@Override
public final Element marginTop(double value, Unit unit) {
return css(STYLE_MARGIN_TOP, value, unit);
}
/**
* Set the opacity css property.
*/
@Override
public final Element opacity(double value) {
e.getStyle().setOpacity(value);
return this;
}
/**
* Sets the overflow CSS property.
*/
@Override
public final Element overflow(Overflow value) {
return css(STYLE_OVERFLOW, value.getCssName());
}
/**
* Set the padding css property.
*/
@Override
public final Element padding(double value, Unit unit) {
return css(STYLE_PADDING, value, unit);
}
/**
* Set the padding-bottom css property.
*/
@Override
public final Element paddingBottom(double value, Unit unit) {
return css(STYLE_PADDING_BOTTOM, value, unit);
}
/**
* Set the padding-left css property.
*/
@Override
public final Element paddingLeft(double value, Unit unit) {
return css(STYLE_PADDING_LEFT, value, unit);
}
/**
* Set the padding-right css property.
*/
@Override
public final Element paddingRight(double value, Unit unit) {
return css(STYLE_PADDING_RIGHT, value, unit);
}
/**
* Set the padding-top css property.
*/
@Override
public final Element paddingTop(double value, Unit unit) {
return css(STYLE_PADDING_TOP, value, unit);
}
/**
* Sets the position CSS property.
*/
@Override
public final Element position(Position value) {
return css(STYLE_POSITION, value.getCssName());
}
/**
* Sets the value of a named property, in pixels.
*
* This is shorthand for <code>value + "px"</code>.
*/
public final Element css(String name, int value) {
return css(name, value, Unit.PX);
}
/**
* Sets the value of a named property in the specified units.
*/
public Element css(String name, double value, Unit unit) {
return css(name, value + unit.getType());
}
/**
* Set the right css property.
*/
@Override
public final Element right(double value, Unit unit) {
return css(STYLE_RIGHT, value, unit);
}
/**
* Sets the text-decoration CSS property.
*/
@Override
public final Element textDecoration(TextDecoration value) {
return css(STYLE_TEXT_DECORATION, value.getCssName());
}
/**
* Set the top css property.
*/
@Override
public final Element top(double value, Unit unit) {
return css(STYLE_TOP, value, unit);
}
/**
* Sets the vertical-align CSS property.
*/
@Override
public final Element verticalAlign(VerticalAlign value) {
return css(STYLE_VERTICAL_ALIGN, value.getCssName());
}
/**
* Sets the vertical-align CSS property.
*/
@Override
public final Element verticalAlign(double value, Unit unit) {
return css(STYLE_VERTICAL_ALIGN, value, unit);
}
/**
* Sets the visibility CSS property.
*/
@Override
public final Element visibility(Visibility value) {
return css(STYLE_VISIBILITY, value.getCssName());
}
/**
* Set the width css property.
*/
@Override
public final Element width(double value, Unit unit) {
return css(STYLE_WIDTH, value, unit);
}
/**
* Set the z-index css property.
*/
@Override
public final Element zIndex(int value) {
return css(STYLE_Z_INDEX, value + "");
}
/**
* Assert that the specified property does not contain a hyphen.
*
* @param name the property name
*/
private void assertCamelCase(String name) {
assert !name.contains("-") : "The style name '" + name + "' should be in camelCase format";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((e == null) ? 0 : e.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
ElementImpl other = (ElementImpl) obj;
if (e == null) {
if (other.e != null)
return false;
} else if (!e.equals(other.e))
return false;
return true;
}
@Override
public void visible(boolean visible) {
UIObject.setVisible(e, visible);
}
@Override
public boolean visible() {
return UIObject.isVisible(e);
}
@Override
public Element get(int index) {
if (count() <= index) {
throw new IndexOutOfBoundsException();
}
return new ElementImpl((com.google.gwt.dom.client.Element) e.getChild(index));
}
@Override
public int count() {
return e.getChildCount();
}
@Override
public HandlerRegistration touchstart(final EventHandler handler) {
return bindEvent(handler, "touchstart");
}
private HandlerRegistration bindEvent(final EventHandler handler, final String eventType) {
$(e).bind(eventType, null, new Function() {
@Override
public void f() {
}
@Override
public boolean f(com.google.gwt.user.client.Event e) {
handler.onEvent(new EventImpl(e));
return super.f(e);
}
});
return new HandlerRegistration() {
@Override
public void removeHandler() {
$(e).unbind(eventType);
}
};
}
@Override
public HandlerRegistration touchmove(EventHandler handler) {
return bindEvent(handler, "touchmove");
}
@Override
public HandlerRegistration touchcancel(EventHandler handler) {
return bindEvent(handler, "touchcancel");
}
@Override
public HandlerRegistration touchend(EventHandler handler) {
return bindEvent(handler, "touchend");
}
}