List of usage examples for com.google.gwt.view.client SingleSelectionModel SingleSelectionModel
public SingleSelectionModel(ProvidesKey<T> keyProvider)
From source file:org.jboss.as.console.client.shared.subsys.elytron.ui.IdentityAttributeMappingView.java
License:Open Source License
IdentityAttributeMappingView() { this.nameProvider = modelNode -> modelNode.get("from"); selectionModel = new SingleSelectionModel<>(nameProvider); }
From source file:org.jboss.as.console.client.shared.subsys.elytron.ui.JdbcRealmPrincipalsQueryView.java
License:Open Source License
JdbcRealmPrincipalsQueryView(final Dispatcher circuit, ResourceDescription resourceDescription, SecurityContext securityContext) { this.circuit = circuit; this.securityContext = securityContext; this.nameProvider = modelNode -> modelNode.get("sql"); selectionModel = new SingleSelectionModel<>(nameProvider); this.resourceDescription = new ResourceDescription(resourceDescription.clone()); ModelNode reqPropsDescription = this.resourceDescription.get("operations").get("add") .get("request-properties"); ModelNode filtersDescription = reqPropsDescription.get("principal-query").get("value-type"); reqPropsDescription.set(filtersDescription); }
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)); }//w ww .j a v a 2s . 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 ww w . j ava 2 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); 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(); }
From source file:org.jboss.as.console.client.shared.subsys.elytron.ui.NewIdentityAttributesView.java
License:Open Source License
NewIdentityAttributesView() { this.nameProvider = modelNode -> modelNode.get("name"); selectionModel = new SingleSelectionModel<>(nameProvider); }
From source file:org.jboss.as.console.client.shared.subsys.elytron.ui.PolicyView.java
License:Apache License
@SuppressWarnings("unchecked") public Widget asWidget() { ToolStrip tools = new ToolStrip(); addButton = new ToolButton(Console.CONSTANTS.common_label_add(), event -> onAdd()); tools.addToolButtonRight(addButton); 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)); }/*from w w w . j a v a 2 s. c o m*/ }); } })); ProvidesKey<Property> providesKey = Property::getName; table = new DefaultCellTable<>(5, providesKey); dataProvider = new ListDataProvider<>(providesKey); dataProvider.addDataDisplay(table); TextColumn<Property> nameColumn = new TextColumn<Property>() { @Override public String getValue(Property node) { return node.getName(); } }; TextColumn<Property> typeColumn = new TextColumn<Property>() { @Override public String getValue(Property node) { if (node.getValue().hasDefined(CUSTOM_POLICY)) { return "Custom Policy"; } else if (node.getValue().hasDefined(JACC_POLICY)) { return "JACC Policy"; } else { return "n/a"; } } }; table.addColumn(nameColumn, "Name"); table.addColumn(typeColumn, "Type"); DefaultPager pager = new DefaultPager(); pager.setDisplay(table); selectionModel = new SingleSelectionModel<>(providesKey); selectionModel.addSelectionChangeHandler(event -> { Property selectedProperty = selectionModel.getSelectedObject(); if (selectedProperty != null) { if (selectedProperty.getValue().hasDefined(CUSTOM_POLICY)) { forms.showWidget(1); } else if (selectedProperty.getValue().hasDefined(JACC_POLICY)) { forms.showWidget(2); } else { forms.showWidget(0); } } else { forms.showWidget(0); } selectTableItem(selectedProperty); }); table.setSelectionModel(selectionModel); ResourceDescription customPolicyDescription = complexAttributeDescription(resourceDescription, CUSTOM_POLICY); ModelNodeFormBuilder customPolicyFormBuilder = new ModelNodeFormBuilder().include("class-name", "module") .unsorted().setResourceDescription(customPolicyDescription).setSecurityContext(securityContext); customPolicyForm = customPolicyFormBuilder.build(); customPolicyForm.getForm().setToolsCallback(new FormCallback() { @Override @SuppressWarnings("unchecked") public void onSave(Map changeset) { circuit.dispatch(new ModifyComplexAttribute(addressTemplate, CUSTOM_POLICY, selectionModel.getSelectedObject().getName(), payload(changeset))); } @Override public void onCancel(final Object entity) { customPolicyForm.getForm().cancel(); } }); ResourceDescription jaccPolicyDescription = complexAttributeDescription(resourceDescription, JACC_POLICY); ModelNodeFormBuilder jaccPolicyFormBuilder = new ModelNodeFormBuilder() .include("policy", "configuration-factory", "module").unsorted() .setResourceDescription(jaccPolicyDescription).setSecurityContext(securityContext); jaccPolicyForm = jaccPolicyFormBuilder.build(); jaccPolicyForm.getForm().setToolsCallback(new FormCallback() { @Override @SuppressWarnings("unchecked") public void onSave(Map changeset) { circuit.dispatch(new ModifyComplexAttribute(addressTemplate, JACC_POLICY, selectionModel.getSelectedObject().getName(), payload(changeset))); } @Override public void onCancel(final Object entity) { jaccPolicyForm.getForm().cancel(); } }); forms = new DeckPanel(); forms.add(new Label()); forms.add(customPolicyForm.asWidget()); forms.add(jaccPolicyForm.asWidget()); forms.showWidget(0); MultipleToOneLayout layoutBuilder = new MultipleToOneLayout().setPlain(true).setHeadline(title) .setDescription(SafeHtmlUtils.fromString(resourceDescription.get(DESCRIPTION).asString())) .setMasterTools(tools).setMaster(Console.MESSAGES.available(title), table) .addDetail(Console.CONSTANTS.common_label_attributes(), forms.asWidget()); return layoutBuilder.build(); }
From source file:org.jboss.as.console.client.shared.subsys.elytron.ui.PropertiesRealmView.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("Properties Realm"), Console.MESSAGES.deleteConfirm("Properties Realm" + " '" + name + "'"), isConfirmed -> { if (isConfirmed) { circuit.dispatch( new RemoveResourceGeneric(ElytronStore.PROPERTIES_REALM_ADDRESS, name)); }/*from w ww .ja v a 2 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); 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); ModelNodeFormBuilder formBuilder = new ModelNodeFormBuilder().setResourceDescription(resourceDescription) .exclude("groups-properties", "users-properties").setConfigOnly() .setSecurityContext(securityContext); modelFormAsset = formBuilder.build(); modelFormAsset.getForm().setToolsCallback(new FormCallback() { @Override @SuppressWarnings("unchecked") public void onSave(final Map changeset) { circuit.dispatch(new ModifyResourceGeneric(ElytronStore.PROPERTIES_REALM_ADDRESS, selectionModel.getSelectedObject().getName(), changeset)); } @Override public void onCancel(final Object entity) { modelFormAsset.getForm().cancel(); } }); groupsPropertiesFormAssets = new ComplexAttributeForm("groups-properties", securityContext, resourceDescription).build(); usersPropertiesFormAssets = new ComplexAttributeForm("users-properties", securityContext, resourceDescription).build(); groupsPropertiesFormAssets.getForm().setToolsCallback(new FormCallback() { @Override @SuppressWarnings("unchecked") public void onSave(final Map changeset) { circuit.dispatch(new ModifyComplexAttribute(ElytronStore.PROPERTIES_REALM_ADDRESS, "groups-properties", selectionModel.getSelectedObject().getName(), handleUndefinedProperties(groupsPropertiesFormAssets.getForm().getUpdatedEntity()))); } @Override public void onCancel(final Object entity) { groupsPropertiesFormAssets.getForm().cancel(); } }); groupsPropertiesFormAssets.getForm().addFormValidator((items, outcome) -> { // "path" is a required attribute, if "relative-to" is set "path" must be set as well Collections.sort(items, (a, b) -> a.getName().compareTo(b.getName())); FormItem path = items.get(0); FormItem relativeTo = items.get(1); if (!relativeTo.isUndefined() && path.isUndefined()) { path.setErrMessage("Must be set if \"Relative to\" is set"); path.setErroneous(true); outcome.addError("path"); } }); usersPropertiesFormAssets.getForm().setToolsCallback(new FormCallback() { @Override @SuppressWarnings("unchecked") public void onSave(final Map changeset) { circuit.dispatch(new ModifyComplexAttribute(ElytronStore.PROPERTIES_REALM_ADDRESS, "users-properties", selectionModel.getSelectedObject().getName(), usersPropertiesFormAssets.getForm().getUpdatedEntity())); } @Override public void onCancel(final Object entity) { usersPropertiesFormAssets.getForm().cancel(); } }); VerticalPanel formPanel = new VerticalPanel(); formPanel.setStyleName("fill-layout-width"); formPanel.add(modelFormAsset.getHelp().asWidget()); formPanel.add(modelFormAsset.getForm().asWidget()); MultipleToOneLayout layoutBuilder = new MultipleToOneLayout().setPlain(true).setHeadline("Properties Realm") .setDescription(SafeHtmlUtils.fromString(resourceDescription.get(DESCRIPTION).asString())) .setMasterTools(tools).setMaster(Console.MESSAGES.available("Properties Realm"), table) .addDetail(Console.CONSTANTS.common_label_attributes(), modelFormAsset.asWidget()) .addDetail("Users Properties", usersPropertiesFormAssets.asWidget()) .addDetail("Groups Properties", groupsPropertiesFormAssets.asWidget()); selectionModel.addSelectionChangeHandler(event -> { Property currentProp = selectionModel.getSelectedObject(); if (currentProp != null) { modelFormAsset.getForm().edit(currentProp.getValue()); if (currentProp.getValue().hasDefined("groups-properties")) groupsPropertiesFormAssets.getForm().edit(currentProp.getValue().get("groups-properties")); else groupsPropertiesFormAssets.getForm().edit(getEmptyProperties()); if (currentProp.getValue().hasDefined("users-properties")) usersPropertiesFormAssets.getForm().edit(currentProp.getValue().get("users-properties")); } else { modelFormAsset.getForm().clearValues(); groupsPropertiesFormAssets.getForm().clearValues(); usersPropertiesFormAssets.getForm().clearValues(); } }); table.setSelectionModel(selectionModel); return layoutBuilder.build(); }
From source file:org.jboss.as.console.client.shared.subsys.io.IOPanel.java
License:Open Source License
@SuppressWarnings("unchecked") public IOPanel(AddressTemplate address, IOPresenter presenter) { this.address = address; this.presenter = presenter; this.providesKey = new ProvidesKey<Property>() { @Override//from w w w .ja v a 2 s . c o m public Object getKey(Property item) { return item.getName(); } }; this.table = new DefaultCellTable<>(5, providesKey); this.dataProvider = new ListDataProvider<Property>(providesKey); this.selectionModel = new SingleSelectionModel<Property>(providesKey); dataProvider.addDataDisplay(table); table.setSelectionModel(selectionModel); }
From source file:org.jboss.as.console.client.shared.subsys.jberet.ui.JobsRuntimePanel.java
License:Open Source License
@SuppressWarnings("unchecked") @Override/*w w w.ja v a 2s . c om*/ public Widget asWidget() { ProvidesKey<Job> providesKey = job1 -> job1.getDeploymentName() + job1.getName() + job1.getExecutionId(); table = new DefaultCellTable<>(5, providesKey); dataProvider = new ListDataProvider<>(providesKey); dataProvider.addDataDisplay(table); selectionModel = new SingleSelectionModel<>(providesKey); selectionModel.addSelectionChangeHandler(event -> { Job job = selectionModel.getSelectedObject(); if (job != null) { refresh(job); } }); table.setSelectionModel(selectionModel); TextColumn<Job> deploymentColumn = new TextColumn<Job>() { @Override public String getValue(Job job) { String deploymentName = job.getDeploymentName(); if (job.getSubdeploymentName().length() > 0) { deploymentName = deploymentName + "/" + job.getSubdeploymentName(); } return deploymentName; } }; TextColumn<Job> jobColumn = new TextColumn<Job>() { @Override public String getValue(Job node) { return node.getJobXmlName(); } }; TextColumn<Job> idColumn = new TextColumn<Job>() { @Override public String getValue(Job node) { return node.getInstanceId(); } }; TextColumn<Job> executionIdColumn = new TextColumn<Job>() { @Override public String getValue(Job node) { return node.getExecutionId(); } }; TextColumn<Job> statusColumn = new TextColumn<Job>() { @Override public String getValue(Job node) { return node.getCurrentStatus(); } }; TextColumn<Job> startColumn = new TextColumn<Job>() { @Override public String getValue(Job node) { return node.getStartTime(); } }; executionIdColumn.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER); idColumn.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER); statusColumn.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER); table.addColumn(deploymentColumn, "Deployment"); table.addColumn(jobColumn, "Job-Xml-Name"); table.addColumn(executionIdColumn, "Execution Id"); table.addColumn(idColumn, "Instance Id"); table.addColumn(statusColumn, "Batch Status"); table.addColumn(startColumn, "Start time"); DefaultPager pager = new DefaultPager(); pager.setDisplay(table); VerticalPanel tableAndPager = new VerticalPanel(); tableAndPager.setStyleName("fill-layout-width"); tableAndPager.add(table); tableAndPager.add(pager); SecurityContext securityContext = securityFramework.getSecurityContext(presenter.getProxy().getNameToken()); ResourceDescription jobDescription = resourceDescriptionRegistry.lookup(JberetStore.JOB_DEPLOYMENT_ADDRESS); ModelNodeFormBuilder.FormAssets formAssets = new ModelNodeFormBuilder() .setResourceDescription(jobDescription).setSecurityContext(securityContext) .include(METRIC_ATTRIBUTES).build(); Widget help = formAssets.getHelp().asWidget(); help.getElement().getStyle().setMarginTop(40, Style.Unit.PX); HorizontalPanel header = new HorizontalPanel(); header.addStyleName("fill-layout-width"); header.add(new HTML("<h3 class='metric-label-embedded'>Job Status</h3>")); columns = new Column[] { new NumberColumn("instance-id", "Instance Id"), new NumberColumn("batch-status", "Batch Status"), new NumberColumn("exit-status", "Exit Status"), new NumberColumn("create-time", "Create Time"), new NumberColumn("start-time", "Start Time"), new NumberColumn("end-time", "End Time"), new NumberColumn("last-updated-time", "Last Updated Time") }; grid = new Grid(columns.length, 2); grid.addStyleName("metric-grid"); for (int row = 0; row < columns.length; ++row) { grid.getCellFormatter().addStyleName(row, 0, "nominal"); grid.getCellFormatter().addStyleName(row, 1, "numerical"); } VerticalPanel metricsPanel = new VerticalPanel(); metricsPanel.addStyleName("metric-container"); metricsPanel.add(header); metricsPanel.add(grid); SimpleLayout layout = new SimpleLayout().setPlain(true).setHeadline("Job Status") .setDescription(SafeHtmlUtils .fromString(jobDescription.get(ModelDescriptionConstants.DESCRIPTION).asString())) .addContent("", buttonsTool()).addContent("", tableAndPager).addContent("", help) .addContent("", metricsPanel); return layout.build().asWidget(); }
From source file:org.jboss.as.console.client.shared.subsys.jberet.ui.MasterDetailPanel.java
License:Open Source License
@Override @SuppressWarnings("unchecked") 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) { dispatchRemove(circuit, name); }/*from w w w . j a v a2 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); VerticalPanel tableAndPager = new VerticalPanel(); tableAndPager.setStyleName("fill-layout-width"); tableAndPager.add(table); tableAndPager.add(pager); if (hasAttributes()) { ModelNodeFormBuilder formBuilder = new ModelNodeFormBuilder() .setResourceDescription(resourceDescription).setSecurityContext(securityContext) .setConfigOnly(); if (excludes != null && excludes.length != 0) { formBuilder.exclude(excludes); } formAssets = formBuilder.build(); formAssets.getForm().setToolsCallback(new FormCallback() { @Override @SuppressWarnings("unchecked") public void onSave(final Map changeset) { dispatchModify(circuit, selectionModel.getSelectedObject().getName(), changeset); } @Override public void onCancel(final Object entity) { formAssets.getForm().cancel(); } }); selectionModel.addSelectionChangeHandler(event -> { Property property = selectionModel.getSelectedObject(); if (property != null) { formAssets.getForm().edit(property.getValue()); if (timeFormAssets != null) timeFormAssets.getForm().edit(property.getValue().get("keepalive-time")); } else { formAssets.getForm().clearValues(); if (timeFormAssets != null) timeFormAssets.getForm().clearValues(); } }); } OneToOneLayout layoutBuilder = new OneToOneLayout().setPlain(true).setHeadline(title) .setDescription(resourceDescription.get("description").asString()).setMasterTools(tools) .setMaster(null, tableAndPager); if (hasAttributes()) { layoutBuilder.addDetail(Console.CONSTANTS.common_label_attributes(), formAssets.asWidget()); } if (resourceDescription.get("attributes").hasDefined("keepalive-time")) { // complex attribute 'file' ComplexAttributeForm timeForm = new ComplexAttributeForm("keepalive-time", securityContext, resourceDescription); timeFormAssets = timeForm.build(); // order matters timeFormAssets.getForm().setToolsCallback(new FormCallback() { @Override public void onSave(Map changeset) { // ignore the changeset: complex attributes are written atomically, including all attributes dispatchWriteAttribute(circuit, selectionModel.getSelectedObject().getName(), "keepalive-time", timeFormAssets.getForm().getUpdatedEntity()); } @Override public void onCancel(Object o) { timeFormAssets.getForm().cancel(); } }); layoutBuilder.addDetail("Keepalive", timeFormAssets.asWidget()); } return layoutBuilder.build(); }