rendered paste bodypackage 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();
}
}
}