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);
      }
    }
  }