private void reflectData() {

    Calendar cal = Calendar.getInstance(zone, locale);
    cal.setTime(date == null ? new Date() : date);

    SimpleDateFormat fmt = new SimpleDateFormat("E", locale);
    fmt.setTimeZone(zone);

    int numDaysInWeek = cal.getActualMaximum(Calendar.DAY_OF_WEEK)
        - cal.getActualMinimum(Calendar.DAY_OF_WEEK) + 1;
    int firstDayOfWeek = cal.getFirstDayOfWeek();

    cal.set(Calendar.DAY_OF_WEEK, firstDayOfWeek);

    removeAll();
    setLayout(new GridLayout(1, numDaysInWeek, 2, 2));

    setBackground(isEnabled() ? backgroundColorActive
        : backgroundColorInactive);

    for (int i = 0; i < numDaysInWeek; i++) {
      JLabel label = new JLabel();
      // TODO: add option to control limit length:
      label.setText(fmt.format(cal.getTime())/* .substring(0,1) */);
      label.setForeground(isEnabled() ? foregroundColorActive
          : foregroundColorInactive);
      label.setHorizontalAlignment(SwingConstants.CENTER);
      label.setBorder(BorderFactory.createEmptyBorder(3, 0, 3, 0));
      Font boldFont = label.getFont().deriveFont(Font.BOLD);
      label.setFont(boldFont);
      add(label);

      boolean isHoliday = false;
      if (holidayPolicy != null) {
        isHoliday = holidayPolicy.isWeekend(this, cal);
      }

      if (isHoliday)
        label.setForeground(isEnabled() ? foregroundColorWeekendEnabled
            : foregroundColorWeekendDisabled);

      cal.add(Calendar.DAY_OF_WEEK, 1);
    }
    setBorder(BorderFactory.createEmptyBorder(0, 1, 0, 1));
    revalidate();
    repaint();

  }
private void reflectData()