Example usage for com.google.gwt.safehtml.shared SafeHtmlUtils fromString

List of usage examples for com.google.gwt.safehtml.shared SafeHtmlUtils fromString

Introduction

In this page you can find the example usage for com.google.gwt.safehtml.shared SafeHtmlUtils fromString.

Prototype

public static SafeHtml fromString(String s) 

Source Link

Document

Returns a SafeHtml containing the escaped string.

Usage

From source file:org.jboss.as.console.client.shared.hosts.ConfigurationChangesEditor.java

License:Open Source License

@SuppressWarnings("unchecked")
public Widget asWidget() {

    ProvidesKey<ModelNode> providesKey = node -> node.get("operation-date").asString();
    table = new DefaultCellTable<>(20, providesKey);

    dataProvider = new ListDataProvider<>(providesKey);
    dataProvider.addDataDisplay(table);//  www .j  a  v  a2s  .  c  o m

    // the date / time column
    table.addColumn(new TextColumn<ModelNode>() {
        @Override
        public String getValue(ModelNode item) {
            // the operation-date is 2016-07-08T22:39:50.783Z
            // there is some format to facilitate user experience 
            // by replacing the T with a blank space
            String opTimestamp = item.get("operation-date").asString();
            opTimestamp = opTimestamp.replaceFirst("T", " ");
            return opTimestamp;
        }
    }, "Date and time");

    // access-mechanism column
    TextColumn<ModelNode> accessMechanismColumn = createColumn("access-mechanism");
    accessMechanismColumn.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
    table.addColumn(accessMechanismColumn, "Access Mechanism");

    // remote address column
    TextColumn<ModelNode> remoteAddressColumn = new TextColumn<ModelNode>() {
        @Override
        public String getValue(ModelNode item) {
            // the remote address is 10.10.10.10/10.10.10.10
            // to facilitate user experience we cut at at first slash
            String clientAddress = item.get("remote-address").asString();
            clientAddress = clientAddress.substring(0, clientAddress.indexOf("/"));
            return clientAddress;
        }
    };
    remoteAddressColumn.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
    table.addColumn(remoteAddressColumn, "Remote address");

    // the resource address 
    TextColumn<ModelNode> resourceColumn = new TextColumn<ModelNode>() {
        @Override
        public String getValue(ModelNode item) {
            return StringUtils.shortenStringIfNecessary(extractResourceAddress(item), 63);
        }
    };
    table.addColumn(resourceColumn, "Resource address");
    table.setColumnWidth(resourceColumn, 50, Style.Unit.PCT);

    // operation column
    table.addColumn(new TextColumn<ModelNode>() {
        @Override
        public String getValue(ModelNode item) {
            return item.get(OPERATIONS).get(0).get(OP).asString();
        }
    }, "Operation");

    // result column
    table.addColumn(createColumn(OUTCOME), "Result");
    table.setTableLayoutFixed(false);

    // the details panel
    selectionModel = new SingleSelectionModel<>(providesKey);
    selectionModel.addSelectionChangeHandler(event -> {
        ModelNode changeDetails = selectionModel.getSelectedObject();
        if (changeDetails != null) {
            detailsConfigurationChange.setValue(changeDetails.toString());
        }
    });
    table.setSelectionModel(selectionModel);

    detailsConfigurationChange = new TextAreaItem("details", "Details 1", 20);
    detailsConfigurationChange.setEnabled(false);

    HorizontalPanel header = new HorizontalPanel();
    header.addStyleName("fill-layout-width");
    header.add(new HTML("<h3 class='metric-label-embedded'>Configuration change details</h3>"));

    VerticalPanel detailsPanel = new VerticalPanel();
    detailsPanel.addStyleName("metric-container");
    detailsPanel.add(header);
    detailsPanel.add(detailsConfigurationChange.asWidget());

    // ======================
    DefaultPager pager = new DefaultPager();
    pager.setDisplay(table);

    VerticalPanel tableAndPager = new VerticalPanel();
    tableAndPager.setStyleName("fill-layout-width");
    tableAndPager.add(table);
    tableAndPager.add(pager);

    SimpleLayout layout = new SimpleLayout().setPlain(true).setHeadline("Configuration Changes")
            .setDescription(SafeHtmlUtils.fromString(Console.MESSAGES.configuration_changes_description()))
            .addContent("", toolstripButtons()).addContent("", tableAndPager).addContent("", detailsPanel);

    return layout.build();
}

