/** * Copyright (C) 2010 Asterios Raptis * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package de.alpharogroup.wicket.data.table; import java.text.SimpleDateFormat; import java.util.Date; 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.html.basic.Label; import org.apache.wicket.markup.repeater.Item; import org.apache.wicket.model.AbstractReadOnlyModel; import org.apache.wicket.model.IModel; import org.apache.wicket.util.lang.Args; /** * The class {@link DateColumn} can format a date. * * @param <T> * the generic type from the model object */ public class DateColumn<T> extends PropertyColumn<T, Void> { /** The Constant serialVersionUID. */ private static final long serialVersionUID = 1L; /** The date format. */ private final String dateFormat; /** * Instantiates a new {@link DateColumn} object. * * @param displayModel * the display model * @param propertyExpression * the property expression * @param dateFormat * the date format */ public DateColumn(final IModel<String> displayModel, final String propertyExpression, final String dateFormat) { super(displayModel, propertyExpression); this.dateFormat = Args.notNull(dateFormat, "dateFormat"); } /** * Callback method for provide specific behavior on method * {@link AbstractReadOnlyModel#getObject()}. * * @param rowModel * the row model * @return the string */ protected String onGetObject(final IModel<T> rowModel) { final IModel<?> propertyModel = DateColumn.this.getDataModel(rowModel); final Date value = (Date)propertyModel.getObject(); final SimpleDateFormat format = new SimpleDateFormat(dateFormat); return format.format(value); } /** * {@inheritDoc} **/ @Override public void populateItem(final Item<ICellPopulator<T>> cellItem, final String componentId, final IModel<T> rowModel) { cellItem.add(new Label(componentId, new AbstractReadOnlyModel<String>() { private static final long serialVersionUID = 1L; /** * {@inheritDoc} */ @Override public String getObject() { return onGetObject(rowModel); } })); } }