// 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 datePickers = new HashMap(); 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; }