From source file:org.jboss.as.console.client.shared.patching.ui.ErrorDetails.java

License:Open Source License

public void setDetails(String details) {
    this.details.setValue(SafeHtmlUtils.fromString(details));
}

From source file:org.jboss.as.console.client.shared.patching.wizard.apply.SelectPatchStep.java

License:Open Source License

@Override
protected void onNext(ApplyContext context) {
    errorMessages.setVisible(false);//from   w w w  . j  a  v  a  2  s  .com
    context.filename = SafeHtmlUtils.fromString(context.fileUpload.getFilename()).asString();
    if (context.filename == null || context.filename.length() == 0) {
        errorMessages.setVisible(true);
    } else {
        super.onNext(context);
    }
}

From source file:org.jboss.as.console.client.shared.runtime.elytron.ElytronGenericStoreRuntimeResourceView.java

License:Apache License

public Widget asWidget() {

    ToolStrip tools = new ToolStrip();
    tools.addToolButtonRight(new ToolButton(Console.CONSTANTS.common_label_refresh(),
            event -> presenter.loadCredentialReferences()));

    ProvidesKey<Property> providesKey = Property::getName;
    table = new DefaultCellTable<>(10, providesKey);
    dataProvider = new ListDataProvider<>(providesKey);
    dataProvider.addDataDisplay(table);/*w  ww  .j av  a2  s . c  o  m*/
    selectionModel = new SingleSelectionModel<>(providesKey);
    TextColumn<Property> nameColumn = new TextColumn<Property>() {
        @Override
        public String getValue(Property node) {
            return node.getName();
        }
    };
    TextColumn<Property> stateColumn = new TextColumn<Property>() {
        @Override
        public String getValue(Property node) {
            return node.getValue().get("state").asString();
        }
    };
    table.addColumn(nameColumn, "Name");
    table.addColumn(stateColumn, "State");
    stateColumn.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
    table.setColumnWidth(stateColumn, 20, Style.Unit.PCT);

    DefaultPager pager = new DefaultPager();
    pager.setDisplay(table);

    MultipleToOneLayout layoutBuilder = new MultipleToOneLayout().setPlain(true).setHeadline(title)
            .setDescription(SafeHtmlUtils.fromString(resourceDescription.get(DESCRIPTION).asString()))
            .setMasterTools(tools).setMaster(Console.MESSAGES.available(title), table)
            .addDetail("Aliases", aliasEditor.asWidget());

    selectionModel.addSelectionChangeHandler(event -> {
        Property selectedProperty = selectionModel.getSelectedObject();
        if (selectedProperty != null) {
            aliasEditor.setCredentialReferenceName(selectedProperty.getName());
            presenter.loadAliases(ElytronRuntimePresenter.CREDENTIAL_STORE_TEMPLATE,
                    selectedProperty.getName());
        } else {
            aliasEditor.setCredentialReferenceName(null);
            aliasEditor.clearValues();
        }
    });
    table.setSelectionModel(selectionModel);

    return layoutBuilder.build();
}

From source file:org.jboss.as.console.client.shared.subsys.activemq.GenericResourceView.java

License:Apache License

