package hu.sch.web.wicket.components.tables;
import java.util.Date;
import org.apache.wicket.datetime.markup.html.basic.DateLabel;
import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
/**
* Egy olyan {@link PropertyColumn} gyermekosztály, ami egy Date típusú propertyt
* tud megjeleníteni ÉÉÉÉ.HH.NN. formátumban.
*
* @author messo
* @since 2.3.1
*/
public class DatePropertyColumn<T> extends PropertyColumn<T, String> {
private static final String datePattern = "yyyy.MM.dd.";
/**
* Creates a date property column that is also sortable
*
* @param displayModel display model
* @param sortProperty sort property
* @param propertyExpression wicket property expression used by PropertyModel
*/
public DatePropertyColumn(IModel<String> displayModel, String sortProperty,
String propertyExpression) {
super(displayModel, sortProperty, propertyExpression);
}
/**
* Creates a non sortable date property column
*
* @param displayModel display model
* @param propertyExpression wicket property expression
*/
public DatePropertyColumn(IModel<String> displayModel, String propertyExpression) {
super(displayModel, null, propertyExpression);
}
/**
* Implementation of populateItem which adds a label to the cell whose model is the provided
* property expression evaluated against rowModelObject
*
* @see ICellPopulator#populateItem(Item, String, IModel)
*/
@Override
public void populateItem(Item<ICellPopulator<T>> item, String componentId, IModel<T> rowModel) {
Model<Date> dateModel = Model.of((Date) getDataModel(rowModel).getObject());
item.add(DateLabel.forDatePattern(componentId,
dateModel, datePattern));
}
}