package xapi.polymer.pickers; import static xapi.components.impl.JsSupport.setAttr; import com.google.gwt.core.client.js.JsProperty; import com.google.gwt.core.client.js.JsType; import com.google.gwt.core.shared.GWT; import xapi.components.api.IsWebComponent; import xapi.components.api.OnWebComponentAttributeChanged; import xapi.components.api.OnWebComponentCreated; import xapi.components.api.WebComponent; import xapi.components.api.WebComponentFactory; import xapi.components.api.WebComponentMethod; import elemental.dom.Element; @JsType @WebComponent(tagName=IntegerPickerElement.TAG_NAME) public interface IntegerPickerElement extends IsWebComponent<Element>, OnWebComponentAttributeChanged, OnWebComponentCreated<Element>, AbstractPickerElement<Element> { String TAG_NAME = "xapi-int-picker"; WebComponentFactory<IntegerPickerElement> NEW_INT_PICKER = GWT.create(IntegerPickerElement.class); @JsProperty @WebComponentMethod(mapToAttribute = true) int getValue(); @JsProperty @WebComponentMethod(mapToAttribute = true) IntegerPickerElement setValue(int property); @Override default void onCreated(Element element) { initializePolymer("paper-slider"); setAttr(getPolymer().element(), "editable"); getPolymer().onCoreChange(e -> setValue(getPolymer().valueAsInt())); } default void setMax(int max) { getPolymer().element().setAttribute("max", Integer.toString(max)); } default void setMin(int min) { getPolymer().element().setAttribute("min", Integer.toString(min)); } @Override default void onAttributeChanged(String name, String oldVal, String newVal) { switch (name) { case "value": getPolymer().setValue(newVal); break; } } }