public Widget asWidget() {

    headerLabel = new ContentHeaderLabel();
    ToolStrip tools = new ToolStrip();
    tools.addToolButtonRight(new ToolButton(Console.CONSTANTS.common_label_add(), event -> launchAddDialog()));
    tools.addToolButtonRight(new ToolButton(Console.CONSTANTS.common_label_delete(), event -> {
        if (selectionModel.getSelectedObject() != null) {
            String name = selectionModel.getSelectedObject().getName();
            Feedback.confirm(Console.MESSAGES.deleteTitle(title),
                    Console.MESSAGES.deleteConfirm(title + " '" + name + "'"), isConfirmed -> {
                        if (isConfirmed) {
                            presenter.onRemoveResource(addressTemplate, name);
                            presenter.loadDetails();
                        }//from   ww w .j  a va 2  s .c  om
                    });
        }
    }));

    ProvidesKey<Property> providesKey = Property::getName;
    table = new DefaultCellTable<>(5, providesKey);
    dataProvider = new ListDataProvider<>(providesKey);
    dataProvider.addDataDisplay(table);
    selectionModel = new SingleSelectionModel<>(providesKey);
    TextColumn<Property> nameColumn = new TextColumn<Property>() {
        @Override
        public String getValue(Property node) {
            return node.getName();
        }
    };
    table.addColumn(nameColumn, "Name");

    DefaultPager pager = new DefaultPager();
    pager.setDisplay(table);

    securityContext = presenter.getSecurityFramework()
            .getSecurityContext(NameTokens.ActivemqMsgClusteringPresenter);

    ModelNodeFormBuilder formBuilder = new ModelNodeFormBuilder().setConfigOnly().createValidators(true)
            .setResourceDescription(resourceDescription).setSecurityContext(securityContext);

    customEditFormBuilder(formBuilder);

    modelForm = formBuilder.build();
    modelForm.getForm().addFormValidator((formItemList, formValidation) -> {
        addFormValidatorOnAddDialog(formItemList, formValidation);
    });

    List<String> forItems = modelForm.getForm().getFormItemNames();
    int numberOfFormItems = forItems.size();

    MultipleToOneLayout layoutBuilder = new MultipleToOneLayout().setPlain(true).setHeadlineWidget(headerLabel)
            .setDescription(SafeHtmlUtils.fromString(resourceDescription.get(DESCRIPTION).asString()))
            .setMasterTools(tools).setMaster(Console.MESSAGES.available(title), table);

    if (numberOfFormItems > 0) {
        modelForm.getForm().setToolsCallback(new FormCallback() {
            @Override
            @SuppressWarnings("unchecked")
            public void onSave(final Map changeset) {
                presenter.onSaveResource(addressTemplate, selectionModel.getSelectedObject().getName(),
                        changeset);
                presenter.loadDetails();
            }

            @Override
            public void onCancel(final Object entity) {
                modelForm.getForm().cancel();
            }
        });

        layoutBuilder.addDetail(Console.CONSTANTS.common_label_attributes(), modelForm.asWidget());
    }

    Map<String, Widget> tabDetails = additionalTabDetails();
    for (String detailName : tabDetails.keySet()) {
        layoutBuilder.addDetail(detailName, tabDetails.get(detailName));
    }

    selectionModel.addSelectionChangeHandler(event -> {
        Property selectedProperty = selectionModel.getSelectedObject();
        if (selectedProperty != null) {
            modelForm.getForm().edit(selectedProperty.getValue());
        } else {
            modelForm.getForm().clearValues();
        }
        selectTableItem(selectedProperty);
    });
    table.setSelectionModel(selectionModel);

    return layoutBuilder.build();
}

From source file:org.jboss.as.console.client.shared.subsys.activemq.JMSBridgeList.java

License:Open Source License

