/**
  * Applies the changes made to the edited value into the model. If the {@link #property} is
  * <code>null</code>, a new <code>PropertyAdater</code> will be created, otherwise it will be
  * updated.
  */
 void apply() {
   if (propertyAdapter == null) {
     Property property = (Property) subject();
     propertyAdapter = property.addProperty(name, value);
   } else {
     propertyAdapter.setName(name);
     propertyAdapter.setValue(value);
   }
 }
    /**
     * Validates the given value and update the enable state of the OK button.
     *
     * @param propertyName Either {@link PropertyEditorView.VALUE_PROPERTY} or {@link
     *     PropertyEditorView.NAME_PROPERTY}
     */
    private void validate(String propertyName) {
      String valueErrorKey = (virtualProperty.value.length() == 0) ? "_EMPTY_VALUE" : null;
      String nameErrorKey = null;

      // A name is required
      if (virtualProperty.name.length() == 0) {
        nameErrorKey = "_EMPTY_NAME";
      }
      // Loop through the existing PropertyAdapters and check if one
      // already exists with the specified name, at the exception of the
      // edited one (during editing and not creation)
      else {
        Property property = (Property) subject();

        for (Iterator iter = property.properties(); iter.hasNext(); ) {
          PropertyAdapter propertyAdapter = (PropertyAdapter) iter.next();

          if ((propertyAdapter != virtualProperty.propertyAdapter)
              && propertyAdapter.getName().equalsIgnoreCase(virtualProperty.name)) {
            nameErrorKey = "_INVALID_NAME";
            break;
          }
        }
      }

      // Create the key
      String errorKey = "LOGIN_PROPERTY_EDITOR";

      if (nameErrorKey != null) errorKey += nameErrorKey;

      if (valueErrorKey != null) errorKey += valueErrorKey;

      // Update the UI
      if ((nameErrorKey == null) && (valueErrorKey == null)) {
        clearErrorMessage();
        getOKAction().setEnabled(true);
      } else {
        setErrorMessage(resourceRepository().getString(errorKey));
        getOKAction().setEnabled(false);
      }
    }