@Override
 public Color getForeground(CalendarComponent component) {
   CalendarComponentType type = component.getType();
   Calendar calendar = component.getCalendar();
   if (type.equals(CalendarComponentType.DAY_MONTH)) {
     if (calendar.isSelected(component)) {
       return getProperties().getSelectedDayOfMonthForeground();
     } else if (calendar.isCurrentMonth(component)) {
       return getProperties().getDayOfMonthForeground();
     } else {
       return getProperties().getDayOfNonCurrentMonthForeground();
     }
   } else if (type.equals(CalendarComponentType.DAY_WEEK_HEADER)) {
     DayOfWeek dow = calendar.getDayOfWeek(component);
     return getProperties().getDayOfWeekForeground(dow);
   } else if (type.equals(CalendarComponentType.PREVIOUS_YEAR_BUTTON)) {
     return getProperties().getButtonColor();
   } else if (type.equals(CalendarComponentType.PREVIOUS_MONTH_BUTTON)) {
     return getProperties().getButtonColor();
   } else if (type.equals(CalendarComponentType.NEXT_YEAR_BUTTON)) {
     return getProperties().getButtonColor();
   } else if (type.equals(CalendarComponentType.NEXT_MONTH_BUTTON)) {
     return getProperties().getButtonColor();
   } else if (type.equals(CalendarComponentType.MONTH_LABEL)) {
     return getProperties().getMonthForeground();
   } else if (type.equals(CalendarComponentType.YEAR_LABEL)) {
     return getProperties().getYearForeground();
   }
   return Color.BLACK;
 }
 @Override
 public Color getDisabledForeground(CalendarComponent component) {
   CalendarComponentType type = component.getType();
   if (type.equals(CalendarComponentType.PREVIOUS_YEAR_BUTTON)) {
     return getProperties().getDisabledButtonColor();
   } else if (type.equals(CalendarComponentType.PREVIOUS_MONTH_BUTTON)) {
     return getProperties().getDisabledButtonColor();
   } else if (type.equals(CalendarComponentType.NEXT_YEAR_BUTTON)) {
     return getProperties().getDisabledButtonColor();
   } else if (type.equals(CalendarComponentType.NEXT_MONTH_BUTTON)) {
     return getProperties().getDisabledButtonColor();
   }
   return Color.LIGHT_GRAY;
 }
 @Override
 public Color getBackground(CalendarComponent component) {
   CalendarComponentType type = component.getType();
   Calendar calendar = component.getCalendar();
   if (type.equals(CalendarComponentType.DAY_MONTH)) {
     if (calendar.isSelected(component)) {
       return getProperties().getSelectedDayOfMonthBackground();
     } else if (calendar.isCurrentMonth(component)) {
       return getProperties().getDayOfMonthBackground();
     } else {
       return getProperties().getDayOfNonCurrentMonthBackground();
     }
   } else if (type.equals(CalendarComponentType.DAY_WEEK_HEADER)) {
     DayOfWeek dow = calendar.getDayOfWeek(component);
     return getProperties().getDayOfWeekBackground(dow);
   } else if (type.equals(CalendarComponentType.TOP_BAR)) {
     return getProperties().getTopBarBackground();
   }
   return Color.WHITE;
 }