@SuppressWarnings("unchecked")
Widget asWidget() {//from  ww  w.ja  v  a 2 s. c  om
    TextColumn<Property> nameColumn = new TextColumn<Property>() {
        @Override
        public String getValue(Property node) {
            return node.getName();
        }
    };
    table.addColumn(nameColumn, "Name");

    SecurityContext securityContext = Console.MODULES.getSecurityFramework()
            .getSecurityContext(presenter.getProxy().getNameToken());
    ResourceDescription definition = presenter.getDescriptionRegistry().lookup(JMSBRIDGE_TEMPLATE);

    formAssets = new ModelNodeFormBuilder().setConfigOnly()
            // they are complex attributes
            .exclude("source-context", "target-context", "source-credential-reference",
                    "target-credential-reference")
            .setResourceDescription(definition).setSecurityContext(securityContext)
            .addFactory("source-password",
                    attributeDescription -> new PasswordBoxItem("source-password", "Source Password", false))
            .addFactory("target-password",
                    attributeDescription -> new PasswordBoxItem("target-password", "Target Password", false))
            .build();

    // this is the save operation when the user click at the "edit" link
    formAssets.getForm().setToolsCallback(new FormCallback() {
        @Override
        public void onSave(Map changeset) {
            presenter.onSaveJmsBridge(getSelectedEntity().getName(), changeset);
        }

        @Override
        public void onCancel(Object entity) {
            formAssets.getForm().cancel();
        }
    });

    // this filter is called at a later time, to resolve the selected item name
    // from the table list.
    JMSBridgeSelectionAwareContext jmsBridgeSelectionContext = new JMSBridgeSelectionAwareContext(
            presenter.getStatementContext(), this);

    AddressTemplate jmsBridgeTemplate = JMSBRIDGE_TEMPLATE
            .replaceWildcards(JMSBridgeSelectionAwareContext.SELECTED_ENTITY);

    sourceCredentialRefForm = createComplexForm("source-credential-reference");
    targetCredentialRefForm = createComplexForm("target-credential-reference");

    // cross validate the forms, as there are "alternatives" metadata for the password.
    formAssets.getForm().addFormValidator(new CredentialReferenceAlternativesFormValidation("source-password",
            sourceCredentialRefForm.getForm(), "Source Credential Reference", true));
    sourceCredentialRefForm.getForm().addFormValidator(new CredentialReferenceAlternativesFormValidation(
            "source-password", formAssets.getForm(), "Attributes", false));

    formAssets.getForm().addFormValidator(new CredentialReferenceAlternativesFormValidation("target-password",
            targetCredentialRefForm.getForm(), "Target Credential Reference", true));
    sourceCredentialRefForm.getForm().addFormValidator(new CredentialReferenceAlternativesFormValidation(
            "target-password", formAssets.getForm(), "Attributes", false));

    // there are two attributes source-context,target-context, they are of type=OBJECT and value-type=STRING
    // they store key=value properties
    // then, they are added as PropertyEditor
    sourceContextEditor = buildProperties("source-context", jmsBridgeSelectionContext, jmsBridgeTemplate);
    targetContextEditor = buildProperties("target-context", jmsBridgeSelectionContext, jmsBridgeTemplate);

    MultipleToOneLayout layout = new MultipleToOneLayout().setPlain(true).setHeadline("JMS Bridges")
            .setDescription(SafeHtmlUtils.fromString(definition.get(DESCRIPTION).asString()))
            .setMaster("", table).setMasterTools(tableButtons())
            .addDetail(Console.CONSTANTS.common_label_attributes(), formAssets.asWidget())
            .addDetail("Source Context", sourceContextEditor.asWidget())
            .addDetail("Target Context", targetContextEditor.asWidget())
            .addDetail("Source Credential Reference", sourceCredentialRefForm.asWidget())
            .addDetail("Target Credential Reference", targetCredentialRefForm.asWidget());

    selectionModel.addSelectionChangeHandler(event -> updatePropertiesData(null));

    return layout.build();
}

From source file:org.jboss.as.console.client.shared.subsys.batch.ui.ThreadFactoriesPanel.java

License:Open Source License

@SuppressWarnings("unchecked")
ThreadFactoriesPanel(final StatementContext statementContext, final SecurityContext securityContext,
        final BatchPresenter presenter) {

    ToolStrip tools = new ToolStrip();
    tools.addToolButtonRight(new ToolButton(Console.CONSTANTS.common_label_add(), new ClickHandler() {
        @Override/*from   www  .  ja va  2s  .  com*/
        public void onClick(ClickEvent event) {
            presenter.launchAddThreadFactory();
        }
    }));
    tools.addToolButtonRight(new ToolButton(Console.CONSTANTS.common_label_delete(), new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            final String name = selectionModel.getSelectedObject().getName();
            Feedback.confirm(Console.MESSAGES.deleteTitle("Thread Factory"),
                    Console.MESSAGES.deleteConfirm("Thread Factory '" + name + "'"),
                    new Feedback.ConfirmationHandler() {
                        @Override
                        public void onConfirmation(boolean isConfirmed) {
                            if (isConfirmed) {
                                presenter.removeThreadFactory(name);
                            }
                        }
                    });
        }
    }));

    providesKey = new ProvidesKey<Property>() {
        @Override
        public Object getKey(Property item) {
            return item.getName();
        }
    };
    table = new DefaultCellTable<>(5, providesKey);
    dataProvider = new ListDataProvider<Property>(providesKey);
    dataProvider.addDataDisplay(table);
    selectionModel = new SingleSelectionModel<Property>(providesKey);
    table.setSelectionModel(selectionModel);
    TextColumn<Property> nameColumn = new TextColumn<Property>() {
        @Override
        public String getValue(Property node) {
            return node.getName();
        }
    };
    table.addColumn(nameColumn, "Name");

    final BatchResourceForm details = new BatchResourceForm(BatchStore.THREAD_FACTORIES_ADDRESS,
            statementContext, securityContext) {
        @Override
        void onSave(Map<String, Object> changedValues) {
            presenter.modifyThreadFactory(selectionModel.getSelectedObject().getName(), changedValues);
        }
    };
    selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
        @Override
        public void onSelectionChange(SelectionChangeEvent event) {
            if (details.getForm() != null) {
                Property worker = selectionModel.getSelectedObject();
                if (worker != null) {
                    details.getForm().edit(worker.getValue());
                } else {
                    details.getForm().clearValues();
                }
            }
        }
    });

    MultipleToOneLayout layoutBuilder = new MultipleToOneLayout().setPlain(true).setHeadline("Thread Factories")
            .setDescription(
                    SafeHtmlUtils.fromString("Please chose a thread factory from below for specific settings."))
            .setMasterTools(tools).setMaster(Console.MESSAGES.available("Thread Factory"), table)
            .addDetail(Console.CONSTANTS.common_label_attributes(), details);
    initWidget(layoutBuilder.build());
}

