/******************************************************************************* * Copyright (c) 2015 Development Gateway, Inc and others. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the MIT License (MIT) * which accompanies this distribution, and is available at * https://opensource.org/licenses/MIT * * Contributors: * Development Gateway - initial API and implementation *******************************************************************************/ /** * */ package org.devgateway.toolkit.forms.wicket.components.form; import java.math.BigDecimal; import org.apache.wicket.markup.ComponentTag; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.model.IModel; import org.apache.wicket.validation.validator.StringValidator; import org.devgateway.toolkit.forms.WebConstants; import de.agilecoders.wicket.core.util.Attributes; /** * @author mpostelnicu * */ public class TextFieldBootstrapFormComponent<TYPE> extends GenericBootstrapFormComponent<TYPE, TextField<TYPE>> { private static final long serialVersionUID = 8062663141536130313L; private StringValidator validator = WebConstants.StringValidators.MAXIMUM_LENGTH_VALIDATOR_ONE_LINE_TEXT; private Boolean isFloatedInput = false; public TextFieldBootstrapFormComponent(final String id, final IModel<String> labelModel, final IModel<TYPE> model) { super(id, labelModel, model); } public TextFieldBootstrapFormComponent(final String id, final IModel<TYPE> model) { super(id, model); } /** * @param id */ public TextFieldBootstrapFormComponent(final String id) { super(id); } @Override protected TextField<TYPE> inputField(final String id, final IModel<TYPE> model) { return new TextField<TYPE>(id, initFieldModel()); } @Override protected void onComponentTag(final ComponentTag tag) { super.onComponentTag(tag); if (getIsFloatedInput()) { Attributes.addClass(tag, "floated-input"); } } public TextFieldBootstrapFormComponent<TYPE> integer() { field.setType(Integer.class); return this; } public TextFieldBootstrapFormComponent<TYPE> decimal() { field.setType(BigDecimal.class); return this; } public TextFieldBootstrapFormComponent<TYPE> asDouble() { field.setType(Double.class); return this; } @Override protected void onInitialize() { super.onInitialize(); if (getField().getType() == null || !Number.class.isAssignableFrom(getField().getType())) { getField().add(validator); } } public Boolean getIsFloatedInput() { return isFloatedInput; } public void setIsFloatedInput(final Boolean isFloatedInput) { this.isFloatedInput = isFloatedInput; } }