// Date picker overriden
public class RangoDatePicker extends DatePicker {
private final static DateTimeFormat monthFormat = DateTimeFormat.getFormat(PredefinedFormat.YEAR_MONTH);
public RangoDatePicker(int month, int year, RangoDatePickerGroup rangoDatePickerGroup) {
super(new MonthSelector() {
private Grid grid;
@Override
protected void refresh() {
String formattedMonth = getModel().formatCurrentMonth();
grid.setText(0, 0, formattedMonth);
}
@Override
protected void setup() {
// Set up grid.
grid = new Grid(1, 1);
CellFormatter formatter = grid.getCellFormatter();
formatter.setStyleName(0, 0, "datePickerMonth");
formatter.setWidth(0, 0, "100%");
grid.setStyleName("datePickerMonthSelector");
initWidget(grid);
}
}, new DefaultCalendarView(), new CalendarModel() {
@Override
public String formatCurrentMonth() {
return monthFormat.format(getCurrentMonth());
}
});
// style
addStyleName("rango-cal");
// group
rangoDatePickerGroup.addRangoCalendar(month, year, this);
// set current month
Date currentMonth = new GregorianCalendar(year, month, 1).getTime();
this.setCurrentMonth(currentMonth);
}
}
//Date picker group
public class RangoDatePickerGroup {
static HashMap<String, RangoDatePicker> datePickers = new HashMap<String, RangoDatePicker>();
public void addRangoCalendar(int month, int year, RangoDatePicker rangoDatePicker) {
datePickers.put(key(year, month), rangoDatePicker);
}
private String key(int year, int month) {
return year + "-" + month;
}
public void selectDates(Date start, Date end, int colorCode) {
for (final Date date = start; date.compareTo(end) <= 0; CalendarUtil.addDaysToDate(date, 1)) {
@SuppressWarnings("deprecation")
/* Yes, it's deprecated */
final int month = date.getMonth();
final int year = date.getYear();
datePickers.get(key(year, month)).addStyleToDates("rango-colour"+colorCode, date);
}
}
}
//CSS
.rango-cal .datePickerDay.datePickerDayIsFiller{
visibility: hidden;
}
.rango-cal .datePickerDay.datePickerDayIsWeekend{
background: transparent;
}
.rango-cal .datePickerDay.datePickerDayIsValue{
background: transparent;
}
.rango-cal .datePickerDay.rango-colour-0 {
background-color: green;
}