/* GNU GENERAL LICENSE Copyright (C) 2006 The Lobo Project. Copyright (C) 2014 - 2017 Lobo Evolution This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either verion 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General License for more details. You should have received a copy of the GNU General Public along with this program. If not, see <http://www.gnu.org/licenses/>. Contact info: lobochief@users.sourceforge.net; ivan.difrancesco@yahoo.it */ package org.lobobrowser.html.layout; import org.lobobrowser.html.HtmlAttributeProperties; import org.lobobrowser.html.control.BaseInputControl; import org.lobobrowser.html.control.InputButtonControl; import org.lobobrowser.html.control.InputCheckboxControl; import org.lobobrowser.html.control.InputColorPickerControl; import org.lobobrowser.html.control.InputDatePickerControl; import org.lobobrowser.html.control.InputEmailControl; import org.lobobrowser.html.control.InputFileControl; import org.lobobrowser.html.control.InputHiddenControl; import org.lobobrowser.html.control.InputImageControl; import org.lobobrowser.html.control.InputNumberControl; import org.lobobrowser.html.control.InputPasswordControl; import org.lobobrowser.html.control.InputPhoneControl; import org.lobobrowser.html.control.InputRadioControl; import org.lobobrowser.html.control.InputTextControl; import org.lobobrowser.html.control.InputUrlControl; import org.lobobrowser.html.control.RUIControl; import org.lobobrowser.html.domimpl.HTMLBaseInputElement; import org.lobobrowser.html.domimpl.HTMLElementImpl; import org.lobobrowser.html.renderer.RBlockViewport; import org.lobobrowser.html.renderer.RElement; /** * The Class InputLayout. */ public class InputLayout extends CommonWidgetLayout { /** * Instantiates a new input layout. */ public InputLayout() { super(ADD_INLINE, true); } @Override protected RElement createRenderable(RBlockViewport bodyLayout, HTMLElementImpl markupElement) { HTMLBaseInputElement bie = (HTMLBaseInputElement) markupElement; BaseInputControl uiControl = createInputControl(bie); if (uiControl == null) { return null; } bie.setInputContext(uiControl); return new RUIControl(markupElement, uiControl, bodyLayout.getContainer(), bodyLayout.getFrameContext(), bodyLayout.getUserAgentContext()); } /** * Creates the input control. * * @param markupElement * the markup element * @return the base input control */ private final BaseInputControl createInputControl(HTMLBaseInputElement markupElement) { String type = markupElement.getAttribute(HtmlAttributeProperties.TYPE)==null ? "" : markupElement.getAttribute(HtmlAttributeProperties.TYPE); switch (type) { case "text": return new InputTextControl(markupElement); case "hidden": return new InputHiddenControl(markupElement); case "submit": return new InputButtonControl(markupElement); case "password": return new InputPasswordControl(markupElement); case "file": return new InputFileControl(markupElement); case "number": return new InputNumberControl(markupElement); case "email": return new InputEmailControl(markupElement); case "color": return new InputColorPickerControl(markupElement); case "url": return new InputUrlControl(markupElement); case "tel": return new InputPhoneControl(markupElement); case "date": case "datetime": case "datetime-local": case "month": return new InputDatePickerControl(markupElement); case "radio": return new InputRadioControl(markupElement); case "checkbox": return new InputCheckboxControl(markupElement); case "button": return new InputButtonControl(markupElement); case "image": return new InputImageControl(markupElement); case "reset": return new InputButtonControl(markupElement); default: return new InputTextControl(markupElement); } } }