Skip to content

Commit 6d2e24b

Browse files
bug6122: merge
1 parent 08a8736 commit 6d2e24b

File tree

10 files changed

+113
-45
lines changed

10 files changed

+113
-45
lines changed

java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractLeaderboardConfigPanel.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -397,21 +397,21 @@ protected SelectionCheckboxColumn<StrippedLeaderboardDTO> createSortableSelectio
397397
AdminConsoleTableResources tableResources,
398398
ListHandler<StrippedLeaderboardDTO> leaderboardColumnListHandler,
399399
ListDataProvider<StrippedLeaderboardDTO> listDataProvider) {
400-
SelectionCheckboxColumn<StrippedLeaderboardDTO> selectionCheckboxColumn = new SelectionCheckboxColumn<StrippedLeaderboardDTO>(
400+
final SelectionCheckboxColumn<StrippedLeaderboardDTO> selectionCheckboxColumn = new SelectionCheckboxColumn<StrippedLeaderboardDTO>(
401401
tableResources.cellTableStyle().cellTableCheckboxSelected(),
402402
tableResources.cellTableStyle().cellTableCheckboxDeselected(),
403403
tableResources.cellTableStyle().cellTableCheckboxColumnCell(),
404404
new NameBasedStrippedLeaderboardDTOEntityIdentityComparator(), listDataProvider, leaderboardTable);
405-
CheckboxCell selectAllCell = new CheckboxCell();
406-
Header<Boolean> selectAllHeader = new Header<Boolean>(selectAllCell) {
405+
final CheckboxCell selectAllCell = new CheckboxCell();
406+
final Header<Boolean> selectAllHeader = new Header<Boolean>(selectAllCell) {
407407
private boolean checked = false;
408408
@Override
409409
public Boolean getValue() {
410410
return checked;
411411
}};
412412
selectAllHeader.setUpdater(value -> {
413413
List<StrippedLeaderboardDTO> visibleLeaderbords = filteredLeaderboardList.getList();
414-
for (StrippedLeaderboardDTO l : visibleLeaderbords) {
414+
for (final StrippedLeaderboardDTO l : visibleLeaderbords) {
415415
leaderboardSelectionModel.setSelected(l, value);
416416
}
417417
value = !value;

java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SwissTimingEventManagementPanel.java

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@
44
import java.util.Comparator;
55
import java.util.List;
66

7+
import com.google.gwt.cell.client.CheckboxCell;
78
import com.google.gwt.core.client.GWT;
89
import com.google.gwt.event.dom.client.ClickEvent;
910
import com.google.gwt.event.dom.client.ClickHandler;
1011
import com.google.gwt.user.cellview.client.AbstractCellTable;
1112
import com.google.gwt.user.cellview.client.Column;
13+
import com.google.gwt.user.cellview.client.Header;
1214
import com.google.gwt.user.cellview.client.ColumnSortEvent.Handler;
1315
import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler;
1416
import com.google.gwt.user.cellview.client.TextColumn;
@@ -40,6 +42,7 @@
4042
import com.sap.sse.gwt.client.celltable.CellTableWithCheckboxResources;
4143
import com.sap.sse.gwt.client.celltable.EntityIdentityComparator;
4244
import com.sap.sse.gwt.client.celltable.FlushableCellTable;
45+
import com.sap.sse.gwt.client.celltable.RefreshableMultiSelectionModel;
4346
import com.sap.sse.gwt.client.celltable.SelectionCheckboxColumn;
4447
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
4548
import com.sap.sse.gwt.client.panels.AbstractFilterablePanel;
@@ -283,15 +286,34 @@ public String getValue(SwissTimingRaceRecordDTO object) {
283286
raceStatusColumn.setSortable(true);
284287
regattaNameColumn.setSortable(true);
285288
seriesNameColumn.setSortable(true);
286-
raceTable.addColumn(selectionColumn, selectionColumn.getHeader());
289+
final RefreshableMultiSelectionModel<SwissTimingRaceRecordDTO> selectionModel =
290+
new RefreshableMultiSelectionModel<SwissTimingRaceRecordDTO>(
291+
entityIdentityComparator,
292+
filterablePanelEvents.getAllListDataProvider()
293+
);
294+
raceTable.setSelectionModel(selectionModel);
295+
selectionColumn.setSortable(false);
296+
final CheckboxCell selectAllCell = new CheckboxCell();
297+
final Header<Boolean> selectAllHeader = new Header<Boolean>(selectAllCell) {
298+
@Override
299+
public Boolean getValue() {
300+
return false;
301+
}
302+
};
303+
selectAllHeader.setUpdater(value -> {
304+
for (final SwissTimingRaceRecordDTO race : raceList.getList()) {
305+
selectionModel.setSelected(race, value);
306+
}
307+
value = !value;
308+
});
309+
raceTable.addColumn(selectionColumn, selectAllHeader);
287310
raceTable.addColumn(regattaNameColumn, stringConstants.regatta());
288311
raceTable.addColumn(seriesNameColumn, stringConstants.series());
289312
raceTable.addColumn(raceNameColumn, stringConstants.name());
290313
raceTable.addColumn(raceStatusColumn, stringConstants.status());
291314
raceTable.addColumn(boatClassColumn, stringConstants.boatClass());
292315
raceTable.addColumn(genderColumn, stringConstants.gender());
293316
raceTable.addColumn(raceStartTimeColumn, stringConstants.startTime());
294-
raceTable.setSelectionModel(selectionColumn.getSelectionModel(), selectionColumn.getSelectionManager());
295317
trackableRacesPanel.add(raceTable);
296318
raceList.addDataDisplay(raceTable);
297319
Handler columnSortHandler = getRaceTableColumnSortHandler(raceList.getList(), regattaNameColumn, seriesNameColumn,

java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SwissTimingReplayConnectorPanel.java

Lines changed: 51 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,14 @@
66
import java.util.List;
77
import java.util.Set;
88

9+
import com.google.gwt.cell.client.CheckboxCell;
910
import com.google.gwt.core.client.GWT;
1011
import com.google.gwt.event.dom.client.ClickEvent;
1112
import com.google.gwt.event.dom.client.ClickHandler;
1213
import com.google.gwt.user.cellview.client.AbstractCellTable;
1314
import com.google.gwt.user.cellview.client.CellTable;
1415
import com.google.gwt.user.cellview.client.Column;
16+
import com.google.gwt.user.cellview.client.Header;
1517
import com.google.gwt.user.cellview.client.ColumnSortEvent.Handler;
1618
import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler;
1719
import com.google.gwt.user.cellview.client.TextColumn;
@@ -174,10 +176,6 @@ public String getValue(SwissTimingReplayRaceDTO object) {
174176
boatClassNamesColumn.setSortable(true);
175177
AdminConsoleTableResources tableRes = GWT.create(AdminConsoleTableResources.class);
176178
raceTable = new BaseCelltable<SwissTimingReplayRaceDTO>(/* pageSize */10000, tableRes);
177-
raceTable.addColumn(raceNameColumn, stringMessages.race());
178-
raceTable.addColumn(regattaNameColumn, "RSC");
179-
raceTable.addColumn(boatClassNamesColumn, stringMessages.boatClass());
180-
raceTable.addColumn(raceStartTrackingColumn, stringMessages.startTime());
181179
raceTable.setWidth("300px");
182180
raceList = new ListDataProvider<SwissTimingReplayRaceDTO>();
183181
filterablePanelEvents = new LabeledAbstractFilterablePanel<SwissTimingReplayRaceDTO>(lblFilterEvents,
@@ -194,19 +192,59 @@ public AbstractCellTable<SwissTimingReplayRaceDTO> getCellTable() {
194192
return raceTable;
195193
}
196194
};
197-
raceTable.setSelectionModel(new RefreshableMultiSelectionModel<SwissTimingReplayRaceDTO>(
198-
new EntityIdentityComparator<SwissTimingReplayRaceDTO>() {
195+
final RefreshableMultiSelectionModel<SwissTimingReplayRaceDTO> selectionModel =
196+
new RefreshableMultiSelectionModel<SwissTimingReplayRaceDTO>(
197+
new EntityIdentityComparator<SwissTimingReplayRaceDTO>() {
198+
@Override
199+
public boolean representSameEntity(SwissTimingReplayRaceDTO dto1, SwissTimingReplayRaceDTO dto2) {
200+
return dto1.race_id.equals(dto2.race_id);
201+
}
202+
@Override
203+
public int hashCode(SwissTimingReplayRaceDTO t) {
204+
return t.race_id.hashCode();
205+
}
206+
},
207+
filterablePanelEvents.getAllListDataProvider()
208+
);
209+
raceTable.setSelectionModel(selectionModel);
210+
final Column<SwissTimingReplayRaceDTO, Boolean> selectColumn =
211+
new Column<SwissTimingReplayRaceDTO, Boolean>(new CheckboxCell(true, false)) {
199212
@Override
200-
public boolean representSameEntity(SwissTimingReplayRaceDTO dto1, SwissTimingReplayRaceDTO dto2) {
201-
return dto1.race_id.equals(dto2.race_id);
213+
public Boolean getValue(SwissTimingReplayRaceDTO object) {
214+
return selectionModel.isSelected(object);
202215
}
203-
@Override
204-
public int hashCode(SwissTimingReplayRaceDTO t) {
205-
return t.race_id.hashCode();
216+
};
217+
selectColumn.setFieldUpdater((index, object, value) -> selectionModel.setSelected(object, value));
218+
selectColumn.setSortable(false);
219+
final CheckboxCell selectAllCell = new CheckboxCell();
220+
final Header<Boolean> selectAllHeader = new Header<Boolean>(selectAllCell) {
221+
@Override
222+
public Boolean getValue() {
223+
// Derive state from the current selection model
224+
final List<SwissTimingReplayRaceDTO> visible = raceList.getList();
225+
if (visible.isEmpty()) {
226+
return false;
227+
}
228+
// Checked only if *all* visible rows are selected
229+
for (final SwissTimingReplayRaceDTO race : visible) {
230+
if (!selectionModel.isSelected(race)) {
231+
return false;
206232
}
207-
}, filterablePanelEvents.getAllListDataProvider()) {
233+
}
234+
return true;
235+
}
236+
};
237+
selectAllHeader.setUpdater(value -> {
238+
for (SwissTimingReplayRaceDTO race : raceList.getList()) {
239+
selectionModel.setSelected(race, value);
240+
}
241+
value = !value;
208242
});
209-
243+
raceTable.addColumn(selectColumn, selectAllHeader);
244+
raceTable.addColumn(raceNameColumn, stringMessages.race());
245+
raceTable.addColumn(regattaNameColumn, "RSC");
246+
raceTable.addColumn(boatClassNamesColumn, stringMessages.boatClass());
247+
raceTable.addColumn(raceStartTrackingColumn, stringMessages.startTime());
210248
racesHorizontalPanel.add(raceTable);
211249
racesHorizontalPanel.add(trackPanel);
212250
raceList.addDataDisplay(raceTable);

java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TracTracEventManagementPanel.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import java.util.List;
66
import java.util.Set;
77

8+
import com.google.gwt.cell.client.CheckboxCell;
9+
import com.google.gwt.user.cellview.client.Header;
810
import com.google.gwt.core.client.GWT;
911
import com.google.gwt.event.dom.client.ClickEvent;
1012
import com.google.gwt.event.dom.client.ClickHandler;
@@ -333,7 +335,21 @@ public int hashCode(TracTracRaceRecordDTO t) {
333335
return t.id.hashCode();
334336
}
335337
}, racesFilterablePanel.getAllListDataProvider(), racesTable);
336-
racesTable.addColumn(selectionCheckboxColumn, selectionCheckboxColumn.getHeader());
338+
selectionCheckboxColumn.setSortable(false);
339+
final CheckboxCell selectAllCell = new CheckboxCell();
340+
final Header<Boolean> selectAllHeader = new Header<Boolean>(selectAllCell) {
341+
@Override
342+
public Boolean getValue() {
343+
return false;
344+
345+
}};
346+
selectAllHeader.setUpdater(value -> {
347+
for (final TracTracRaceRecordDTO race : raceList.getList()) {
348+
selectionCheckboxColumn.getSelectionModel().setSelected(race, value);
349+
}
350+
value = !value;
351+
});
352+
racesTable.addColumn(selectionCheckboxColumn, selectAllHeader);
337353
racesTable.addColumn(regattaNameColumn, stringMessages.event());
338354
racesTable.addColumn(raceNameColumn, stringMessages.race());
339355
racesTable.addColumn(boatClassColumn, stringMessages.boatClass());

java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/coursecreation/CourseTemplatePanel.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,8 +219,8 @@ public Boolean getValue() {
219219
if (refreshableSelectionModel != null) {
220220
refreshableSelectionModel.setSelected(ct, value);
221221
}
222-
value = !value;
223222
}
223+
value = !value;
224224
});
225225
courseTemplateTable.addColumn(checkColumn, selectAllHeader);
226226
courseTemplateTable.setColumnWidth(checkColumn, 40, Unit.PX);

java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/coursecreation/MarkPropertiesPanel.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,13 +192,14 @@ public Boolean getValue() {
192192
return false;
193193
}
194194
};
195+
checkColumn.setSortable(false);
195196
selectAllHeader.setUpdater(value -> {
196197
for (MarkPropertiesDTO mp : markPropertiesListDataProvider.getList()) {
197198
if (refreshableSelectionModel != null) {
198199
refreshableSelectionModel.setSelected(mp, value);
199200
}
200-
value = !value;
201201
}
202+
value = !value;
202203
});
203204
markPropertiesTable.addColumn(checkColumn, selectAllHeader);
204205
markPropertiesTable.setColumnWidth(checkColumn, 40, Unit.PX);

java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/coursecreation/MarkRolePanel.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -190,20 +190,20 @@ public int hashCode(MarkRoleDTO t) {
190190
}
191191
}, filterableMarkRoles.getAllListDataProvider(), markRolesTable);
192192
checkColumn.setSortable(false);
193-
CheckboxCell selectAllCell = new CheckboxCell();
194-
Header<Boolean> selectAllHeader = new Header<Boolean>(selectAllCell) {
193+
final CheckboxCell selectAllCell = new CheckboxCell();
194+
final Header<Boolean> selectAllHeader = new Header<Boolean>(selectAllCell) {
195195
@Override
196196
public Boolean getValue() {
197197
return false;
198198
}
199199
};
200200
selectAllHeader.setUpdater(value -> {
201-
for (MarkRoleDTO role : markRoleListDataProvider.getList()) {
201+
for (final MarkRoleDTO role : markRoleListDataProvider.getList()) {
202202
if (refreshableSelectionModel != null) {
203203
refreshableSelectionModel.setSelected(role, value);
204204
}
205-
value = !value;
206205
}
206+
value = !value;
207207
});
208208
markRolesTable.addColumn(checkColumn, selectAllHeader);
209209
markRolesTable.setColumnWidth(checkColumn, 40, Unit.PX);

java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/coursecreation/MarkTemplatePanel.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,8 +166,8 @@ public Boolean getValue() {
166166
selectAllHeader.setUpdater(value -> {
167167
for (MarkTemplateDTO mt : markTemplateListDataProvider.getList()) {
168168
refreshableSelectionModel.setSelected(mt, value);
169-
value = !value;
170169
}
170+
value = !value;
171171
});
172172
markTemplateTable.addColumn(checkColumn, selectAllHeader);
173173
markTemplateTable.setColumnWidth(checkColumn, 40, Unit.PX);

java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/celltable/TableWrapper.java

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,7 @@
2121
import com.sap.sse.gwt.client.StringMessages;
2222
import com.sap.sse.gwt.client.panels.AbstractFilterablePanel;
2323
import com.google.gwt.user.cellview.client.Header;
24-
import com.google.gwt.cell.client.Cell.Context;
2524
import com.google.gwt.cell.client.CheckboxCell;
26-
import com.google.gwt.dom.client.Element;
27-
import com.google.gwt.dom.client.NativeEvent;
2825

2926
/**
3027
* The {@link #getTable() table} created and wrapped by this object offers already a {@link ListHandler} for sorting.
@@ -249,25 +246,20 @@ public void registerSelectionModelOnNewDataProvider(ListDataProvider<T> dataProv
249246
final S typedSelectionModel = (S) selectionCheckboxColumn.getSelectionModel();
250247
selectionModel = typedSelectionModel;
251248
table.setSelectionModel(selectionModel, selectionCheckboxColumn.getSelectionManager());
252-
final Header<Boolean> selectAllHeader = new Header<Boolean>(new CheckboxCell(/* depends on selection */ true, /* handles selection */ false)) {
253-
private boolean checked = false;
249+
final Header<Boolean> selectAllHeader = new Header<Boolean>(new CheckboxCell()) {
254250
@Override
255251
public Boolean getValue() {
256-
return checked;
252+
return false;
257253
}
258-
@Override
259-
public void onBrowserEvent(Context context, Element elem, NativeEvent event) {
260-
super.onBrowserEvent(context, elem, event);
261-
final String type = event.getType();
262-
if ("click".equals(type) || "change".equals(type)) {
263-
checked = !checked;
264-
for (final T row : dataProvider.getList()) {
265-
selectionModel.setSelected(row, checked);
266-
}
267-
table.redrawHeaders();
254+
};
255+
selectAllHeader.setUpdater(value -> {
256+
for (final T ct : dataProvider.getList()) {
257+
if (selectionModel != null) {
258+
selectionModel.setSelected(ct, value);
268259
}
269260
}
270-
};
261+
value = !value;
262+
});
271263
table.addColumn(selectionCheckboxColumn, selectAllHeader);
272264
} else {
273265
@SuppressWarnings("unchecked")

java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/component/RoleDefinitionsPanel.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,6 @@ public int hashCode(RoleDefinitionDTO t) {
182182
}, filterablePanelRoleDefinitions.getAllListDataProvider(), table);
183183
final ListHandler<RoleDefinitionDTO> columnSortHandler = new ListHandler<>(rolesListDataProvider.getList());
184184
table.addColumnSortHandler(columnSortHandler);
185-
columnSortHandler.setComparator(roleSelectionCheckboxColumn, roleSelectionCheckboxColumn.getComparator());
186185
final TextColumn<RoleDefinitionDTO> roleDefinitionUUidColumn = new AbstractSortableTextColumn<RoleDefinitionDTO>(
187186
role -> role.getId() == null ? "<null>" : role.getId().toString(), columnSortHandler);
188187
final TextColumn<RoleDefinitionDTO> roleDefinitionNameColumn = new AbstractSortableTextColumn<RoleDefinitionDTO>(role->role.getName(), columnSortHandler);

0 commit comments

Comments
 (0)