When deleting tracked races only show warning if a tracked race is selected but not visible in the table. Adjusted delete button to show number of items to delete. Also changed position of the delete button to far right to avoid shifting other items to the right when the button text is changed. Added method itemIsSelectedButNotVisible to RefreshableSingleSelectionModel.

This commit is contained in:
Leon Radeck committed 2017-07-20 11:00:05 +02:00
1 parent e2fe66c513
commit 99913a16ae
3 files changed
+43 -18

No files matched your search

@@ -111,23 +111,7 @@ public class TrackedRacesListComposite extends AbstractTrackedRacesListComposite
@Override
protected void addControlButtons(HorizontalPanel trackedRacesButtonPanel) {
if(actionButtonsEnabled) {
btnRemoveRace = new Button(stringMessages.remove());
btnRemoveRace.ensureDebugId("RemoveRaceButton");
btnRemoveRace.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
if(askUserForConfirmation()){
removeAndUntrackRaces(refreshableSelectionModel.getSelectedSet());
}
}
private boolean askUserForConfirmation() {
return Window.confirm(stringMessages.doYouReallyWantToRemoveTrackedRaces());
}
});
btnRemoveRace.setEnabled(false);
trackedRacesButtonPanel.add(btnRemoveRace);
btnUntrack = new Button(stringMessages.stopTracking());
btnUntrack.ensureDebugId("StopTrackingButton");
@@ -161,6 +145,28 @@ public class TrackedRacesListComposite extends AbstractTrackedRacesListComposite
});
btnExport.setEnabled(false);
trackedRacesButtonPanel.add(btnExport);
btnRemoveRace = new Button(stringMessages.remove());
btnRemoveRace.ensureDebugId("RemoveRaceButton");
btnRemoveRace.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
if(askUserForConfirmation()){
removeAndUntrackRaces(refreshableSelectionModel.getSelectedSet());
}
}
private boolean askUserForConfirmation() {
if(refreshableSelectionModel.itemIsSelectedButNotVisible(raceTable.getVisibleItems())){
final String trackedRaceNames = refreshableSelectionModel.getSelectedSet().stream().map(e -> e.getRegattaName()+" - "+e.getName()).collect(Collectors.joining("\n"));
return Window.confirm(stringMessages.doYouReallyWantToRemoveNonVisibleTrackedRaces(trackedRaceNames));
}
return true;
}
});
btnRemoveRace.setEnabled(false);
trackedRacesButtonPanel.add(btnRemoveRace);
}
}
@@ -169,10 +175,13 @@ public class TrackedRacesListComposite extends AbstractTrackedRacesListComposite
if (actionButtonsEnabled) {
if (selectedRaces.isEmpty()) {
btnRemoveRace.setEnabled(false);
btnRemoveRace.setText(stringMessages.remove());
btnUntrack.setEnabled(false);
btnExport.setEnabled(false);
} else {
btnRemoveRace.setEnabled(true);
final int numberOfItemsSelected = refreshableSelectionModel.getSelectedSet().size();
btnRemoveRace.setText(numberOfItemsSelected <= 1 ? stringMessages.remove() : stringMessages.removeNumber(numberOfItemsSelected));
btnUntrack.setEnabled(true);
btnExport.setEnabled(true);
}
@@ -1,5 +1,7 @@
package com.sap.sse.gwt.client.celltable;
import java.util.List;
import com.google.gwt.view.client.HasData;
import com.google.gwt.view.client.ListDataProvider;
import com.google.gwt.view.client.SelectionChangeEvent.Handler;
@@ -37,6 +39,8 @@ public interface RefreshableSelectionModel<T> extends SetSelectionModel<T> {
* <code>&ltT&gt</code>.
*/
EntityIdentityComparator<T> getEntityIdentityComparator();
boolean itemIsSelectedButNotVisible(List<T> visibleItemList);
void refreshSelectionModel(Iterable<T> newObjects);
}
@@ -72,6 +72,18 @@ public class RefreshableSingleSelectionModel<T> extends SingleSelectionModel<T>
super.setSelected(item, selected);
}
}
/**
* Checks if the currently selected object is also visible.
*
* @param visibleItemList
* can be obtained by calling {@link com.google.gwt.user.cellview.client.CellTable#getVisibleItems()}
* method.
* @return <code>true</code> if the list of visible items does not contain the selected item.
*/
public boolean itemIsSelectedButNotVisible(List<T> visibleItemList) {
return !visibleItemList.contains(getSelectedObject());
}
/**
* Refreshes the {@link RefreshableSingleSelectionModel} with the <code>newObjects</code>. If the current selected