/******************************************************************************* * 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 org.apache.wicket.markup.ComponentTag; import org.apache.wicket.model.IModel; import org.wicketstuff.select2.ChoiceProvider; import org.wicketstuff.select2.Select2Choice; import de.agilecoders.wicket.core.util.Attributes; /** * @author mpostelnicu * */ public class Select2ChoiceBootstrapFormComponent<TYPE> extends GenericEnablingBootstrapFormComponent<TYPE, Select2Choice<TYPE>> { private static final long serialVersionUID = -3430670677135618576L; private Boolean isFloatedInput = false; public Select2ChoiceBootstrapFormComponent(final String id, final IModel<String> labelModel, final IModel<TYPE> model, final ChoiceProvider<TYPE> choiceProvider) { super(id, labelModel, model); provider(choiceProvider); } public Select2ChoiceBootstrapFormComponent<TYPE> provider(final ChoiceProvider<TYPE> choiceProvider) { field.setProvider(choiceProvider); return this; } public Select2ChoiceBootstrapFormComponent(final String id, final IModel<String> labelModel, final ChoiceProvider<TYPE> choiceProvider) { this(id, labelModel, null, choiceProvider); } public Select2ChoiceBootstrapFormComponent(final String id, final ChoiceProvider<TYPE> choiceProvider, final IModel<TYPE> model) { super(id, model); provider(choiceProvider); } public Select2ChoiceBootstrapFormComponent(final String id, final ChoiceProvider<TYPE> choiceProvider) { super(id); provider(choiceProvider); } @Override protected Select2Choice<TYPE> inputField(final String id, final IModel<TYPE> model) { return new Select2Choice<TYPE>(id, initFieldModel()); } @Override public String getUpdateEvent() { return "change"; } /* * (non-Javadoc) * * @see org.devgateway.toolkit.forms.wicket.components.form. * GenericBootstrapFormComponent#onConfigure() */ @Override protected void onInitialize() { field.getSettings().setPlaceholder("Click to select"); field.getSettings().setAllowClear(true); field.getSettings().setCloseOnSelect(true); field.getSettings().setDropdownAutoWidth(true); super.onInitialize(); } @Override protected void onComponentTag(final ComponentTag tag) { super.onComponentTag(tag); if (isFloatedInput) { Attributes.addClass(tag, "floated-input"); } } public Boolean getIsFloatedInput() { return isFloatedInput; } public void setIsFloatedInput(final Boolean isFloatedInput) { this.isFloatedInput = isFloatedInput; } @Override protected boolean boundComponentsVisibilityAllowed(final TYPE selectedValue) { return false; } }