new layout based on jquery, icons from 'iconic' set
[ical-aggregator.git] / src / main / java / net / bzzt / ical / aggregator / web / DayView.java
blob1262c71c54cf3cef27ac1ec6d636757ff13292ad
1 package net.bzzt.ical.aggregator.web;
3 import java.util.ArrayList;
4 import java.util.Collections;
5 import java.util.Date;
6 import java.util.List;
8 import net.bzzt.ical.aggregator.model.Event;
9 import net.bzzt.ical.aggregator.service.FeedService;
11 import org.apache.commons.lang.time.DateUtils;
12 import org.apache.wicket.ajax.AjaxRequestTarget;
13 import org.apache.wicket.markup.html.basic.Label;
14 import org.apache.wicket.markup.html.link.Link;
15 import org.apache.wicket.markup.html.list.ListItem;
16 import org.apache.wicket.markup.html.list.ListView;
17 import org.apache.wicket.model.Model;
18 import org.apache.wicket.spring.injection.annot.SpringBean;
20 public class DayView extends AggregatorLayoutPage
22 @SpringBean
23 private FeedService feedService;
25 private Date date;
27 public DayView()
29 this(new Date());
32 public DayView(Date dateToShow)
34 this.date = dateToShow;
35 add(new Link<Void>("previous")
38 /**
41 private static final long serialVersionUID = 1L;
43 @Override
44 public void onClick()
46 setResponsePage(new DayView(DateUtils.addDays(date, -1)));
49 });
50 add(new Label("date", new Model<Date>(date)));
51 add(new Link<Void>("next")
54 /**
57 private static final long serialVersionUID = 1L;
59 @Override
60 public void onClick()
62 setResponsePage(new DayView(DateUtils.addDays(date, 1)));
65 });
67 List<Event> eventsForDay = feedService.getEventsForDay(AggregatorSession.get().getSelectedFeeds(), date);
68 Collections.sort(eventsForDay);
70 List<List<Event>> columns = splitEvents(eventsForDay, 3);
72 add(new ListView<List<Event>>("column", columns)
75 /**
78 private static final long serialVersionUID = 1L;
80 @Override
81 protected void populateItem(ListItem<List<Event>> item)
83 item.add(new ListView<Event>("event", item.getModel())
85 /**
88 private static final long serialVersionUID = 1L;
90 @Override
91 protected void populateItem(ListItem<Event> item)
93 item.add(new MoreInfoPanel("infoPanel", item.getModel(), true));
95 });
103 private List<List<Event>> splitEvents(List<Event> eventsForDay, int sublists)
105 List<List<Event>> result = new ArrayList<List<Event>>();
106 for (int i = 0; i < sublists; i++)
108 result.add(new ArrayList<Event>());
111 int i = 0;
112 for (Event event : eventsForDay)
114 result.get(i%sublists).add(event);
115 i++;
117 return result;
120 /* (non-Javadoc)
121 * @see net.bzzt.ical.aggregator.web.AggregatorLayoutPage#refresh(org.apache.wicket.ajax.AjaxRequestTarget)
123 @Override
124 public void refresh(AjaxRequestTarget target)
126 setResponsePage(new DayView(date));