6f472cc0ad57af4541696fcd6e6ebfff52346c2a
java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/MediaPanel.java
| ... | ... | @@ -32,9 +32,12 @@ import com.google.gwt.user.cellview.client.Header; |
| 32 | 32 | import com.google.gwt.user.client.Command; |
| 33 | 33 | import com.google.gwt.user.client.Window; |
| 34 | 34 | import com.google.gwt.user.client.rpc.AsyncCallback; |
| 35 | +import com.google.gwt.user.client.ui.Button; |
|
| 35 | 36 | import com.google.gwt.user.client.ui.FlowPanel; |
| 36 | 37 | import com.google.gwt.user.client.ui.Label; |
| 37 | 38 | import com.google.gwt.view.client.ListDataProvider; |
| 39 | +import com.google.gwt.view.client.SelectionChangeEvent; |
|
| 40 | +import com.google.gwt.view.client.SelectionChangeEvent.Handler; |
|
| 38 | 41 | import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; |
| 39 | 42 | import com.sap.sailing.domain.common.media.MediaTrack; |
| 40 | 43 | import com.sap.sailing.domain.common.media.MediaTrackWithSecurityDTO; |
| ... | ... | @@ -174,12 +177,12 @@ public class MediaPanel extends FlowPanel implements FilterablePanelProvider<Med |
| 174 | 177 | }).center(); |
| 175 | 178 | } |
| 176 | 179 | }); |
| 177 | - buttonAndFilterPanel.addUpdateAction(stringMessages.multiUrlChangeMediaTrack(), |
|
| 180 | + final Button multiUrlChange = buttonAndFilterPanel.addUpdateAction(stringMessages.multiUrlChangeMediaTrack(), |
|
| 178 | 181 | refreshableSelectionModel, |
| 179 | 182 | new Command() { |
| 180 | 183 | @Override |
| 181 | 184 | public void execute() { |
| 182 | - Set<MediaTrackWithSecurityDTO> selected = refreshableSelectionModel.getSelectedSet(); |
|
| 185 | + final Set<MediaTrackWithSecurityDTO> selected = refreshableSelectionModel.getSelectedSet(); |
|
| 183 | 186 | if (selected.isEmpty()) { |
| 184 | 187 | Notification.notify(stringMessages.noSelection(), NotificationType.ERROR); |
| 185 | 188 | } else { |
| ... | ... | @@ -192,7 +195,7 @@ public class MediaPanel extends FlowPanel implements FilterablePanelProvider<Med |
| 192 | 195 | } |
| 193 | 196 | } |
| 194 | 197 | }); |
| 195 | - buttonAndFilterPanel.addRemoveAction(stringMessages.remove(), refreshableSelectionModel, |
|
| 198 | + final Button remove = buttonAndFilterPanel.addRemoveAction(stringMessages.remove(), refreshableSelectionModel, |
|
| 196 | 199 | /* with confirmation */ true, new Command() { |
| 197 | 200 | @Override |
| 198 | 201 | public void execute() { |
| ... | ... | @@ -201,6 +204,24 @@ public class MediaPanel extends FlowPanel implements FilterablePanelProvider<Med |
| 201 | 204 | } |
| 202 | 205 | } |
| 203 | 206 | }); |
| 207 | + refreshableSelectionModel.addSelectionChangeHandler(new Handler() { |
|
| 208 | + @Override |
|
| 209 | + public void onSelectionChange(final SelectionChangeEvent event) { |
|
| 210 | + final Set<MediaTrackWithSecurityDTO> selected = refreshableSelectionModel.getSelectedSet(); |
|
| 211 | + boolean canDeleteAllSelected = true; |
|
| 212 | + boolean canUpdateAllSelected = true; |
|
| 213 | + for (final MediaTrackWithSecurityDTO track : selected) { |
|
| 214 | + if (!userService.hasPermission(track, DefaultActions.DELETE)) { |
|
| 215 | + canDeleteAllSelected = false; |
|
| 216 | + } |
|
| 217 | + if (!userService.hasPermission(track, DefaultActions.UPDATE)) { |
|
| 218 | + canUpdateAllSelected = false; |
|
| 219 | + } |
|
| 220 | + } |
|
| 221 | + remove.setEnabled(!selected.isEmpty() && canDeleteAllSelected); |
|
| 222 | + multiUrlChange.setEnabled(!selected.isEmpty() && canUpdateAllSelected); |
|
| 223 | + } |
|
| 224 | + }); |
|
| 204 | 225 | buttonAndFilterPanel.addUnsecuredWidget(lblFilterRaces); |
| 205 | 226 | createMediaTracksTable(userService); |
| 206 | 227 | filterableMediaTracks.getTextBox().ensureDebugId("MediaTracksFilterTextBox"); |