From source file:org.jboss.as.console.client.shared.subsys.elytron.ui.ElytronGenericResourceView.java

License:Apache License

public Widget asWidget() {

    ToolStrip tools = new ToolStrip();
    tools.addToolButtonRight(new ToolButton(Console.CONSTANTS.common_label_add(), event -> onAdd()));
    tools.addToolButtonRight(new ToolButton(Console.CONSTANTS.common_label_delete(), event -> {
        if (selectionModel.getSelectedObject() != null) {
            String name = selectionModel.getSelectedObject().getName();
            Feedback.confirm(Console.MESSAGES.deleteTitle(title),
                    Console.MESSAGES.deleteConfirm(title + " '" + name + "'"), isConfirmed -> {
                        if (isConfirmed) {
                            circuit.dispatch(new RemoveResourceGeneric(addressTemplate, name));
                        }// w  ww.jav a2 s. c  o m
                    });
        }
    }));

    ProvidesKey<Property> providesKey = Property::getName;
    table = new DefaultCellTable<>(5, providesKey);
    dataProvider = new ListDataProvider<>(providesKey);
    dataProvider.addDataDisplay(table);
    selectionModel = new SingleSelectionModel<>(providesKey);
    TextColumn<Property> nameColumn = new TextColumn<Property>() {
        @Override
        public String getValue(Property node) {
            return node.getName();
        }
    };
    table.addColumn(nameColumn, "Name");

    DefaultPager pager = new DefaultPager();
    pager.setDisplay(table);

    ModelNodeFormBuilder formBuilder = new ModelNodeFormBuilder().setConfigOnly().createValidators(true)
            .setResourceDescription(resourceDescription).exclude(excludes.toArray(new String[excludes.size()]))
            .setSecurityContext(securityContext);
    modelForm = formBuilder.build();
    modelForm.getForm().addFormValidator((formItemList, formValidation) -> {
        addFormValidatorOnAddDialog(formItemList, formValidation);
    });

    List<String> forItems = modelForm.getForm().getFormItemNames();
    int numberOfFormItems = forItems.size();

    MultipleToOneLayout layoutBuilder = new MultipleToOneLayout().setPlain(true).setHeadline(title)
            .setDescription(SafeHtmlUtils.fromString(resourceDescription.get(DESCRIPTION).asString()))
            .setMasterTools(tools).setMaster(Console.MESSAGES.available(title), table);

    if (numberOfFormItems > 0) {
        modelForm.getForm().setToolsCallback(new FormCallback() {
            @Override
            @SuppressWarnings("unchecked")
            public void onSave(final Map changeset) {
                circuit.dispatch(new ModifyResourceGeneric(addressTemplate,
                        selectionModel.getSelectedObject().getName(), changeset));
            }

            @Override
            public void onCancel(final Object entity) {
                modelForm.getForm().cancel();
            }
        });

        layoutBuilder.addDetail(Console.CONSTANTS.common_label_attributes(), modelForm.asWidget());
    }

    Map<String, Widget> tabDetails = additionalTabDetails();
    for (String detailName : tabDetails.keySet()) {
        layoutBuilder.addDetail(detailName, tabDetails.get(detailName));
    }

    selectionModel.addSelectionChangeHandler(event -> {
        Property selectedProperty = selectionModel.getSelectedObject();
        if (selectedProperty != null) {
            modelForm.getForm().edit(selectedProperty.getValue());
        } else {
            modelForm.getForm().clearValues();
        }
        selectTableItem(selectedProperty);
    });
    table.setSelectionModel(selectionModel);

    return layoutBuilder.build();
}

