package fr.openwide.core.wicket.more.markup.html.form; import java.util.List; import org.apache.wicket.Session; import org.apache.wicket.markup.html.form.ChoiceRenderer; import org.apache.wicket.markup.html.form.IChoiceRenderer; import org.apache.wicket.model.IModel; import org.apache.wicket.model.LoadableDetachableModel; import org.retzlaff.select2.Select2Settings; import com.google.common.collect.Lists; import fr.openwide.core.spring.util.StringUtils; import fr.openwide.core.wicket.more.markup.html.select2.GenericSelect2DropDownSingleChoice; import fr.openwide.core.wicket.more.markup.html.select2.util.Select2Utils; import fr.openwide.core.wicket.more.rendering.BooleanRenderer; public class BooleanDropDownSingleChoice extends GenericSelect2DropDownSingleChoice<Boolean> { private static final long serialVersionUID = 6244269987751271782L; public BooleanDropDownSingleChoice(String id, IModel<Boolean> model) { super(id, model, new BooleanChoicesModel(), new ResourceKeyWithParameterBooleanChoiceRenderer()); } public BooleanDropDownSingleChoice(String id, IModel<Boolean> model, String prefix) { super(id, model, new BooleanChoicesModel(), new ResourceKeyWithParameterBooleanChoiceRenderer(prefix)); } public BooleanDropDownSingleChoice(String id, IModel<Boolean> model, IChoiceRenderer<Boolean> renderer) { super(id, model, new BooleanChoicesModel(), renderer); } @Override protected void fillSelect2Settings(Select2Settings settings) { super.fillSelect2Settings(settings); Select2Utils.disableSearch(settings); } private static class BooleanChoicesModel extends LoadableDetachableModel<List<Boolean>> { private static final long serialVersionUID = 1L; public BooleanChoicesModel() { } @Override protected List<Boolean> load() { return Lists.newArrayList(Boolean.TRUE, Boolean.FALSE); } } private static class ResourceKeyWithParameterBooleanChoiceRenderer extends ChoiceRenderer<Boolean> { private static final long serialVersionUID = -5914319140045008140L; String prefix = null; public ResourceKeyWithParameterBooleanChoiceRenderer(String prefix) { super(); this.prefix = prefix; } public ResourceKeyWithParameterBooleanChoiceRenderer() { super(); } @Override public Object getDisplayValue(Boolean object) { if (StringUtils.hasText(prefix)) { return BooleanRenderer.withPrefix(prefix).render(object, Session.get().getLocale()); } else { return BooleanRenderer.get().render(object, Session.get().getLocale()); } } } }