@SuppressWarnings("deprecation")
  private void configureCalendar() {

    // change hour offset to false to facilitate google style
    settings.setOffsetHourLabels(false);
    //        settings.setTimeBlockClickNumber(CalendarSettings.Click.Single);
    settings.setEnableDragDrop(true);

    calendar = new Calendar();
    calendar.setSettings(settings);
    calendar.setView(CalendarViews.MONTH);
    calendar.setWidth("100%");

    // TODO: Preparar estes dois handlers para a SCHEDULED TASK
    calendar.addDeleteHandler(
        new DeleteHandler<Appointment>() {
          public void onDelete(DeleteEvent<Appointment> event) {
            boolean commit =
                Window.confirm(
                    HarvesterUI.CONSTANTS.deleteScheduledTaskConfirmMessage()
                        + " "
                        + event.getTarget().getTitle());
            if (!commit) {
              event.setCancelled(true);
            }
          }
        });
    calendar.addUpdateHandler(
        new UpdateHandler<Appointment>() {
          public void onUpdate(UpdateEvent<Appointment> event) {
            if (event.getTarget() != null) {
              CalendarAppointment appt = (CalendarAppointment) event.getTarget();
              if (appt.getHarvestTask() instanceof OldTaskUI) {
                HarvesterUI.UTIL_MANAGER.getErrorBox(
                    HarvesterUI.CONSTANTS.moveOldTasks(), HarvesterUI.CONSTANTS.moveOldTaskError());
                History.fireCurrentHistoryState();
              } else {
                if (appt.getStart().after(new Date())) {
                  if (appt.getHarvestTask() instanceof ScheduledTaskUI) {
                    final ScheduledTaskUI scheduledTaskUI = (ScheduledTaskUI) appt.getHarvestTask();
                    final Date date = appt.getStart();
                    scheduledTaskUI.setDate(date);

                    AsyncCallback<Boolean> callback =
                        new AsyncCallback<Boolean>() {
                          public void onFailure(Throwable caught) {
                            new ServerExceptionDialog(
                                    "Failed to get response from server", caught.getMessage())
                                .show();
                          }

                          public void onSuccess(Boolean result) {
                            if (!result) {
                              HarvesterUI.UTIL_MANAGER.getErrorBox(
                                  HarvesterUI.CONSTANTS.moveScheduledTask(),
                                  HarvesterUI.CONSTANTS.moveScheduledTaskError());
                              return;
                            }
                            DateTimeFormat fmt = DateTimeFormat.getFormat("dd/MM/yyyy");
                            scheduledTaskUI.createDateString(scheduledTaskUI.getScheduleType());
                            HarvesterUI.UTIL_MANAGER.getSaveBox(
                                HarvesterUI.CONSTANTS.moveScheduledTask(),
                                HarvesterUI.CONSTANTS.scheduleTaskMoved() + " " + fmt.format(date));
                          }
                        };
                    HarvestOperationsServiceAsync service =
                        (HarvestOperationsServiceAsync)
                            Registry.get(HarvesterUI.HARVEST_OPERATIONS_SERVICE);
                    service.updateScheduledTask(scheduledTaskUI, callback);
                  }
                } else {
                  HarvesterUI.UTIL_MANAGER.getErrorBox(
                      HarvesterUI.CONSTANTS.moveScheduledTask(),
                      HarvesterUI.CONSTANTS.moveScheduledTaskPrevDateError());
                }
                History.fireCurrentHistoryState();
              }
            }
          }
        });
    calendar.addOpenHandler(
        new OpenHandler<Appointment>() {
          public void onOpen(OpenEvent<Appointment> event) {
            if (event != null) {
              Appointment appt = event.getTarget();
              if (appt instanceof CalendarAppointment) {
                if (((CalendarAppointment) appt).getHarvestTask() instanceof OldTaskUI)
                  showPastScheduleDialog(((CalendarAppointment) appt).getHarvestTask());
                else if (((CalendarAppointment) appt).getHarvestTask() instanceof ScheduledTaskUI) {
                  ScheduledTaskUI scheduledTaskUI =
                      (ScheduledTaskUI) ((CalendarAppointment) appt).getHarvestTask();
                  if (scheduledTaskUI.getRecordsPerFile() == null) showScheduleDialog(appt);
                  else showScheduleExportDialog(appt);
                }
              }
            }
          }
        });

    //        calendar.addSelectionHandler(new SelectionHandler<Appointment>(){
    //            public void onSelection(SelectionEvent<Appointment> event) {
    //                if (event != null) {
    //                    Appointment appt = event.getSelectedItem();
    //                    if(appt instanceof CalendarAppointment)
    //                    {
    //                        Date now = new Date();
    //                        // TODO: hora do dia tambem
    //                        if(appt.getEnd().before(now))
    //                        {
    //                            showPastScheduleDialog(((CalendarAppointment)
    // appt).getHarvestTask());
    //                        }
    //                        else
    //                            showScheduleDialog(appt);
    //                    }
    //                    calendar.resetSelectedAppointment();
    //                }
    //            }
    //        });

    // Handler to show + items for a day
    calendar.addDateRequestHandler(
        new DateRequestHandler<Date>() {
          public void onDateRequested(DateRequestEvent<Date> event) {
            calendar.setDate(event.getTarget());
            calendar.setView(CalendarViews.DAY, 1);
          }
        });
  }