From e71cf82be2c9fbfd2a85a89dbfd6aa38c14a7d7e Mon Sep 17 00:00:00 2001 From: Claudio Miranda Date: Thu, 29 Dec 2016 15:59:20 -0200 Subject: [PATCH] HAL-1066 - Remove button tries to remove a nonexistent transaction in screen Transaction Logs https://issues.jboss.org/browse/HAL-1066 * also a minor fix to the FilterEditor handling of selected filter. --- .../client/shared/runtime/tx/TXLogView.java | 69 ++++++------------- .../shared/subsys/undertow/FilterEditor.java | 39 ++++++----- 2 files changed, 43 insertions(+), 65 deletions(-) diff --git a/gui/src/main/java/org/jboss/as/console/client/shared/runtime/tx/TXLogView.java b/gui/src/main/java/org/jboss/as/console/client/shared/runtime/tx/TXLogView.java index f89320b33..2ec1a6b33 100644 --- a/gui/src/main/java/org/jboss/as/console/client/shared/runtime/tx/TXLogView.java +++ b/gui/src/main/java/org/jboss/as/console/client/shared/runtime/tx/TXLogView.java @@ -8,7 +8,6 @@ import com.google.gwt.user.client.ui.Widget; import com.google.gwt.view.client.ListDataProvider; import com.google.gwt.view.client.ProvidesKey; -import com.google.gwt.view.client.SelectionChangeEvent; import com.google.gwt.view.client.SingleSelectionModel; import org.jboss.as.console.client.Console; import org.jboss.as.console.client.core.SuspendableViewImpl; @@ -28,27 +27,23 @@ * @author Heiko Braun * @date 2/27/13 */ -public class TXLogView extends SuspendableViewImpl implements TXLogPresenter.MyView{ +public class TXLogView extends SuspendableViewImpl implements TXLogPresenter.MyView { private TXLogPresenter presenter; private DefaultCellTable table; private ListDataProvider dataProvider; + private final SingleSelectionModel selectionModel; private ParticipantsPanel participantsPanel; public TXLogView() { - table = new DefaultCellTable( - 8, - new ProvidesKey() { - @Override - public Object getKey(TXRecord item) { - return item.getId(); - } - }); - - dataProvider = new ListDataProvider(); + ProvidesKey providesKey = TXRecord::getId; + this.selectionModel = new SingleSelectionModel<>(providesKey); + table = new DefaultCellTable<>(8, providesKey); + this.table.setSelectionModel(selectionModel); + dataProvider = new ListDataProvider<>(providesKey); dataProvider.addDataDisplay(table); TextColumn id = new TextColumn() { @@ -88,8 +83,8 @@ public Widget createWidget() { @Override public ModelNode getAddress() { ModelNode address = RuntimeBaseAddress.get(); - address.add("subsystem","transactions"); - address.add("log-store","log-store"); + address.add("subsystem", "transactions"); + address.add("log-store", "log-store"); return address; } @@ -108,7 +103,7 @@ public ModelNode getAddress() { final ToolButton removeButton = new ToolButton(Console.CONSTANTS.common_label_delete(), new ClickHandler() { @Override public void onClick(ClickEvent clickEvent) { - final TXRecord record = getSelectedRecord(); + final TXRecord record = selectionModel.getSelectedObject(); if (record != null) { Feedback.confirm( @@ -117,8 +112,7 @@ public void onClick(ClickEvent clickEvent) { new Feedback.ConfirmationHandler() { @Override public void onConfirmation(boolean confirmed) { - if (confirmed) - presenter.onDeleteRecord(record); + if (confirmed) { presenter.onDeleteRecord(record); } } } ); @@ -128,33 +122,16 @@ public void onConfirmation(boolean confirmed) { tools.addToolButtonRight(removeButton); // lazy load the participant details - table.getSelectionModel().addSelectionChangeHandler(new SelectionChangeEvent.Handler() { - @Override - public void onSelectionChange(SelectionChangeEvent selectionChangeEvent) { - TXRecord selection = getSelectedRecord(); - if(selection!=null) - { - presenter.onLoadParticipants(selection); - } - } - }) ; - - - // handle deselection - table.getSelectionModel().addSelectionChangeHandler(new SelectionChangeEvent.Handler() { - @Override - public void onSelectionChange(SelectionChangeEvent selectionChangeEvent) { - TXRecord selection = getSelectedRecord(); - if(null==selection) - { - participantsPanel.clear(); - recordForm.clearValues(); - } + selectionModel.addSelectionChangeHandler(selectionChangeEvent -> { + TXRecord selection = selectionModel.getSelectedObject(); + if (selection != null) { + presenter.onLoadParticipants(selection); + } else { + participantsPanel.clear(); + recordForm.clearValues(); } }); - - tools.addToolButtonRight(new ToolButton(Console.CONSTANTS.common_label_refresh(), new ClickHandler() { @Override public void onClick(ClickEvent clickEvent) { @@ -174,11 +151,6 @@ public void onClick(ClickEvent clickEvent) { return layout.build(); } - private TXRecord getSelectedRecord() { - SingleSelectionModel selectionModel = (SingleSelectionModel)table.getSelectionModel(); - return selectionModel.getSelectedObject(); - } - @Override public void setPresenter(TXLogPresenter presenter) { this.presenter = presenter; @@ -195,8 +167,11 @@ public void clear() { @Override public void updateFrom(List records) { dataProvider.setList(records); - table.selectDefaultEntity(); + if (records.isEmpty()) { + selectionModel.clear(); + participantsPanel.clear(); + } } @Override diff --git a/gui/src/main/java/org/jboss/as/console/client/shared/subsys/undertow/FilterEditor.java b/gui/src/main/java/org/jboss/as/console/client/shared/subsys/undertow/FilterEditor.java index 754721a2d..26fe473e8 100644 --- a/gui/src/main/java/org/jboss/as/console/client/shared/subsys/undertow/FilterEditor.java +++ b/gui/src/main/java/org/jboss/as/console/client/shared/subsys/undertow/FilterEditor.java @@ -24,6 +24,7 @@ import java.util.List; import java.util.Map; +import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.safehtml.shared.SafeHtmlUtils; import com.google.gwt.user.cellview.client.TextColumn; import com.google.gwt.user.client.ui.VerticalPanel; @@ -66,12 +67,12 @@ public class FilterEditor { public FilterEditor(FilterPresenter presenter, AddressTemplate addressTemplate, String title, boolean showDeprecated) { this.presenter = presenter; this.showDeprecated = showDeprecated; - this.table = new DefaultCellTable(5); - this.dataProvider = new ListDataProvider<>(); - this.dataProvider.addDataDisplay(table); ProvidesKey providesKey = Property::getName; this.selectionModel = new SingleSelectionModel<>(providesKey); - this.table.setSelectionModel(new SingleSelectionModel()); + this.table = new DefaultCellTable(5, providesKey); + this.table.setSelectionModel(selectionModel); + this.dataProvider = new ListDataProvider<>(providesKey); + this.dataProvider.addDataDisplay(table); securityContext = presenter.getSecurityFramework().getSecurityContext(presenter.getProxy().getNameToken()); definition = presenter.getDescriptionRegistry().lookup(addressTemplate); this.addressTemplate = addressTemplate; @@ -104,7 +105,7 @@ public String getValue(Property node) { formAssets.getForm().setToolsCallback(new FormCallback() { @Override public void onSave(Map changeset) { - presenter.onSaveFilter(addressTemplate, getCurrentSelection().getName(), changeset); + presenter.onSaveFilter(addressTemplate, selectionModel.getSelectedObject().getName(), changeset); } @Override @@ -139,7 +140,6 @@ public void onCancel(Object entity) { if (hasAttributes) layoutBuilder.addDetail(Console.CONSTANTS.common_label_attributes(), formPanel); - table.setSelectionModel(selectionModel); return layoutBuilder.build(); } @@ -148,21 +148,24 @@ private ToolStrip tableToolsButtons() { tools.addToolButtonRight(new ToolButton(Console.CONSTANTS.common_label_add(), event -> { presenter.onLaunchAddResourceDialog(addressTemplate, title); })); - tools.addToolButtonRight(new ToolButton(Console.CONSTANTS.common_label_delete(), event -> Feedback.confirm(Console.MESSAGES.deleteTitle("Container"), - Console.MESSAGES.deleteConfirm(title + " '" + getCurrentSelection().getName() + "'"), - isConfirmed -> { - if (isConfirmed) { - presenter.onRemoveResource(addressTemplate, getCurrentSelection().getName()); - } - }))); + ToolButton btnRemove = new ToolButton(Console.CONSTANTS.common_label_delete(), + (ClickEvent event) -> { + Property selected = selectionModel.getSelectedObject(); + if (selected != null) { + Feedback.confirm(Console.MESSAGES.deleteTitle("Container"), + Console.MESSAGES.deleteConfirm( + title + " '" + selected.getName() + "'"), + isConfirmed -> { + if (isConfirmed) { + presenter.onRemoveResource(addressTemplate, selected.getName()); + } + }); + } + }); + tools.addToolButtonRight(btnRemove); return tools; } - private Property getCurrentSelection() { - Property selection = ((SingleSelectionModel) table.getSelectionModel()).getSelectedObject(); - return selection; - } - public void updateValuesFromModel(List filters) { dataProvider.setList(filters); table.selectDefaultEntity();