From source file:org.jboss.as.console.client.shared.subsys.elytron.ui.JdbcRealmView.java

License:Apache License

public Widget asWidget() {

    ToolStrip tools = new ToolStrip();
    tools.addToolButtonRight(new ToolButton(Console.CONSTANTS.common_label_add(), event -> onAdd()));
    tools.addToolButtonRight(new ToolButton(Console.CONSTANTS.common_label_delete(), event -> {
        if (selectionModel.getSelectedObject() != null) {
            String name = selectionModel.getSelectedObject().getName();
            Feedback.confirm(Console.MESSAGES.deleteTitle("JDBC Realm"),
                    Console.MESSAGES.deleteConfirm("JDBC Realm" + " '" + name + "'"), isConfirmed -> {
                        if (isConfirmed) {
                            circuit.dispatch(new RemoveResourceGeneric(ElytronStore.JDBC_REALM_ADDRESS, name));
                        }/*from   w w  w.  j a  v a 2 s  .  com*/
                    });
        }
    }));

    ProvidesKey<Property> providesKey = Property::getName;
    table = new DefaultCellTable<>(5, providesKey);
    dataProvider = new ListDataProvider<>(providesKey);
    dataProvider.addDataDisplay(table);
    selectionModel = new SingleSelectionModel<>(providesKey);
    table.setSelectionModel(selectionModel);
    TextColumn<Property> nameColumn = new TextColumn<Property>() {
        @Override
        public String getValue(Property node) {
            return node.getName();
        }
    };
    table.addColumn(nameColumn, "Name");

    DefaultPager pager = new DefaultPager();
    pager.setDisplay(table);

    principalsQueryViewView = new JdbcRealmPrincipalsQueryView(circuit, resourceDescription, securityContext);

    MultipleToOneLayout layoutBuilder = new MultipleToOneLayout().setPlain(true).setHeadline("JDBC Realm")
            .setDescription(SafeHtmlUtils.fromString(resourceDescription.get(DESCRIPTION).asString()))
            .setMasterTools(tools).setMaster(Console.MESSAGES.available("JDBC Realm"), table)
            .addDetail("Principals Query", principalsQueryViewView.asWidget());

    selectionModel.addSelectionChangeHandler(event -> {
        Property selected = selectionModel.getSelectedObject();
        if (selected != null) {
            principalsQueryViewView.update(selected);
        } else {
            principalsQueryViewView.clearValues();
        }
    });
    table.setSelectionModel(selectionModel);

    return layoutBuilder.build();
}

From source file:org.jboss.as.console.client.shared.subsys.elytron.ui.LdapRealmView.java

License:Apache License

