package fr.openwide.core.basicapp.web.application.referencedata.component; import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.ResourceModel; import org.wicketstuff.wiquery.core.events.StateEvent; import fr.openwide.core.basicapp.core.business.referencedata.model.City; import fr.openwide.core.basicapp.web.application.referencedata.model.AbstractGenericListItemDataProvider; import fr.openwide.core.jpa.more.business.generic.model.EnabledFilter; import fr.openwide.core.wicket.more.markup.html.feedback.FeedbackUtils; import fr.openwide.core.wicket.more.markup.html.form.EnumDropDownSingleChoice; import fr.openwide.core.wicket.more.markup.html.form.LabelPlaceholderBehavior; public class CitySearchPanel extends Panel { private static final long serialVersionUID = -2395663840251286432L; public CitySearchPanel(String id, final AbstractGenericListItemDataProvider<City, ?> dataProvider, final Component table) { super(id); Form<Void> searchForm = new Form<Void>("searchForm"); add(searchForm); searchForm.add( new AjaxFormSubmitBehavior(searchForm, StateEvent.CHANGE.getEventLabel()) { private static final long serialVersionUID = 1L; @Override protected void onSubmit(AjaxRequestTarget target) { // Just in case the dataProvider's content was loaded before search parameters changed dataProvider.detach(); target.add(table); FeedbackUtils.refreshFeedback(target, getPage()); } } ); searchForm.add( new TextField<String>("label", dataProvider.getLabelModel(), String.class) .setLabel(new ResourceModel("business.listItem.label")) .add( new LabelPlaceholderBehavior() ), new TextField<String>("postalCode", dataProvider.getCodeModel(), String.class) .setLabel(new ResourceModel("business.postalCode")) .add( new LabelPlaceholderBehavior() ), new EnumDropDownSingleChoice<EnabledFilter>("enabledFilter", dataProvider.getEnabledFilterModel(), EnabledFilter.class) .setLabel(new ResourceModel("business.listItem.enabledState")) ); } }