Hello!
I am not sure about how to correctly use the DateLabel in a
AjaxFallbackDefaultDataTable. The code below is oriented on the samples
found in
http://www.wicket-library.com/wicket-examples/repeater/
I want to display a table of events (id, name, dateBegin, dateEnd)
which can also be selected. But my use of the DateLabel seems ... *ehem*
unelegently to me, but it works. What would be a simple and elegant
solution to display a Date object in a table?
public class EventListPage extends BasePage {
private Event selected;
/**
* Constructor.
*/
public EventListPage() {
List<IColumn> columns = new ArrayList<IColumn>();
columns.add(new AbstractColumn(new Model("Id")){
public void populateItem(Item cellItem, String componentId,
IModel model) {
cellItem.add(new ActionPanel(componentId, model));
}
});
columns.add(new PropertyColumn(new
Model(getString("event.name")), "name", "name"));
columns.add(new AbstractColumn(new
Model(getString("event.dateBegin"))) {
public void populateItem(Item cellItem, String componentId,
IModel model) {
cellItem.add(DateLabel.forDatePattern(componentId, new
DateModel((EventModel)model) {
@Override
public Object getObject() {
Event event = (Event) super.model.getObject();
return event.getDateBegin();
}
},"dd.MM.yyyy hh:mm"));
}
});
columns.add(new AbstractColumn(new
Model(getString("event.dateEnd"))) {
public void populateItem(Item cellItem, String componentId,
IModel model) {
cellItem.add(DateLabel.forDatePattern(componentId, new
DateModel((EventModel)model) {
@Override
public Object getObject() {
Event event = (Event) super.model.getObject();
return event.getDateEnd();
}
},"dd.MM.yyyy hh:mm"));
}
});
add(new AjaxFallbackDefaultDataTable("eventTable", columns, new
SortableEventProvider(), 20));
}
/*
* Model to wrap the date fields of an Event
*/
class DateModel extends Model
{
private EventModel model;
public DateModel(EventModel model) {
this.model = model;
}
}
/**
*
*/
class ActionPanel extends Panel
{
/**
* @param id
* component id
* @param model
* model for contact
*/
public ActionPanel(String id, IModel model)
{
super(id, model);
add(new Link("select")
{
public void onClick()
{
EventListPage.this.selected = (Event)
getParent().getModelObject();
getUserSession().setCurrentlyOpenedEvent(EventListPage.this.selected);
String msg =
MapVariableInterpolator.interpolate(getLocalizer()
.getString("event.selected", this), new
MicroMap("name",
EventListPage.this.selected.getName()));
getSession().info(msg);
}
});
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]