package fr.openwide.maven.artifact.notifier.web.application.common.component;
import java.util.Collection;
import java.util.List;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.markup.html.form.IChoiceRenderer;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.retzlaff.select2.Select2Behavior;
import org.retzlaff.select2.Select2Settings;
import fr.openwide.core.wicket.markup.html.form.ListMultipleChoice;
import fr.openwide.core.wicket.more.markup.html.select2.util.DropDownChoiceWidth;
import fr.openwide.core.wicket.more.markup.html.select2.util.IDropDownChoiceWidth;
import fr.openwide.core.wicket.more.markup.html.select2.util.Select2Utils;
public abstract class GenericSelect2DropDownMultipleChoice<T> extends ListMultipleChoice<T> {
private static final long serialVersionUID = -6179538711780820058L;
/**
* Hack.
* @see IDropDownChoiceWidth
*/
private IDropDownChoiceWidth width = DropDownChoiceWidth.NORMAL;
protected GenericSelect2DropDownMultipleChoice(String id, IModel<? extends Collection<T>> collectionModel,
IModel<? extends List<? extends T>> choicesModel, IChoiceRenderer<? super T> renderer) {
super(id, collectionModel, choicesModel, renderer);
Select2Behavior<T, T> select2Behavior = Select2Behavior.forChoice(this);
fillSelect2Settings(select2Behavior.getSettings());
add(select2Behavior);
}
@Override
protected void onInitialize() {
super.onInitialize();
add(new AttributeAppender("style", new LoadableDetachableModel<String>() {
private static final long serialVersionUID = 1L;
@Override
protected String load() {
return "width: " + width.getWidth() + "px";
}
}));
}
protected void fillSelect2Settings(Select2Settings settings) {
Select2Utils.setDefaultSettings(settings);
}
public GenericSelect2DropDownMultipleChoice<T> setWidth(IDropDownChoiceWidth width) {
this.width = width;
return this;
}
}