bug6239: remove from actions' column now preserves the last selection state for rows and global remove() button

This commit is contained in:
masha.kashirina
2026-05-01 14:06:35 +02:00
parent 345ddaba6d
commit 3bd0cbec77
10 changed files with 8 additions and 11 deletions
@@ -469,7 +469,6 @@ public class EventListComposite extends Composite {
@Override
public void onSuccess(Void result) {
refreshableEventSelectionModel.clear();
presenter.getEventsRefresher().remove(event);
presenter.getEventsRefresher().callAllFill();
}
@@ -310,7 +310,6 @@ public class LeaderboardConfigPanel extends AbstractLeaderboardConfigPanel
leaderboardActionColumn.addAction(LeaderboardConfigImagesBarCell.ACTION_UPDATE, UPDATE, this::editLeaderboard);
leaderboardActionColumn.addAction(LeaderboardConfigImagesBarCell.ACTION_DELETE, DELETE, leaderboardDTO -> {
if (Window.confirm(stringMessages.doYouReallyWantToRemoveLeaderboard(leaderboardDTO.getName()))) {
leaderboardSelectionModel.clear();
removeLeaderboard(leaderboardDTO);
}
});
@@ -552,7 +552,6 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel
this::openEditLeaderboardGroupDialog);
actionsColumn.addAction(LeaderboardGroupConfigImagesBarCell.ACTION_DELETE, DELETE, group -> {
if (Window.confirm(stringMessages.doYouReallyWantToRemoveLeaderboardGroup(group.getName()))) {
refreshableGroupsSelectionModel.clear();
removeLeaderboardGroup(group);
}
});
@@ -513,7 +513,6 @@ public class MediaPanel extends FlowPanel implements FilterablePanelProvider<Med
new DefaultActionsImagesBarCell(stringMessages), userService);
actionsColumn.addAction(ACTION_DELETE, DELETE, mediaTrack -> {
if (Window.confirm(stringMessages.reallyRemoveMediaTrack(mediaTrack.title))) {
refreshableSelectionModel.clear();
removeMediaTrack(mediaTrack);
}
});
@@ -285,7 +285,6 @@ public class RegattaListComposite extends Composite {
actionsColumn.addAction(RegattaConfigImagesBarCell.ACTION_UPDATE, UPDATE, this::editRegatta);
actionsColumn.addAction(RegattaConfigImagesBarCell.ACTION_DELETE, DELETE, regatta -> {
if (Window.confirm(stringMessages.doYouReallyWantToRemoveRegatta(regatta.getName()))) {
refreshableRegattaMultiSelectionModel.clear();
removeRegatta(regatta);
}
});
@@ -263,7 +263,6 @@ public class CourseTemplatePanel extends FlowPanel implements FilterablePanelPro
stringMessages);
actionsColumn.addAction(ACTION_DELETE, DELETE, e -> {
if (Window.confirm(stringMessages.doYouReallyWantToRemoveCourseTemplate(e.getName()))) {
refreshableSelectionModel.clear();
sailingService.removeCourseTemplates(Collections.singletonList(e.getUuid()), new AsyncCallback<Void>() {
@Override
@@ -212,19 +212,25 @@ public class SelectionCheckboxColumn<T> extends AbstractSortableColumnWithMinMax
private EventTranslator<T> createSelectionEventTranslator() {
return new EventTranslator<T>() {
/**
* Don't clear the selection when the user has clicked on the checkbox column
* Don't clear the selection when the user has clicked on the checkbox column or
* on an actions column (ImagesBarColumn): action icon clicks must not disturb
* the multi-selection state.
*/
@Override
public boolean clearCurrentSelection(CellPreviewEvent<T> event) {
NativeEvent nativeEvent = event.getNativeEvent();
boolean ctrlOrMeta = nativeEvent.getCtrlKey() || nativeEvent.getMetaKey();
return !isSelectionCheckboxColumn(event) && !ctrlOrMeta;
return !isSelectionCheckboxColumn(event) && !isImagesBarColumn(event) && !ctrlOrMeta;
}
private boolean isSelectionCheckboxColumn(CellPreviewEvent<T> event) {
Column<?, ?> column = getColumn(event);
return column == SelectionCheckboxColumn.this;
}
private boolean isImagesBarColumn(CellPreviewEvent<T> event) {
return getColumn(event) instanceof ImagesBarColumn;
}
private Column<?, ?> getColumn(CellPreviewEvent<T> event) {
CellTable<T> table = (CellTable<T>) event.getDisplay();
@@ -242,7 +242,6 @@ public class RoleDefinitionsPanel extends VerticalPanel {
@Override
public void onSuccess(Void result) {
refreshableRoleDefinitionMultiSelectionModel.clear();
updateRoleDefinitions();
}
});
@@ -133,7 +133,6 @@ public class GroupRoleDefinitionPanel extends Composite
} else if (Window.confirm(stringMessages.doYouReallyWantToRemoveRole(selectedRole.getA().getName()))) {
UserGroupDTO selectedObject = TableWrapper.getSingleSelectedObjectOrNull(userGroupSelectionModel);
if (selectedObject != null) {
roleDefinitionTableWrapper.getSelectionModel().clear();
userManagementService.removeRoleDefinitionFromUserGroup(selectedObject.getId().toString(),
selectedRole.getA().getId().toString(), new AsyncCallback<Void>() {
@Override
@@ -97,7 +97,6 @@ public class RoleDefinitionTableWrapper extends
@Override
public void onSuccess(Void result) {
selectedObject.remove(rolePair.getA());
getSelectionModel().clear();
refresher.run();
}
});