@Override
  public void propertyChange(PropertyChangeEvent evt) {
    if (JComponent.TOOL_TIP_TEXT_KEY.equals(evt.getPropertyName())) {
      field.setToolTipText((String) evt.getNewValue());
      button.setToolTipText((String) evt.getNewValue());
    } else if (evt.getPropertyName().equals(CalendarPane.PROPERTY_NAME_DATE)) {
      Date newValue = (Date) evt.getNewValue();
      peerDateChanged(newValue);
    } else if (evt.getPropertyName().equals(
        DatePicker.PROPERTY_NAME_FIELD_EDITABLE)) {
      field.setEditable(peer.isFieldEditable());
    } else if (evt.getPropertyName().equals(
      CalendarPane.PROPERTY_NAME_FOCUS_LOST_BEHAVIOR)) {
      field.setFocusLostBehavior(peer.getFocusLostBehavior());
    } else if (evt.getPropertyName()
        .equals(CalendarPane.PROPERTY_NAME_LOCALE)) {
      field.setFormatterFactory(createFormatterFactory());
      calendarPane.setLocale(peer.getLocale());
    } else if (evt.getPropertyName().equals(
        DatePicker.PROPERTY_NAME_DATE_FORMAT)) {
      field.setFormatterFactory(createFormatterFactory());
    } else if (evt.getPropertyName().equals(CalendarPane.PROPERTY_NAME_ZONE)) {
      field.setFormatterFactory(createFormatterFactory());
      calendarPane.setZone((TimeZone) evt.getNewValue());
    } else if (evt.getPropertyName().equals(
      CalendarPane.PROPERTY_NAME_SHOW_TODAY_BTN)) {
      boolean value = ((Boolean) evt.getNewValue()).booleanValue();
      calendarPane.setShowTodayButton(value);
    } else if (evt.getPropertyName().equals(
      CalendarPane.PROPERTY_NAME_SHOW_NONE_BTN)) {
      boolean value = ((Boolean) evt.getNewValue()).booleanValue();
      calendarPane.setShowNoneButton(value);
    } else if (evt.getPropertyName().equals(
      CalendarPane.PROPERTY_NAME_SHOW_NUMBER_WEEK)) {
      boolean value = ((Boolean) evt.getNewValue()).booleanValue();
      calendarPane.setShowNumberOfWeek(value);
    } else if (evt.getPropertyName().equals(CalendarPane.PROPERTY_NAME_STYLE)) {
      int value = ((Integer) evt.getNewValue()).intValue();
      calendarPane.setStyle(value);
    } else if (evt.getPropertyName().equals(
      CalendarPane.PROPERTY_NAME_VETO_POLICY)) {
      calendarPane.setVetoPolicy((VetoPolicy) evt.getNewValue());
    } else if (evt.getPropertyName().equals(
      CalendarPane.PROPERTY_NAME_HOLIDAY_POLICY)) {
      calendarPane.setHolidayPolicy((HolidayPolicy) evt.getNewValue());
    } else if (evt.getPropertyName().equals("focusable")) {
      boolean value = ((Boolean) evt.getNewValue()).booleanValue();
      field.setFocusable(value);
    } else if (evt.getPropertyName().equals(
      CalendarPane.PROPERTY_NAME_RESOURCES)) {
      CalendarResources resources = (CalendarResources) evt.getNewValue();
      calendarPane.setResources(resources);
    } else if (evt.getPropertyName()
        .equals("enabled"/* DatePicker.PROPERTY_NAME_ENABLED */)) {
      boolean value = ((Boolean) evt.getNewValue()).booleanValue();
      field.setEnabled(value);
      button.setEnabled(value);
    } else if (evt.getPropertyName().equals(
        DatePicker.PROPERTY_NAME_PICKER_STYLE)) {
      peer.updateUI();
    } else if (evt.getPropertyName().equals(
        DatePicker.PROPERTY_NAME_DROPDOWN_FOCUSABLE)) {
      calendarPane.setFocusable(peer.isDropdownFocusable());
    }
  }
@Override
  public void propertyChange(PropertyChangeEvent evt)