package xapi.elemental.api;
import elemental.dom.Element;
import xapi.annotation.inject.InstanceDefault;
import xapi.elemental.X_Elemental;
import xapi.inject.X_Inject;
import xapi.ui.api.ElementPosition;
import xapi.ui.impl.AbstractUiElement;
/**
* @author James X. Nelson (james@wetheinter.net)
* Created on 4/19/16.
*/
@InstanceDefault(implFor = UiElementWeb.class)
public class UiElementWeb <E extends Element> extends AbstractUiElement<Element, E, UiElementWeb<E>> {
public UiElementWeb() {
super(UiElementWeb.class);
}
public static UiElementWeb fromWeb(Element element) {
UiElementWeb el = X_Inject.instance(UiElementWeb.class);
el.setElement(element);
return el;
}
@Override
public void appendChild(UiElementWeb<E> newChild) {
super.appendChild(newChild);
final E e = element();
final E c = newChild.element();
e.appendChild(c);
}
@Override
public void removeChild(UiElementWeb<E> child) {
super.removeChild(child);
final E e = element();
final E c = child.element();
e.appendChild(c);
}
@Override
public String toSource() {
return element().getOuterHTML();
}
@Override
public void insertAdjacent(ElementPosition pos, UiElementWeb<E> child) {
final E e = element();
final E c = child.element();
e.insertAdjacentElement(pos.position(), c);
}
@Override
public boolean addStyleName(String style) {
return X_Elemental.addClassName(element(), style);
}
@Override
public boolean removeStyleName(String style) {
return X_Elemental.removeClassName(element(), style);
}
}