package fr.openwide.core.showcase.web.application.widgets.page;
import java.util.List;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.ResourceModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.spring.injection.annot.SpringBean;
import fr.openwide.core.showcase.core.business.user.model.User;
import fr.openwide.core.showcase.core.business.user.service.IUserService;
import fr.openwide.core.showcase.core.util.binding.Bindings;
import fr.openwide.core.wicket.more.link.descriptor.IPageLinkDescriptor;
import fr.openwide.core.wicket.more.link.descriptor.builder.LinkDescriptorBuilder;
import fr.openwide.core.wicket.more.markup.html.image.BooleanIcon;
import fr.openwide.core.wicket.more.markup.html.template.js.jquery.plugins.listfilter.ListFilterBehavior;
import fr.openwide.core.wicket.more.markup.html.template.js.jquery.plugins.listfilter.ListFilterOptions;
import fr.openwide.core.wicket.more.markup.html.template.model.BreadCrumbElement;
import fr.openwide.core.wicket.more.model.BindingModel;
public class ListFilterPage extends WidgetsTemplate {
private static final long serialVersionUID = 593301451585725585L;
public static final IPageLinkDescriptor linkDescriptor() {
return LinkDescriptorBuilder.start()
.page(ListFilterPage.class);
}
@SpringBean
private IUserService userService;
public ListFilterPage(PageParameters parameters) {
super(parameters);
addBreadCrumbElement(new BreadCrumbElement(new ResourceModel("widgets.menu.listFilter"), ListFilterPage.linkDescriptor()));
WebMarkupContainer userList = new WebMarkupContainer("userList");
userList.setOutputMarkupId(true);
add(userList);
IModel<List<User>> userListModel = new LoadableDetachableModel<List<User>>() {
private static final long serialVersionUID = -5757718865027562782L;
@Override
protected List<User> load() {
return userService.list();
}
};
userList.add(new ListView<User>("user", userListModel) {
private static final long serialVersionUID = 1L;
@Override
protected void populateItem(ListItem<User> item) {
IModel<User> userModel = item.getModel();
item.add(new Label("firstName", BindingModel.of(userModel, Bindings.user().firstName())));
item.add(new Label("lastName", BindingModel.of(userModel, Bindings.user().lastName())));
item.add(new Label("userName", BindingModel.of(userModel, Bindings.user().userName())));
item.add(new Label("email", BindingModel.of(userModel, Bindings.user().email())));
item.add(new BooleanIcon("active", BindingModel.of(userModel, Bindings.user().active())));
}
});
ListFilterOptions listFilterOptions = new ListFilterOptions();
listFilterOptions.setItemsSelector(".user");
listFilterOptions.setScanSelector(".nom, .email");
userList.add(new ListFilterBehavior(listFilterOptions));
}
@Override
protected Class<? extends WebPage> getSecondMenuPage() {
return ListFilterPage.class;
}
}