package org.devgateway.toolkit.forms.wicket.components.table; import org.apache.wicket.AttributeModifier; import org.apache.wicket.Component; import org.apache.wicket.extensions.markup.html.repeater.data.table.filter.ChoiceFilteredPropertyColumn; import org.apache.wicket.extensions.markup.html.repeater.data.table.filter.FilterForm; import org.apache.wicket.model.IModel; import org.devgateway.toolkit.forms.wicket.components.form.Select2ChoiceBootstrapFormComponent; import org.devgateway.toolkit.forms.wicket.providers.GenericChoiceProvider; import java.util.List; /** * A ChoiceFilteredPropertyColumn that uses Select2ChoiceBootstrapFormComponent as a filter. * * @author idobre * @since 12/20/16 */ public class SelectFilteredBootstrapPropertyColumn<T, Y, S> extends ChoiceFilteredPropertyColumn<T, Y, S> { public SelectFilteredBootstrapPropertyColumn(final IModel<String> displayModel, final S sortProperty, final String propertyExpression, final IModel<? extends List<? extends Y>> filterChoices) { super(displayModel, sortProperty, propertyExpression, filterChoices); } public SelectFilteredBootstrapPropertyColumn(final IModel<String> displayModel, final String propertyExpression, final IModel<? extends List<? extends Y>> filterChoices) { super(displayModel, propertyExpression, filterChoices); } @Override public Component getFilter(final String componentId, final FilterForm<?> form) { final Select2ChoiceBootstrapFormComponent<Y> selectorField = new Select2ChoiceBootstrapFormComponent<>(componentId, new GenericChoiceProvider<>((List<Y>) getFilterChoices().getObject()), getFilterModel(form)); selectorField.hideLabel(); selectorField.getField().add(AttributeModifier.replace("onchange", "this.form.submit();")); return selectorField; } }