package scrum.client.calendar;
import ilarkesto.gwt.client.Date;
import ilarkesto.gwt.client.Gwt;
import ilarkesto.gwt.client.TableBuilder;
import java.util.List;
import scrum.client.common.AScrumWidget;
import com.google.gwt.user.client.ui.Widget;
public class DaySelectorListWidget extends AScrumWidget {
private Date selectedDate = Date.today();
private Date firstVisibleDate = Date.today();
private Date lastVisibleDate = Date.today();
@Override
protected Widget onInitialization() {
return null;
}
@Override
protected void onUpdate() {
TableBuilder tb = new TableBuilder();
int count = 0;
tb.setColumnWidths(30, 30, 30, 30, 30, 30, 30, 30);
tb.add(Gwt.createDiv("DateSelectorWidget-spacer", ""));
// Header with weekdays
for (int i = 1; i < 8; i++) {
// 2009-11-23 is a Monday
Date weekday = new Date(2009, 11, 22 + i);
tb.add(Gwt.createDiv("DateSelectorWidget-weekday", weekday.getWeekdayLabel()));
}
tb.nextRow();
tb.add(Gwt.createDiv("DateSelectorWidget-spacer", ""));
tb.nextRow();
List<Date> month = Date.getDaysInMonth(selectedDate.getYear(), selectedDate.getMonth());
tb.add(Gwt.createDiv("DateSelectorWidget-weeknumber", "" + month.get(0).getWeek()));
count++;
int weekday = month.get(0).getWeekday();
if (weekday == 0) weekday = 7;
for (int i = 1; i < weekday; i++) {
count++;
tb.add(Gwt.createDiv("DateSelectorWidget-spacer", ""));
}
for (Date date : month) {
if (count == 8) {
tb.nextRow();
tb.add(Gwt.createDiv("DateSelectorWidget-weeknumber", "" + date.getWeek()));
count = 1;
}
tb.add(new DaySelectorWidget(date, date.equals(selectedDate), date.isBetween(firstVisibleDate,
lastVisibleDate, true)));
count++;
}
replaceContent(tb.createTable());
super.onUpdate();
}
public void setSelectedDate(Date selectedDate) {
this.selectedDate = selectedDate;
}
public int getSelectedDay() {
return this.selectedDate.getDay();
}
public void setVisibleRange(Date firstDate, Date lastDate) {
this.firstVisibleDate = firstDate;
this.lastVisibleDate = lastDate;
}
}