bug6233: added handler to check permissions fo UPDATE and REMOVE

This commit is contained in:
masha.kashirina
2026-04-09 15:53:08 +02:00
parent 24f7d87b7b
commit 6f472cc0ad
@@ -32,9 +32,12 @@ import com.google.gwt.user.cellview.client.Header;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.view.client.ListDataProvider;
import com.google.gwt.view.client.SelectionChangeEvent;
import com.google.gwt.view.client.SelectionChangeEvent.Handler;
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
import com.sap.sailing.domain.common.media.MediaTrack;
import com.sap.sailing.domain.common.media.MediaTrackWithSecurityDTO;
@@ -174,12 +177,12 @@ public class MediaPanel extends FlowPanel implements FilterablePanelProvider<Med
}).center();
}
});
buttonAndFilterPanel.addUpdateAction(stringMessages.multiUrlChangeMediaTrack(),
final Button multiUrlChange = buttonAndFilterPanel.addUpdateAction(stringMessages.multiUrlChangeMediaTrack(),
refreshableSelectionModel,
new Command() {
@Override
public void execute() {
Set<MediaTrackWithSecurityDTO> selected = refreshableSelectionModel.getSelectedSet();
final Set<MediaTrackWithSecurityDTO> selected = refreshableSelectionModel.getSelectedSet();
if (selected.isEmpty()) {
Notification.notify(stringMessages.noSelection(), NotificationType.ERROR);
} else {
@@ -192,7 +195,7 @@ public class MediaPanel extends FlowPanel implements FilterablePanelProvider<Med
}
}
});
buttonAndFilterPanel.addRemoveAction(stringMessages.remove(), refreshableSelectionModel,
final Button remove = buttonAndFilterPanel.addRemoveAction(stringMessages.remove(), refreshableSelectionModel,
/* with confirmation */ true, new Command() {
@Override
public void execute() {
@@ -201,6 +204,24 @@ public class MediaPanel extends FlowPanel implements FilterablePanelProvider<Med
}
}
});
refreshableSelectionModel.addSelectionChangeHandler(new Handler() {
@Override
public void onSelectionChange(final SelectionChangeEvent event) {
final Set<MediaTrackWithSecurityDTO> selected = refreshableSelectionModel.getSelectedSet();
boolean canDeleteAllSelected = true;
boolean canUpdateAllSelected = true;
for (final MediaTrackWithSecurityDTO track : selected) {
if (!userService.hasPermission(track, DefaultActions.DELETE)) {
canDeleteAllSelected = false;
}
if (!userService.hasPermission(track, DefaultActions.UPDATE)) {
canUpdateAllSelected = false;
}
}
remove.setEnabled(!selected.isEmpty() && canDeleteAllSelected);
multiUrlChange.setEnabled(!selected.isEmpty() && canUpdateAllSelected);
}
});
buttonAndFilterPanel.addUnsecuredWidget(lblFilterRaces);
createMediaTracksTable(userService);
filterableMediaTracks.getTextBox().ensureDebugId("MediaTracksFilterTextBox");