use of org.jboss.hal.ballroom.form.TextBoxItem in project console by hal.
the class ServerColumn method addServer.
private void addServer(boolean browseByHost) {
if (browseByHost) {
AddressTemplate template = serverConfigTemplate(statementContext.selectedHost());
String id = Ids.build(HOST, statementContext.selectedHost(), SERVER, Ids.ADD);
List<String> attributes = asList(AUTO_START, GROUP, SOCKET_BINDING_DEFAULT_INTERFACE, SOCKET_BINDING_GROUP, SOCKET_BINDING_PORT_OFFSET, UPDATE_AUTO_START_WITH_SERVER_STATUS);
crud.add(id, Names.SERVER, template, attributes, createUniqueValidation(), (name, address) -> refresh(RESTORE_SELECTION));
} else {
// load all available hosts to show in the copy dialog
Operation operation = new Operation.Builder(ResourceAddress.root(), READ_CHILDREN_NAMES_OPERATION).param(CHILD_TYPE, HOST).build();
dispatcher.execute(operation, result -> {
List<String> hosts = new ArrayList<>();
result.asList().forEach(m -> hosts.add(m.asString()));
// get the first host, only to retrieve the r-r-d for server-config
// as /host=*/server-config=*:read-operation-description(name=add) does not work
AddressTemplate template = serverConfigTemplate(hosts.get(0));
metadataProcessor.lookup(template, progress.get(), new SuccessfulMetadataCallback(eventBus, resources) {
@Override
public void onMetadata(Metadata metadata) {
String id = Ids.build(SERVER_GROUP, statementContext.selectedServerGroup(), SERVER, FORM);
SingleSelectBoxItem hostFormItem = new SingleSelectBoxItem(HOST, Names.HOST, hosts, false);
hostFormItem.setRequired(true);
NameItem nameItem = new NameItem();
ModelNodeForm<ModelNode> form = new ModelNodeForm.Builder<>(id, metadata).unboundFormItem(nameItem, 0).unboundFormItem(hostFormItem, 1, resources.messages().addServerHostHelp()).customFormItem(GROUP, attributeDescription -> {
TextBoxItem groupItem = new TextBoxItem(GROUP, resources.constants().group());
groupItem.setEnabled(false);
return groupItem;
}).fromRequestProperties().build();
AddResourceDialog dialog = new AddResourceDialog(resources.messages().addServerTitle(), form, (resource, payload) -> {
payload.get(GROUP).set(statementContext.selectedServerGroup());
String serverName = nameItem.getValue();
ResourceAddress address = serverConfigTemplate(hostFormItem.getValue()).resolve(statementContext, serverName);
crud.add(serverName, address, payload, resources.messages().addResourceSuccess(Names.SERVER, serverName), (name, address1) -> refresh(RESTORE_SELECTION));
});
dialog.getForm().<String>getFormItem(NAME).addValidationHandler(createUniqueValidation());
dialog.show();
form.<String>getFormItem(GROUP).setValue(statementContext.selectedServerGroup());
}
});
});
}
}
use of org.jboss.hal.ballroom.form.TextBoxItem in project console by hal.
the class OtherSettingsPresenter method addCredentialStore.
// -------------------------------------------- Credential Store
void addCredentialStore() {
Metadata metadata = metadataRegistry.lookup(CREDENTIAL_STORE_TEMPLATE);
SafeHtml typeHelp = SafeHtmlUtils.fromString(metadata.getDescription().get(ATTRIBUTES).get(TYPE).get(DESCRIPTION).asString());
Metadata crMetadata = metadata.forComplexAttribute(CREDENTIAL_REFERENCE, true);
crMetadata.copyComplexAttributeAttributes(asList(STORE, ALIAS, TYPE, CLEAR_TEXT), metadata);
TextBoxItem typeItem = new TextBoxItem("type-", resources.constants().type());
String id = Ids.build(Ids.ELYTRON_CREDENTIAL_STORE, Ids.ADD);
NameItem nameItem = new NameItem();
ModelNodeForm<ModelNode> form = new ModelNodeForm.Builder<>(id, metadata).addOnly().unboundFormItem(nameItem, 0).include(CREATE, PATH, RELATIVE_TO, STORE, ALIAS, TYPE, CLEAR_TEXT).unboundFormItem(typeItem, 3, typeHelp).unsorted().build();
form.getFormItem(RELATIVE_TO).registerSuggestHandler(new PathsAutoComplete());
form.addFormValidation(new RequireAtLeastOneAttributeValidation<>(asList(STORE, CLEAR_TEXT), resources));
form.addFormValidation(form1 -> {
ValidationResult result = ValidationResult.OK;
String typeValue = typeItem.getValue();
FormItem<String> locationAttr = form1.getFormItem(PATH);
boolean invalidLocation = locationAttr.isEmpty() && (typeItem.isEmpty() || Collections.binarySearch(FILE_BASED_CS, typeValue) > -1);
if (invalidLocation) {
form1.getFormItem(PATH).showError(resources.constants().requiredField());
result = ValidationResult.invalid(resources.messages().pathRequired());
}
return result;
});
new AddResourceDialog(resources.messages().addResourceTitle(Names.CREDENTIAL_STORE), form, (name, model) -> {
if (model != null) {
move(model, STORE, CREDENTIAL_REFERENCE + "/" + STORE);
move(model, ALIAS, CREDENTIAL_REFERENCE + "/" + ALIAS);
move(model, TYPE, CREDENTIAL_REFERENCE + "/" + TYPE);
move(model, CLEAR_TEXT, CREDENTIAL_REFERENCE + "/" + CLEAR_TEXT);
}
if (!typeItem.isEmpty()) {
model.get(TYPE).set(typeItem.getValue());
}
ResourceAddress address = CREDENTIAL_STORE_TEMPLATE.resolve(statementContext, nameItem.getValue());
crud.add(Names.CREDENTIAL_STORE, name, address, model, (n, a) -> reload(CREDENTIAL_STORE, nodes -> getView().updateResourceElement(CREDENTIAL_STORE, nodes)));
}).show();
}
use of org.jboss.hal.ballroom.form.TextBoxItem in project console by hal.
the class OtherSettingsPresenter method addKeyStore.
// ------------------------------------------------------ key store
void addKeyStore() {
Metadata metadata = metadataRegistry.lookup(KEY_STORE_TEMPLATE);
Metadata crMetadata = metadata.forComplexAttribute(CREDENTIAL_REFERENCE, true);
crMetadata.copyComplexAttributeAttributes(asList(STORE, ALIAS, CLEAR_TEXT), metadata);
String id = Ids.build(Ids.ELYTRON_KEY_STORE, Ids.ADD);
NameItem nameItem = new NameItem();
// there is a special handling for "type" attribute, as this attribute name exists in key-store and
// credential-reference complex attribute. We must create an unbound form item for credential-reference-type
String crType = "credential-reference-type";
String crTypeLabel = new LabelBuilder().label(crType);
TextBoxItem crTypeItem = new TextBoxItem(crType, crTypeLabel);
SafeHtml crTypeItemHelp = SafeHtmlUtils.fromString(metadata.getDescription().get(ATTRIBUTES).get(CREDENTIAL_REFERENCE).get(VALUE_TYPE).get(TYPE).get(DESCRIPTION).asString());
ModelNodeForm<ModelNode> form = new ModelNodeForm.Builder<>(id, metadata).addOnly().unboundFormItem(nameItem, 0).include(TYPE, PATH, RELATIVE_TO, STORE, ALIAS, CLEAR_TEXT).unboundFormItem(crTypeItem, 7, crTypeItemHelp).unsorted().build();
form.getFormItem(RELATIVE_TO).registerSuggestHandler(new PathsAutoComplete());
form.addFormValidation(new RequireAtLeastOneAttributeValidation<>(asList(STORE, CLEAR_TEXT), resources));
new AddResourceDialog(resources.messages().addResourceTitle(Names.KEY_STORE), form, (name, model) -> {
if (model != null) {
move(model, STORE, CREDENTIAL_REFERENCE + "/" + STORE);
move(model, ALIAS, CREDENTIAL_REFERENCE + "/" + ALIAS);
move(model, CLEAR_TEXT, CREDENTIAL_REFERENCE + "/" + CLEAR_TEXT);
if (!crTypeItem.isEmpty()) {
model.get(CREDENTIAL_REFERENCE).get(TYPE).set(crTypeItem.getValue());
}
}
ResourceAddress address = KEY_STORE_TEMPLATE.resolve(statementContext, nameItem.getValue());
crud.add(Names.KEY_STORE, name, address, model, (n, a) -> reload(KEY_STORE, nodes -> getView().updateResourceElement(KEY_STORE, nodes)));
}).show();
}
use of org.jboss.hal.ballroom.form.TextBoxItem in project console by hal.
the class ReviewPasswordStep method onShow.
@Override
protected void onShow(PasswordContext context) {
AddressTemplate template = metadata.getTemplate();
Metadata passwordMetadata = metadata.forOperation(SET_PASSWORD).forComplexAttribute(context.type.name);
LabelBuilder labelBuilder = new LabelBuilder();
header.textContent = labelBuilder.label(context.type.name);
description.textContent = passwordMetadata.getDescription().getDescription();
String id = Ids.build(template.lastName(), SET_PASSWORD, "review", FORM);
ModelNodeForm.Builder<ModelNode> builder = new ModelNodeForm.Builder<>(id, passwordMetadata).readOnly();
passwordMetadata.getDescription().getAttributes(ATTRIBUTES).forEach(attr -> {
if (ModelType.BYTES.equals(attr.getValue().get(TYPE).asType())) {
builder.customFormItem(attr.getName(), desc -> new TextBoxItem(attr.getName(), labelBuilder.label(attr.getName())));
}
});
form = builder.build();
HTMLElement formElement = form.element();
form.attach();
form.view(context.model);
if (context.model.hasDefined(SALT)) {
form.getFormItem(SALT).setValue(context.model.get(SALT).asString());
}
// as the form is dynamically added to the section, we must remove the previous form element
if (section.childElementCount > 0) {
section.removeChild(section.lastChild);
}
section.appendChild(formElement);
}
use of org.jboss.hal.ballroom.form.TextBoxItem in project console by hal.
the class ServerActions method editUrl.
public void editUrl(Server server, Callback callback) {
Alert alert = new Alert(Icons.ERROR, resources.messages().serverUrlError());
HTMLElement info = p().element();
TextBoxItem urlItem = new TextBoxItem(URL, Names.URL);
Form<ModelNode> form = new ModelNodeForm.Builder<>(Ids.SERVER_URL_FORM, Metadata.empty()).unboundFormItem(urlItem).addOnly().onSave((f, changedValues) -> {
String url = urlItem.getValue();
if (Strings.isNullOrEmpty(url)) {
serverUrlStorage.remove(server.getHost(), server.getName());
} else {
serverUrlStorage.save(server.getHost(), server.getName(), url);
}
callback.execute();
}).build();
Dialog dialog = new Dialog.Builder(resources.constants().editURL()).add(alert.element()).add(info).add(form.element()).primary(form::save).cancel().closeIcon(true).closeOnEsc(true).build();
dialog.registerAttachable(form);
Elements.setVisible(alert.element(), false);
Elements.setVisible(info, false);
readUrl(server, new AsyncCallback<ServerUrl>() {
@Override
public void onFailure(Throwable caught) {
Elements.setVisible(alert.element(), true);
show(null);
}
@Override
public void onSuccess(ServerUrl serverUrl) {
if (serverUrl.isCustom()) {
info.innerHTML = resources.messages().serverUrlCustom().asString();
} else {
info.innerHTML = resources.messages().serverUrlManagementModel().asString();
}
Elements.setVisible(info, true);
show(serverUrl);
}
private void show(ServerUrl serverUrl) {
dialog.show();
form.edit(new ModelNode());
if (serverUrl != null) {
urlItem.setValue(serverUrl.getUrl());
}
}
});
}
Aggregations