public Widget asWidget() {

    ToolStrip tools = new ToolStrip();
    tools.addToolButtonRight(new ToolButton(Console.CONSTANTS.common_label_add(), event -> onAdd()));
    tools.addToolButtonRight(new ToolButton(Console.CONSTANTS.common_label_delete(), event -> {
        if (selectionModel.getSelectedObject() != null) {
            String name = selectionModel.getSelectedObject().getName();
            Feedback.confirm(Console.MESSAGES.deleteTitle("LDAP Realm"),
                    Console.MESSAGES.deleteConfirm("LDAP Realm" + " '" + name + "'"), isConfirmed -> {
                        if (isConfirmed) {
                            circuit.dispatch(new RemoveResourceGeneric(ElytronStore.LDAP_REALM_ADDRESS, name));
                        }//from  w w  w  .  jav  a 2  s  .  c  om
                    });
        }
    }));

    ProvidesKey<Property> providesKey = Property::getName;
    table = new DefaultCellTable<>(5, providesKey);
    dataProvider = new ListDataProvider<>(providesKey);
    dataProvider.addDataDisplay(table);
    selectionModel = new SingleSelectionModel<>(providesKey);
    table.setSelectionModel(selectionModel);
    TextColumn<Property> nameColumn = new TextColumn<Property>() {
        @Override
        public String getValue(Property node) {
            return node.getName();
        }
    };
    table.addColumn(nameColumn, "Name");

    DefaultPager pager = new DefaultPager();
    pager.setDisplay(table);

    identityMappingFormAsset = new ComplexAttributeForm("identity-mapping", securityContext,
            resourceDescription)
                    .exclude("attribute-mapping", "new-identity-attributes", "otp-credential-mapper",
                            "user-password-mapper", "x509-credential-mapper")
                    .build();
    ModelNode nodeIdenMapping = resourceDescription.get("attributes").get("identity-mapping").get("value-type");

    ResourceDescription userPasswordMapperResource = new ResourceDescription(new ModelNode());
    userPasswordMapperResource.get(ATTRIBUTES).set(nodeIdenMapping);

    userPasswordMapperFormAsset = new ComplexAttributeForm("user-password-mapper", securityContext,
            userPasswordMapperResource).build();

    ResourceDescription otpCredentialMapperResource = new ResourceDescription(new ModelNode());
    otpCredentialMapperResource.get(ATTRIBUTES).set(nodeIdenMapping);

    otpCredentialMapperFormAsset = new ComplexAttributeForm("otp-credential-mapper", securityContext,
            otpCredentialMapperResource).build();

    ModelNodeFormBuilder formBuilder = new ModelNodeFormBuilder().setConfigOnly().exclude("identity-mapping")
            .setResourceDescription(resourceDescription).setSecurityContext(securityContext);
    modelForm = formBuilder.build();

    modelForm.getForm().setToolsCallback(new FormCallback() {
        @Override
        @SuppressWarnings("unchecked")
        public void onSave(final Map changeset) {
            circuit.dispatch(new ModifyResourceGeneric(ElytronStore.LDAP_REALM_ADDRESS,
                    selectionModel.getSelectedObject().getName(), changeset));
        }

        @Override
        public void onCancel(final Object entity) {
            modelForm.getForm().cancel();
        }
    });

    identityAttributeMappingView = new IdentityAttributeMappingView();
    newIdentityAttributesView = new NewIdentityAttributesView();

    MultipleToOneLayout layoutBuilder = new MultipleToOneLayout().setPlain(true).setHeadline("LDAP Realm")
            .setDescription(SafeHtmlUtils.fromString(resourceDescription.get(DESCRIPTION).asString()))
            .setMasterTools(tools).setMaster(Console.MESSAGES.available("LDAP Realm"), table)
            .addDetail(Console.CONSTANTS.common_label_attributes(), modelForm.asWidget())
            .addDetail("Identity Mapping", identityMappingFormAsset.asWidget())
            .addDetail("Identity Attribute Mapping", identityAttributeMappingView.asWidget())
            .addDetail("New Identity Attributes", newIdentityAttributesView.asWidget())
            .addDetail("User Password Mapper", userPasswordMapperFormAsset.asWidget())
            .addDetail("OTP Credential Mapper", otpCredentialMapperFormAsset.asWidget());

    selectionModel.addSelectionChangeHandler(event -> {
        Property node = selectionModel.getSelectedObject();
        if (node != null) {
            modelForm.getForm().edit(node.getValue());
            if (node.getValue().hasDefined("identity-mapping"))
                identityMappingFormAsset.getForm().edit(node.getValue().get("identity-mapping"));

            if (node.getValue().get("identity-mapping").hasDefined("attribute-mapping"))
                identityAttributeMappingView
                        .update(node.getValue().get("identity-mapping").get("attribute-mapping").asList());
            else
                identityAttributeMappingView.clearValues();

            if (node.getValue().get("identity-mapping").hasDefined("new-identity-attributes"))
                identityAttributeMappingView.update(
                        node.getValue().get("identity-mapping").get("new-identity-attributes").asList());
            else
                identityAttributeMappingView.clearValues();

            if (node.getValue().get("identity-mapping").hasDefined("user-password-mapper"))
                userPasswordMapperFormAsset.getForm()
                        .edit(node.getValue().get("identity-mapping").get("user-password-mapper"));
            else
                userPasswordMapperFormAsset.getForm().clearValues();

            if (node.getValue().get("identity-mapping").hasDefined("otp-credential-mapper"))
                otpCredentialMapperFormAsset.getForm()
                        .edit(node.getValue().get("identity-mapping").get("otp-credential-mapper"));
            else
                otpCredentialMapperFormAsset.getForm().clearValues();
        } else {
            modelForm.getForm().clearValues();
            identityMappingFormAsset.getForm().clearValues();
            identityAttributeMappingView.clearValues();
            newIdentityAttributesView.clearValues();
            userPasswordMapperFormAsset.getForm().clearValues();
            otpCredentialMapperFormAsset.getForm().clearValues();
        }
    });
    table.setSelectionModel(selectionModel);

    return layoutBuilder.build();
}