+ MSG.view_adminTopology_storageNodes_clusterSettings_credentials_desc() + "</div>");
FormItemBuilder.resetOddRow();
items = buildHeaderItems();
// username field
StringLengthValidator usernameValidator = new StringLengthValidator(4, 100, false);
builder = new FormItemBuilder();
List<FormItem> usernameItems = builder.withName(FIELD_USERNAME).withTitle(MSG.common_title_username())
.withDescription(MSG.view_adminTopology_storageNodes_clusterSettings_credentials_username())
.withValue(settings.getUsername()).withReadOnlySetTo(true).withValidators(usernameValidator).build();
items.addAll(usernameItems);
// password field
StringLengthValidator passwordValidator1 = new StringLengthValidator(6, 100, false);
passwordValidator1.setErrorMessage(MSG.view_adminTopology_storageNodes_clusterSettings_credentials_err1());
// due to SmartGWT bug that changes focus after each input (https://code.google.com/p/smartgwt/issues/detail?id=309)
passwordValidator1.setValidateOnChange(false);
builder = new FormItemBuilder();
List<FormItem> passwordItems = builder.withName(FIELD_PASSWORD).withTitle(MSG.common_title_password())
.withDescription(MSG.view_adminTopology_storageNodes_clusterSettings_credentials_password())
.withValue(settings.getPasswordHash()).withReadOnlySetTo(readOnly).withValidators(passwordValidator1)
.withAttribute("autocomplete", "off").build((FormItem) GWT.create(PasswordItem.class));
items.addAll(passwordItems);
// password_verify field
builder = new FormItemBuilder();
passwordValidator1 = new StringLengthValidator(6, 100, false);
passwordValidator1.setErrorMessage(MSG.view_adminTopology_storageNodes_clusterSettings_credentials_err1());
MatchesFieldValidator passwordValidator2 = new MatchesFieldValidator();
passwordValidator2.setOtherField(FIELD_PASSWORD);
passwordValidator2.setErrorMessage(MSG.view_adminTopology_storageNodes_clusterSettings_credentials_err2());
// due to same bug in SmartGWT as above
passwordValidator1.setValidateOnChange(false);
passwordValidator2.setValidateOnChange(false);
List<FormItem> passwordVerifyItems = builder.withName(FIELD_PASSWORD_VERIFY)
.withTitle(MSG.view_adminTopology_storageNodes_clusterSettings_credentials_verify_title())
.withValue(settings.getPasswordHash())
.withDescription(MSG.view_adminTopology_storageNodes_clusterSettings_credentials_verify())