package fr.openwide.core.wicket.more.markup.html.template.js.jquery.plugins.datepickersync;
import static com.google.common.base.Preconditions.checkState;
import org.apache.wicket.Component;
import org.apache.wicket.behavior.Behavior;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
import org.wicketstuff.wiquery.core.javascript.JsStatement;
public class DatePickerSyncBehavior extends Behavior {
private static final long serialVersionUID = 1692504341556931151L;
private String selector;
private DatePickerSync datePickerSync;
public DatePickerSyncBehavior() {
this(null, null);
}
public DatePickerSyncBehavior(String selector) {
this(selector, null);
}
public DatePickerSyncBehavior(DatePickerSync datePickerSync) {
this(null, datePickerSync);
}
public DatePickerSyncBehavior(String selector, DatePickerSync datePickerSync) {
super();
this.selector = selector;
this.datePickerSync = datePickerSync;
}
@Override
public void onConfigure(Component component) {
checkState(!datePickerSync.getPrecedents().contains(component), "Un datepicker ne peut pas se précéder lui-même.");
checkState(!datePickerSync.getSuivants().contains(component), "Un datepicker ne peut pas se suivre lui-même.");
super.onConfigure(component);
}
@Override
public void renderHead(Component component, IHeaderResponse response) {
response.render(JavaScriptHeaderItem.forReference(DatePickerSyncResourceReference.get()));
response.render(OnDomReadyHeaderItem.forScript(statement(component).render()));
}
protected JsStatement statement(Component component) {
JsStatement statement = new JsStatement();
if (selector != null) {
statement.$(component, selector);
} else {
statement.$(component);
}
if (datePickerSync != null) {
statement.chain(datePickerSync);
}
return statement;
}
@Override
public void detach(Component component) {
super.detach(component);
datePickerSync.detach();
}
}