@Override
 void doPropertyChange(PropertyChangeEvent evt) {
   super.doPropertyChange(evt);
   if (checkIsFieldChange(Field.NACHNAME, evt)) {
     txtNachname.setText(personModel.getNachname());
   } else if (checkIsFieldChange(Field.VORNAME, evt)) {
     txtVorname.setText(personModel.getVorname());
   } else if (checkIsFieldChange(Field.STRASSE_HAUSNUMMER, evt)) {
     txtStrasseHausnummer.setText(personModel.getStrasseHausnummer());
   } else if (checkIsFieldChange(Field.PLZ, evt)) {
     txtPlz.setText(personModel.getPlz());
   } else if (checkIsFieldChange(Field.ORT, evt)) {
     txtOrt.setText(personModel.getOrt());
   } else if (checkIsFieldChange(Field.GEBURTSDATUM, evt)) {
     // nicht alle Subklassen von Person haben ein Geburtsdatum
     if (txtGeburtsdatum != null) {
       txtGeburtsdatum.setText(asString(personModel.getGeburtsdatum()));
     }
   } else if (checkIsFieldChange(Field.FESTNETZ, evt)) {
     txtFestnetz.setText(personModel.getFestnetz());
   } else if (checkIsFieldChange(Field.NATEL, evt)) {
     txtNatel.setText(personModel.getNatel());
   } else if (checkIsFieldChange(Field.EMAIL, evt)) {
     txtEmail.setText(personModel.getEmail());
   } else if (checkIsFieldChange(Field.ANREDE, evt)) {
     // nicht alle Subklassen von Person haben eine Anrede
     if (comboBoxAnrede != null) {
       comboBoxAnrede.setSelectedItem(personModel.getAnrede());
     }
   }
 }
 private void onEmailEvent(boolean showRequiredErrMsg) {
   LOGGER.trace("PersonController Event Email");
   boolean equalFieldAndModelValue = equalsNullSafe(txtEmail.getText(), personModel.getEmail());
   try {
     setModelEmail(showRequiredErrMsg);
   } catch (SvmValidationException e) {
     return;
   }
   if (equalFieldAndModelValue && isModelValidationMode()) {
     // Wenn Field und Model den gleichen Wert haben, erfolgt kein PropertyChangeEvent. Deshalb
     // muss hier die Validierung angestossen werden.
     LOGGER.trace("Validierung wegen equalFieldAndModelValue");
     validate();
   }
 }
 private void setModelAnrede() throws SvmRequiredException {
   makeErrorLabelInvisible(Field.ANREDE);
   try {
     personModel.setAnrede((Anrede) comboBoxAnrede.getSelectedItem());
   } catch (SvmRequiredException e) {
     LOGGER.trace("PersonController setModelAnrede RequiredException=" + e.getMessage());
     if (isModelValidationMode()) {
       comboBoxAnrede.setToolTipText(e.getMessage());
       // Keine weitere Aktion. Die Required-Prüfung erfolgt erneut nachdem alle Field-Prüfungen
       // bestanden sind.
     } else {
       showErrMsg(e);
     }
     throw e;
   }
 }
 private void onAnredeSelected() {
   LOGGER.trace("PersonController Event Anrede selected=" + comboBoxAnrede.getSelectedItem());
   boolean equalFieldAndModelValue =
       equalsNullSafe(comboBoxAnrede.getSelectedItem(), personModel.getAnrede());
   try {
     setModelAnrede();
   } catch (SvmRequiredException e) {
     return;
   }
   if (equalFieldAndModelValue && isModelValidationMode()) {
     // Wenn Field und Model den gleichen Wert haben, erfolgt kein PropertyChangeEvent. Deshalb
     // muss hier die Validierung angestossen werden.
     LOGGER.trace("Validierung wegen equalFieldAndModelValue");
     validate();
   }
 }
 private void setModelGeburtsdatum(boolean showRequiredErrMsg) throws SvmValidationException {
   makeErrorLabelInvisible(Field.GEBURTSDATUM);
   try {
     personModel.setGeburtsdatum(txtGeburtsdatum.getText());
   } catch (SvmRequiredException e) {
     LOGGER.trace("PersonController setModelGeburtsdatum RequiredException=" + e.getMessage());
     if (isModelValidationMode() || !showRequiredErrMsg) {
       txtGeburtsdatum.setToolTipText(e.getMessage());
       // Keine weitere Aktion. Die Required-Prüfung erfolgt erneut nachdem alle Field-Prüfungen
       // bestanden sind.
     } else {
       showErrMsg(e);
     }
     throw e;
   } catch (SvmValidationException e) {
     LOGGER.trace("PersonController setModelGeburtsdatum Exception=" + e.getMessage());
     showErrMsg(e);
     throw e;
   }
 }
 private void setModelStrasseHausnummer(boolean showRequiredErrMsg) throws SvmValidationException {
   makeErrorLabelInvisible(Field.STRASSE_HAUSNUMMER);
   try {
     personModel.setStrasseHausnummer(txtStrasseHausnummer.getText());
   } catch (SvmRequiredException e) {
     LOGGER.trace(
         "PersonController setModelStrasseHausnummer RequiredException=" + e.getMessage());
     if (isModelValidationMode() || !showRequiredErrMsg) {
       txtStrasseHausnummer.setToolTipText(e.getMessage());
       // Keine weitere Aktion. Die Required-Prüfung erfolgt erneut nachdem alle Field-Prüfungen
       // bestanden sind.
     } else {
       showErrMsg(e);
     }
     throw e;
   } catch (SvmValidationException e) {
     LOGGER.trace("PersonController setModelStrasseHausnummer Exception=" + e.getMessage());
     showErrMsg(e);
     throw e;
   }
 }