package xapi.ui.service; import xapi.collect.api.ClassTo; import xapi.event.api.EventHandler; import xapi.event.api.EventManager; import xapi.event.api.IsEventType; import xapi.fu.In1Out1; import xapi.inject.X_Inject; import xapi.ui.api.UiBuilder; import xapi.ui.api.UiElement; import xapi.ui.api.event.UiEventManager; import xapi.ui.api.UiWithAttributes; import xapi.ui.api.UiWithProperties; /** * @author James X. Nelson (james@wetheinter.net) * Created on 4/19/16. */ public interface UiService <Node, E extends UiElement<Node, ? extends Node, E>> { @SuppressWarnings("unchecked") static <Node, E extends UiElement<Node, ? extends Node, E>> UiService<Node, E> getUiService() { return X_Inject.singleton(UiService.class); } <Generic extends E> UiBuilder<E> newBuilder(Class<Generic> cls); ClassTo<In1Out1<String,Object>> getDeserializers(); ClassTo<In1Out1<Object,String>> getSerializers(); UiWithAttributes <Node, E> newAttributes(E e); UiWithProperties <Node, E> newProperties(E e); Object getHost(Object from); EventManager newEventManager(); UiEventManager<Node, E> uiEvents(); E findContainer(Node nativeNode); IsEventType convertType(String nativeType); E bindNode(Node node, E container); String debugDump(); default void bindEvent(IsEventType type, E ui, EventHandler handler, boolean useCapture) { bindEvent(type, ui, ui.element(), handler, useCapture); } void bindEvent(IsEventType type, E ui, Node node, EventHandler handler, boolean useCapture); }