public void propertyChange(PropertyChangeEvent evt) {
    String prop = evt.getPropertyName();
    Object newValue = evt.getNewValue();
    Object oldValue = evt.getOldValue();

    if ("focusOwner".equals(prop) && oldValue instanceof JTextArea) {
      JTextArea freeText = (JTextArea) oldValue;
      if (freeText.equals(freeTextPane)) {
        freeText.setEditable(false);
        if (contentTextChange) {
          contentTextChange = false;
          resetAppearanceShapes();
        }
        if (freeText instanceof FreeTextArea) {
          ((FreeTextArea) freeText).setActive(false);
        }
      }
    } else if ("focusOwner".equals(prop) && newValue instanceof JTextArea) {
      JTextArea freeText = (JTextArea) newValue;
      if (freeText.equals(freeTextPane) && !annotation.getFlagReadOnly()) {
        freeText.setEditable(true);
        if (freeText instanceof FreeTextArea) {
          ((FreeTextArea) freeText).setActive(true);
        }
      }
    }
  }