package fr.openwide.core.showcase.web.application.widgets.page;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import org.apache.wicket.markup.html.WebPage;
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.web.application.widgets.component.SortableUserListPanel;
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.template.model.BreadCrumbElement;
public class SortableListPage extends WidgetsTemplate {
private static final long serialVersionUID = -4802009584951257187L;
public static final IPageLinkDescriptor linkDescriptor() {
return LinkDescriptorBuilder.start()
.page(SortableListPage.class);
}
@SpringBean
private IUserService userService;
public SortableListPage(PageParameters parameters) {
super(parameters);
addBreadCrumbElement(new BreadCrumbElement(new ResourceModel("widgets.menu.sortable"), SortableListPage.linkDescriptor()));
IModel<List<User>> userListModel = new LoadableDetachableModel<List<User>>() {
private static final long serialVersionUID = 9076101423574115944L;
@Override
protected List<User> load() {
List<User> userList = userService.list();
Collections.sort(userList, new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
return o1.getPosition().compareTo(o2.getPosition());
}
});
return userList;
}
};
SortableUserListPanel sortablePanel = new SortableUserListPanel("sortableUserPanel", userListModel);
add(sortablePanel);
}
@Override
protected Class<? extends WebPage> getSecondMenuPage() {
return SortableListPage.class;
}
}