private void fillMenuItems() { monthSelectorHeader.clearItems(); monthMenu.clearItems(); monthSelectorHeader.addItem( GWTCSimpleDatePicker.formatDate(MONTH_FORMAT, simpleDatePickers.get(0).getCursorDate()), monthMenu); int n = -1 * (monthSelector / 2); Date d = new Date(GWTCSimpleDatePicker.getFirstDayOfMonth(getCursorDate()).getTime()); Date md = new Date( GWTCSimpleDatePicker.getFirstDayOfMonth(simpleDatePickers.get(0).getMinimalDate()) .getTime()); d = GWTCSimpleDatePicker.increaseMonth(d, n); while (GWTCSimpleDatePicker.compareDate(md, d) < 0) { d = GWTCSimpleDatePicker.increaseMonth(d, 1); n++; } n += monthSelector; d = GWTCSimpleDatePicker.increaseMonth(getCursorDate(), n); while (GWTCSimpleDatePicker.compareDate(simpleDatePickers.get(0).getMaximalDate(), d) > 0) { d = GWTCSimpleDatePicker.increaseMonth(d, -1); n--; } n -= monthSelector; d = GWTCSimpleDatePicker.increaseMonth(getCursorDate(), n); for (int i = n; i < monthSelector; i++) { String t = GWTCSimpleDatePicker.formatDate(MONTH_FORMAT, d); MenuCommand c = new MenuCommand(d); d = GWTCSimpleDatePicker.increaseMonth(d, 1); if (GWTCSimpleDatePicker.compareDate(d, simpleDatePickers.get(0).getMaximalDate()) >= 0 && GWTCSimpleDatePicker.compareDate(simpleDatePickers.get(0).getMinimalDate(), d) > 0) { monthMenu.addItem(t, c); } } }