various updates, opensocial support
[ical-aggregator.git] / src / main / java / net / bzzt / ical / aggregator / web / WeekView.java
blob7486d33dd70cfe02c9134351595e91cd402bae6e
1 package net.bzzt.ical.aggregator.web;
3 import java.util.Calendar;
4 import java.util.Date;
6 import net.bzzt.ical.aggregator.web.ajax.uniqueurls.UniqueUrlHelper;
8 import org.apache.commons.lang.time.DateUtils;
9 import org.apache.wicket.Application;
10 import org.apache.wicket.PageParameters;
11 import org.apache.wicket.ajax.AjaxRequestTarget;
12 import org.apache.wicket.ajax.markup.html.AjaxLink;
13 import org.apache.wicket.markup.html.WebMarkupContainer;
14 import org.apache.wicket.markup.html.basic.Label;
15 import org.apache.wicket.model.Model;
17 public class WeekView extends AggregatorLayoutPage
19 private Date date;
21 private WebMarkupContainer weekViewContainer;
23 public WeekView()
25 this(new Date());
28 public WeekView(PageParameters parameters)
30 this(getDate(parameters));
33 private static Date getDate(PageParameters parameters)
35 String dateAsString = parameters.getString("date");
37 Date date = (Date) Application.get().getConverterLocator().getConverter(Date.class).convertToObject(dateAsString, null);
39 return date;
42 public WeekView(Date dateToShow)
44 this.date = dateToShow;
46 weekViewContainer = getWeekContainer("weekContainer");
47 add(weekViewContainer);
50 private WebMarkupContainer getWeekContainer(String id)
52 WebMarkupContainer result = new WebMarkupContainer(id);
53 result.setOutputMarkupId(true);
55 Calendar calendar = Calendar.getInstance();
56 calendar.setTime(date);
58 result.add(new AjaxLink<Void>("previous")
61 /**
64 private static final long serialVersionUID = 1L;
66 @Override
67 public void onClick(AjaxRequestTarget target)
69 date = DateUtils.addWeeks(date, -1);
70 refresh(target);
73 });
74 result.add(new Label("week", new Model<Integer>(calendar.get(Calendar.WEEK_OF_YEAR))));
75 result.add(new AjaxLink<Void>("next")
78 /**
81 private static final long serialVersionUID = 1L;
83 @Override
84 public void onClick(AjaxRequestTarget target)
86 date = DateUtils.addWeeks(date, 1);
87 refresh(target);
90 });
92 // sunday=1, saturday=7
93 int selected_day = calendar.get(Calendar.DAY_OF_WEEK);
95 // after this, monday=0, sunday=6
96 selected_day = (selected_day + 5) % 7;
98 calendar.add(Calendar.DAY_OF_MONTH, -selected_day);
99 result.add(new DayPanel("monday", calendar.getTime(), this));
101 calendar.add(Calendar.DAY_OF_MONTH, 1);
102 result.add(new DayPanel("tuesday", calendar.getTime(), this));
104 calendar.add(Calendar.DAY_OF_MONTH, 1);
105 result.add(new DayPanel("wednesday", calendar.getTime(), this));
107 calendar.add(Calendar.DAY_OF_MONTH, 1);
108 result.add(new DayPanel("thursday", calendar.getTime(), this));
110 calendar.add(Calendar.DAY_OF_MONTH, 1);
111 result.add(new DayPanel("friday", calendar.getTime(), this));
113 calendar.add(Calendar.DAY_OF_MONTH, 1);
114 result.add(new DayPanel("saturday", calendar.getTime(), this));
116 calendar.add(Calendar.DAY_OF_MONTH, 1);
117 result.add(new DayPanel("sunday", calendar.getTime(), this));
119 return result;
122 /* (non-Javadoc)
123 * @see net.bzzt.ical.aggregator.web.AggregatorLayoutPage#refresh(org.apache.wicket.ajax.AjaxRequestTarget)
125 @Override
126 public void refresh(AjaxRequestTarget target)
128 WebMarkupContainer newWeekContainer = getWeekContainer("weekContainer");
129 weekViewContainer.replaceWith(newWeekContainer);
130 target.addComponent(newWeekContainer);
131 UniqueUrlHelper.resetHash(target, "date", date);
132 weekViewContainer = newWeekContainer;