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]

Reply via email to