All pastes #414281 Raw Edit

Miscellany

public text v1 · immutable
#414281 ·published 2007-03-28 22:53 UTC
rendered paste body
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();
		}
		
	}
}