package webapp.panel.brands; import java.util.Iterator; import components.persistance.dao.BrandDao; import components.persistance.pojo.Brand; import webapp.WebAppMain; import webapp.modal.BrandWindow; import wicket.AttributeModifier; import wicket.Component; import wicket.ajax.AjaxRequestTarget; import wicket.ajax.markup.html.AjaxLink; import wicket.extensions.markup.html.repeater.data.DataView; import wicket.extensions.markup.html.repeater.data.sort.OrderByBorder; import wicket.extensions.markup.html.repeater.refreshing.Item; import wicket.extensions.markup.html.repeater.util.SortParam; import wicket.extensions.markup.html.repeater.util.SortableDataProvider; import wicket.markup.html.basic.Label; import wicket.markup.html.link.Link; import wicket.markup.html.navigation.paging.PagingNavigator; import wicket.markup.html.panel.Panel; import wicket.model.AbstractReadOnlyModel; import wicket.model.IModel; import wicket.model.Model; import wicket.protocol.http.WebApplication; /** * @author victori */ public class BrandPanel extends Panel { private static final long serialVersionUID = 1L; private BrandDao getBrandDao() { return (BrandDao)((WebAppMain)WebApplication.get()).getCtx().getBean("brandDao"); } public BrandPanel(String id,int rows) { super(id); SortableDataProvider bp = new BrandsProvider(); final DataView brandsView = new DataView("brands",bp) { @Override protected void populateItem(final Item item) { final Brand brand = (Brand)item.getModelObject(); final BrandWindow brandWindow; item.add(new Label("brandid", String.valueOf(brand.getId()))); item.add(new Label("brand", brand.getName())); item.add(new Label("date",brand.getCreated().toString())); item.add(brandWindow = new BrandWindow("brandWindow",brand)); item.add(new AjaxLink("edit"){ @Override public void onClick(AjaxRequestTarget arg0) { brandWindow.show(arg0); } }); item.add(new Link("delete"){ @Override public void onClick() { getBrandDao().remove(brand.getId()); } }); item.add(new AttributeModifier("class",true,new AbstractReadOnlyModel(){ @Override public Object getObject(Component arg0) { return (item.getIndex() % 2 == 1) ? "even" : "odd"; } })); } }; brandsView.setItemsPerPage(rows); add(brandsView); add(new Link("refresh") { @Override public void onClick() { brandsView.render(); } }); add(new PagingNavigator("navigator",brandsView)); add(new OrderByBorder("orderById","id",bp) { protected void onSortChanged() { brandsView.setCurrentPage(0); } }); add(new OrderByBorder("orderByBrand","name",bp) { protected void onSortChanged() { brandsView.setCurrentPage(0); } }); add(new OrderByBorder("orderByDate","created",bp) { protected void onSortChanged() { brandsView.setCurrentPage(0); } }); } public class BrandsProvider extends SortableDataProvider { private static final long serialVersionUID = 1L; public BrandsProvider () { setSort("name",true); } public Iterator iterator(int first, int count) { SortParam sp = getSort(); return getBrandDao().all(sp.getProperty(),sp.isAscending()).subList(first, first+count).iterator(); } public IModel model(Object arg0) { return new Model((Brand)arg0); } public int size() { return getBrandDao().all().size(); } } }