/*******************************************************************************
* 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 de.agilecoders.wicket.core.util.Attributes;
import de.agilecoders.wicket.extensions.markup.html.bootstrap.form.DateTextField;
import de.agilecoders.wicket.extensions.markup.html.bootstrap.form.DateTextFieldConfig;
import de.agilecoders.wicket.extensions.markup.html.bootstrap.form.DateTextFieldConfig.TodayButton;
import de.agilecoders.wicket.extensions.markup.html.bootstrap.form.DateTextFieldConfig.View;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxLink;
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.model.IModel;
import java.util.Date;
/**
* @author mpostelnicu
*
*/
public class DateFieldBootstrapFormComponent extends GenericBootstrapFormComponent<Date, TextField<Date>> {
private static final long serialVersionUID = 6829640010904041758L;
public static final String DEFAULT_FORMAT = "dd/MM/yy";
private Boolean isFloatedInput = false;
/**
* @param id
* @param labelModel
* @param model
*/
public DateFieldBootstrapFormComponent(final String id, final IModel<String> labelModel, final IModel<Date> model) {
super(id, labelModel, model);
}
public DateFieldBootstrapFormComponent(final String id) {
super(id);
}
/**
* @param id
* @param model
*/
public DateFieldBootstrapFormComponent(final String id, final IModel<Date> model) {
super(id, model);
}
@Override
protected TextField<Date> inputField(final String id, final IModel<Date> model) {
DateTextFieldConfig config = new DateTextFieldConfig().withView(View.Year).withFormat(DEFAULT_FORMAT)
.autoClose(true).calendarWeeks(true).forceParse(false).highlightToday(true).clearButton(true)
.allowKeyboardNavigation(true).showTodayButton(TodayButton.LINKED).withView(View.Decade);
return new DateTextField(id, initFieldModel(), config);
}
@Override
public String getUpdateEvent() {
return "change";
}
/*
* (non-Javadoc)
*
* @see org.devgateway.toolkit.forms.wicket.components.form.
* GenericBootstrapFormComponent#onConfigure()
*/
@Override
protected void onInitialize() {
super.onInitialize();
IndicatingAjaxLink<String> clearDateLink = new IndicatingAjaxLink<String>("clearDate") {
private static final long serialVersionUID = -1705495886974891511L;
@Override
public void onClick(final AjaxRequestTarget target) {
DateFieldBootstrapFormComponent.this.field.setModelObject(null);
target.add(DateFieldBootstrapFormComponent.this.field);
}
};
border.add(clearDateLink);
}
@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;
}
}