public Field createField(Item item, Object propertyId, Component uiContext) {
    // Identify the fields by their Property ID.
    String pid = (String) propertyId;
    if ("userName".equals(pid)) {
      TextField field = new TextField("Username (Email)");
      field.setRequired(true);
      field.setRequiredError("Please supply a username");
      field.addValidator(new EmailValidator("Username must be an email address"));
      return field;
    } else if ("password".equals(pid)) {
      PasswordField field = new PasswordField("Password");
      field.setRequired(true);
      field.setRequiredError("Please supply a password");
      field.addValidator(new StringLengthValidator(VAL_PASSWD_LEN_MESSAGE, 5, 999, false));
      field.addValidator(new NoWhiteSpaceValidator(VAL_PASSWD_TXT_MESSAGE));
      return field;
    } else if ("confirmPassword".equals(pid)) {
      PasswordField field = new PasswordField("Confirm Password");
      field.setRequired(true);
      field.setRequiredError("Please confirm your password");
      field.addValidator(new StringLengthValidator(VAL_PASSWD_LEN_MESSAGE, 5, 999, false));
      field.addValidator(new NoWhiteSpaceValidator(VAL_PASSWD_TXT_MESSAGE));
      return field;
    }

    return null; // Invalid field (property) name.
  }