package com.worldturner.example.admin.view; import java.util.ArrayList; import java.util.List; import org.apache.wicket.AttributeModifier; import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator; import org.apache.wicket.extensions.markup.html.repeater.data.table.DefaultDataTable; import org.apache.wicket.extensions.markup.html.repeater.data.table.HeaderlessColumn; import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; import org.apache.wicket.extensions.markup.html.repeater.data.table.ISortableDataProvider; import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn; import org.apache.wicket.markup.html.CSSPackageResource; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.repeater.Item; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; import org.apache.wicket.model.ResourceModel; import com.worldturner.commons.wicket.componentpage.PageComponent; import com.worldturner.commons.wicket.componentpage.link.PageComponentLink; import com.worldturner.commons.wicket.panel.GenericPanel; import com.worldturner.example.admin.domain.Product; import com.worldturner.example.admin.model.ProductsDataProvider; /** * Overview page of our "Product administration" module. * * @author Erwin Bolwidt (ebolwidt@worldturner.com) */ @PageComponent public class ProductOverviewPanel extends GenericPanel { private static final long serialVersionUID = 1L; private int rowsPerPage = 8; private DefaultDataTable table; public ProductOverviewPanel(String id) { super(id); } @Override protected void initializeGui() { add(CSSPackageResource.getHeaderContribution(ProductOverviewPanel.class, "ProductOverviewPanel.css")); table = new DefaultDataTable("overview", createColumns(), createDataProvider(), rowsPerPage); add(table); add(new PageComponentLink("addNewLink", ProductEditPanel.class, new Model(new Product()))); } protected List> createColumns() { List> columns = new ArrayList>(); IColumn nameColumn = new PropertyColumn(new ResourceModel("product.name.label"), "name"); IColumn priceColumn = new PropertyColumn(new ResourceModel("product.price.label"), "price") { private static final long serialVersionUID = 1L; @Override public void populateItem(Item> item, String componentId, IModel rowModel) { Label label = new Label(componentId, createLabelModel(rowModel)); label.add(new AttributeModifier("class", true, new Model("number"))); item.add(label); } }; IColumn actionColumn = new HeaderlessColumn() { private static final long serialVersionUID = 1L; @Override public void populateItem(Item> cellItem, String componentId, IModel rowModel) { cellItem.add(new ProductOverviewActionPanel(componentId, rowModel)); } }; columns.add(nameColumn); columns.add(priceColumn); columns.add(actionColumn); return columns; } protected ISortableDataProvider createDataProvider() { return new ProductsDataProvider(); } public int getRowsPerPage() { return rowsPerPage; } public void setRowsPerPage(int rowsPerPage) { this.rowsPerPage = rowsPerPage; this.table.setRowsPerPage(rowsPerPage); } }