package net.ftlines.blog.cdidemo.web.app; import java.util.Iterator; import javax.inject.Inject; import net.ftlines.blog.cdidemo.model.Employee; import net.ftlines.blog.cdidemo.model.EmployeeCriteria; import net.ftlines.blog.cdidemo.model.EmployeesRepository; import net.ftlines.blog.cdidemo.web.EntityProvider; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.navigation.paging.PagingNavigator; import org.apache.wicket.markup.html.panel.GenericPanel; import org.apache.wicket.markup.repeater.Item; import org.apache.wicket.markup.repeater.data.DataView; import org.apache.wicket.model.IModel; import org.apache.wicket.model.PropertyModel; public class EmployeesListPanel extends GenericPanel<EmployeeCriteria> { public EmployeesListPanel(String id, IModel<EmployeeCriteria> model) { super(id, model); DataView<?> employees = new DataView<Employee>("employees", new EmployeeProvider()) { @Override protected void populateItem(Item<Employee> item) { IModel<Employee> user = item.getModel(); item.add(new Label("first", new PropertyModel(user, "firstName"))); item.add(new Label("last", new PropertyModel(user, "lastName"))); item.add(new Label("email", new PropertyModel(user, "email"))); item.add(new Label("hireDate", new PropertyModel(user, "hireDate"))); } }; employees.setItemsPerPage(10); add(employees); add(new PagingNavigator("navigator", employees)); } private class EmployeeProvider extends EntityProvider<Employee> { @Inject EmployeesRepository employees; public Iterator<Employee> iterator(int first, int count) { return employees.list(getModelObject(), first, count).iterator(); } public int size() { return employees.count(getModelObject()); } } }