docs: public final void loadDropDownValues(LocalDate date) {
          TimeRangeOldValues oldValue = oldValuesMap.get(getViewType());
          if (date == null) {
              return;
          }
  
          switch (getViewType()) {
          case DAY_VIEW:
  
              // Will enter here if user has made some changes in Time range
              // combos for DAY_VIEW type.
              if (oldValue != null) {
  
                  startField.setValue(oldValue.startField.getValue());
                  endField.setValue(oldValue.endField.getValue());
  
                  if (startField.getValue() == TimeRangeFieldValue.ON_DATE) {
                      startField.setOnDate(oldValue.startField.getOnDate());
                  }
  
                  if (endField.getValue() == TimeRangeFieldValue.ON_DATE) {
                      endField.setOnDate(oldValue.endField.getOnDate());
                  } else if (endField.getValue() == TimeRangeFieldValue.AFTER) {
                      endField.setAfterUnits(oldValue.endField.getAfterUnits());
                  }
              } else {
  
                  if (date.equals(getToday())) {
                      startField.setValue(TimeRangeField.TimeRangeFieldValue.TODAY);
                  } else if (date.equals(getTomorrow())) {
                      startField.setValue(TimeRangeField.TimeRangeFieldValue.TOMORROW);
                  } else {
                      startField.setValue(TimeRangeField.TimeRangeFieldValue.ON_DATE);
                      startField.setOnDate(date);
                  }
                  endField.setValue(TimeRangeField.TimeRangeFieldValue.AFTER);
              }
              break;
  
          case WEEK_VIEW:
              
              // Will enter here if user has made some changes in Time range
              // combos for WEEK_VIEW type.
              if (oldValue != null){
                  
                  startField.setValue(oldValue.startField.getValue());
                  endField.setValue(oldValue.endField.getValue());
                  
                  if (startField.getValue() == TimeRangeFieldValue.ON_DATE) {
                      startField.setOnDate(oldValue.startField.getOnDate());
                  } else if (startField.getValue() == TimeRangeFieldValue.ON_WEEK_NUMBER) {
                      startField.setOnWeekNumber(oldValue.startField.getOnWeekNumber());
                  }
                  
                  if (endField.getValue() == TimeRangeFieldValue.ON_DATE) {
                      endField.setOnDate(oldValue.endField.getOnDate());
                  } else if (endField.getValue() == TimeRangeFieldValue.ON_WEEK_NUMBER) {
                      endField.setOnWeekNumber(oldValue.endField.getOnWeekNumber());
                  } else if (endField.getValue() == TimeRangeFieldValue.AFTER) {
                      endField.setAfterUnits(oldValue.endField.getAfterUnits());
                  }
              }else {
                  if (isCurrentWeek(date)) {
                      startField
                              .setValue(TimeRangeField.TimeRangeFieldValue.THIS_WEEK);
                  } else if (isNextWeek(date)) {
                      startField
                              .setValue(TimeRangeField.TimeRangeFieldValue.NEXT_WEEK);
                  } else {
                      startField.setValue(TimeRangeField.TimeRangeFieldValue.ON_DATE);
                      startField.setOnDate(date);
                  }
                  endField.setValue(TimeRangeFieldValue.AFTER);    
              }
              break;
  
          case MONTH_VIEW:
              
              // Will enter here if user has made some changes in Time range
              // combos for MONTH_VIEW type.
              if(oldValue != null){
                  
                  startField.setValue(oldValue.startField.getValue());
                  endField.setValue(oldValue.endField.getValue());
                  
                  if (startField.getValue() != TimeRangeField.TimeRangeFieldValue.THIS_MONTH
                          && startField.getValue() != TimeRangeField.TimeRangeFieldValue.NEXT_MONTH) {
                      startField.setMonthYear(oldValue.startField.getMonthYear());
                  }
                  
                  if (endField.getValue() == TimeRangeFieldValue.AFTER) {
                      endField.setAfterUnits(oldValue.endField.getAfterUnits());
                  } else if (endField.getValue() != TimeRangeField.TimeRangeFieldValue.THIS_MONTH
                          && startField.getValue() != TimeRangeField.TimeRangeFieldValue.NEXT_MONTH) {
                      endField.setMonthYear(oldValue.endField.getMonthYear());
                  }
              }else {
                  if (isCurrentMonth(date)) {
                      startField.setValue(TimeRangeField.TimeRangeFieldValue.THIS_MONTH);
                  } else if (isNextMonth(date)) {
                      startField.setValue(TimeRangeField.TimeRangeFieldValue.NEXT_MONTH);
                  } else {
                      TimeRangeField.TimeRangeFieldValue month = TimeRangeField.TimeRangeFieldValue
                              .getFromMonth(date.getMonth());
                      int year = date.getYear();
                      startField.setValue(month);
                      startField.setMonthYear(year);
                  }
                  endField.setValue(TimeRangeFieldValue.AFTER);
              }
              break;
  
          default:
              throw new UnsupportedOperationException(
                      "Not supported yet!: " + getViewType());
          }
  
          startDate.addListener(OldValuesListener);
          endDate.addListener(OldValuesListener);
      }