mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-16 17:21:00 +00:00
Initial implementation of action bar for CompetitorTable
This commit is contained in:
1 parent
249b01e3df
commit
a60146b350
4 files changed
+82
-147
No files matched your search
+1
-71
@@ -7,7 +7,6 @@ import com.google.gwt.core.client.Callback;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.event.dom.client.ClickHandler;
|
||||
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.CaptionPanel;
|
||||
import com.google.gwt.user.client.ui.CheckBox;
|
||||
@@ -68,17 +67,10 @@ public abstract class AbstractCompetitorRegistrationsDialog extends DataEntryDia
|
||||
addCompetitorButton.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
openAddCompetitorDialog();
|
||||
registeredCompetitorsTable.openEditCompetitorDialog(new CompetitorDTOImpl(), boatClass);
|
||||
}
|
||||
});
|
||||
|
||||
final Button editCompetitorButton = new Button(stringMessages.edit(stringMessages.competitor()));
|
||||
editCompetitorButton.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
openEditCompetitorDialog();
|
||||
}
|
||||
});
|
||||
final Button inviteCompetitorsButton = new Button(stringMessages.inviteSelectedCompetitors());
|
||||
inviteCompetitorsButton.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
@@ -122,7 +114,6 @@ public abstract class AbstractCompetitorRegistrationsDialog extends DataEntryDia
|
||||
competitorRegistrationPanel.setCellVerticalAlignment(movePanel, HasVerticalAlignment.ALIGN_MIDDLE);
|
||||
competitorRegistrationPanel.add(allCompetitorsPanel);
|
||||
buttonPanel.add(addCompetitorButton);
|
||||
buttonPanel.add(editCompetitorButton);
|
||||
buttonPanel.add(inviteCompetitorsButton);
|
||||
mainPanel.add(buttonPanel);
|
||||
showOnlyCompetitorsOfLogCheckBox = new CheckBox(stringMessages.showOnlyCompetitorsOfLog());
|
||||
@@ -155,71 +146,11 @@ public abstract class AbstractCompetitorRegistrationsDialog extends DataEntryDia
|
||||
CompetitorTableWrapper<RefreshableMultiSelectionModel<CompetitorDTO>> to) {
|
||||
move(from, to, from.getSelectionModel().getSelectedSet());
|
||||
}
|
||||
|
||||
private void openAddCompetitorDialog() {
|
||||
new CompetitorEditDialog(stringMessages, new CompetitorDTOImpl(),
|
||||
new DataEntryDialog.DialogCallback<CompetitorDTO>() {
|
||||
@Override
|
||||
public void ok(CompetitorDTO competitor) {
|
||||
sailingService.addOrUpdateCompetitor(competitor, new AsyncCallback<CompetitorDTO>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError("Error trying to add competitor: " + caught.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(CompetitorDTO updatedCompetitor) {
|
||||
registeredCompetitorsTable.getFilterField().add(updatedCompetitor);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel() {
|
||||
}
|
||||
}, boatClass).show();
|
||||
}
|
||||
|
||||
protected boolean showOnlyCompetitorsOfLog(){
|
||||
return showOnlyCompetitorsOfLogCheckBox.getValue();
|
||||
}
|
||||
|
||||
private void openEditCompetitorDialog() {
|
||||
// get currently selected competitor
|
||||
if (registeredCompetitorsTable.getSelectionModel().getSelectedSet().size() != 1) {
|
||||
// show some warning
|
||||
} else {
|
||||
final CompetitorDTO competitorToEdit = registeredCompetitorsTable.getSelectionModel().getSelectedSet()
|
||||
.iterator().next();
|
||||
new CompetitorEditDialog(stringMessages, competitorToEdit,
|
||||
new DataEntryDialog.DialogCallback<CompetitorDTO>() {
|
||||
@Override
|
||||
public void ok(CompetitorDTO competitor) {
|
||||
sailingService.addOrUpdateCompetitor(competitor, new AsyncCallback<CompetitorDTO>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError("Error trying to add competitor: " + caught.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(CompetitorDTO updatedCompetitor) {
|
||||
int editedCompetitorIndex = registeredCompetitorsTable.getDataProvider().getList()
|
||||
.indexOf(competitorToEdit);
|
||||
registeredCompetitorsTable.getDataProvider().getList().remove(competitorToEdit);
|
||||
registeredCompetitorsTable.getDataProvider().getList()
|
||||
.add(editedCompetitorIndex, updatedCompetitor);
|
||||
registeredCompetitorsTable.getDataProvider().refresh();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel() {
|
||||
}
|
||||
}, /* boatClass */null).show();
|
||||
}
|
||||
}
|
||||
|
||||
protected void refreshCompetitors() {
|
||||
registeredCompetitorsTable.getFilterField().removeAll();
|
||||
allCompetitorsTable.getFilterField().removeAll();
|
||||
@@ -263,5 +194,4 @@ public abstract class AbstractCompetitorRegistrationsDialog extends DataEntryDia
|
||||
Util.addAll(registeredCompetitorsTable.getAllCompetitors(), registeredCompetitors);
|
||||
return registeredCompetitors;
|
||||
}
|
||||
|
||||
}
|
||||
+4
-76
@@ -1,15 +1,9 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import com.google.gwt.cell.client.FieldUpdater;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.event.dom.client.ClickHandler;
|
||||
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.HorizontalPanel;
|
||||
import com.google.gwt.user.client.ui.SimplePanel;
|
||||
@@ -20,10 +14,8 @@ import com.sap.sailing.domain.common.dto.CompetitorDTO;
|
||||
import com.sap.sailing.domain.common.dto.CompetitorDTOImpl;
|
||||
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.gwt.client.ErrorReporter;
|
||||
import com.sap.sse.gwt.client.celltable.RefreshableMultiSelectionModel;
|
||||
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
|
||||
|
||||
/**
|
||||
* Allows an administrator to view and edit the set of competitors currently maintained by the server.
|
||||
@@ -32,9 +24,6 @@ import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
|
||||
*
|
||||
*/
|
||||
public class CompetitorPanel extends SimplePanel {
|
||||
private final SailingServiceAsync sailingService;
|
||||
private final StringMessages stringMessages;
|
||||
private final ErrorReporter errorReporter;
|
||||
private final CompetitorTableWrapper<RefreshableMultiSelectionModel<CompetitorDTO>> competitorTable;
|
||||
private final RefreshableMultiSelectionModel<CompetitorDTO> refreshableCompetitorSelectionModel;
|
||||
private final String leaderboardName;
|
||||
@@ -47,9 +36,6 @@ public class CompetitorPanel extends SimplePanel {
|
||||
public CompetitorPanel(final SailingServiceAsync sailingService, final String leaderboardName,
|
||||
final StringMessages stringMessages, final ErrorReporter errorReporter) {
|
||||
super();
|
||||
this.sailingService = sailingService;
|
||||
this.stringMessages = stringMessages;
|
||||
this.errorReporter = errorReporter;
|
||||
this.leaderboardName = leaderboardName;
|
||||
this.competitorTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, /* multiSelection */ true, /* enablePager */ false);
|
||||
this.refreshableCompetitorSelectionModel = (RefreshableMultiSelectionModel<CompetitorDTO>) competitorTable.getSelectionModel();
|
||||
@@ -74,7 +60,7 @@ public class CompetitorPanel extends SimplePanel {
|
||||
allowReloadButton.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
allowUpdate(refreshableCompetitorSelectionModel.getSelectedSet());
|
||||
competitorTable.allowUpdate(refreshableCompetitorSelectionModel.getSelectedSet());
|
||||
}
|
||||
});
|
||||
buttonPanel.add(allowReloadButton);
|
||||
@@ -115,24 +101,8 @@ public class CompetitorPanel extends SimplePanel {
|
||||
}
|
||||
|
||||
competitorsPanel.add(buttonPanel);
|
||||
|
||||
// competitor table
|
||||
ImagesBarColumn<CompetitorDTO, CompetitorConfigImagesBarCell> competitorActionColumn = new ImagesBarColumn<CompetitorDTO, CompetitorConfigImagesBarCell>(
|
||||
new CompetitorConfigImagesBarCell(stringMessages));
|
||||
competitorActionColumn.setFieldUpdater(new FieldUpdater<CompetitorDTO, String>() {
|
||||
@Override
|
||||
public void update(int index, final CompetitorDTO competitor, String value) {
|
||||
if (CompetitorConfigImagesBarCell.ACTION_EDIT.equals(value)) {
|
||||
openEditCompetitorDialog(competitor);
|
||||
} else if (CompetitorConfigImagesBarCell.ACTION_REFRESH.equals(value)) {
|
||||
allowUpdate(Collections.singleton(competitor));
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
competitorTable.getTable().addColumn(competitorActionColumn, stringMessages.actions());
|
||||
mainPanel.add(competitorTable);
|
||||
|
||||
refreshableCompetitorSelectionModel.addSelectionChangeHandler(new Handler() {
|
||||
@Override
|
||||
public void onSelectionChange(SelectionChangeEvent event) {
|
||||
@@ -146,52 +116,10 @@ public class CompetitorPanel extends SimplePanel {
|
||||
}
|
||||
}
|
||||
|
||||
private void allowUpdate(final Iterable<CompetitorDTO> competitors) {
|
||||
List<CompetitorDTO> serializableSingletonList = new ArrayList<CompetitorDTO>();
|
||||
Util.addAll(competitors, serializableSingletonList);
|
||||
sailingService.allowCompetitorResetToDefaults(serializableSingletonList, new AsyncCallback<Void>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError("Error trying to allow resetting competitors " + competitors
|
||||
+ " to defaults: " + caught.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(Void result) {
|
||||
Window.alert(stringMessages.successfullyAllowedCompetitorReset(competitors.toString()));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void openAddCompetitorDialog() {
|
||||
openEditCompetitorDialog(new CompetitorDTOImpl());
|
||||
competitorTable.openEditCompetitorDialog(new CompetitorDTOImpl(), /* boat class to be used from CompetitorDTO */ null);
|
||||
}
|
||||
|
||||
private void openEditCompetitorDialog(CompetitorDTO competitor) {
|
||||
final CompetitorEditDialog dialog = new CompetitorEditDialog(stringMessages, competitor, new DialogCallback<CompetitorDTO>() {
|
||||
@Override
|
||||
public void ok(CompetitorDTO competitor) {
|
||||
sailingService.addOrUpdateCompetitor(competitor, new AsyncCallback<CompetitorDTO>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError("Error trying to update competitor: " + caught.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(CompetitorDTO updatedCompetitor) {
|
||||
refreshCompetitorList();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel() {
|
||||
}
|
||||
}, /* boat class to be used from CompetitorDTO */ null);
|
||||
dialog.ensureDebugId("CompetitorEditDialog");
|
||||
dialog.show();
|
||||
}
|
||||
|
||||
|
||||
public void refreshCompetitorList() {
|
||||
competitorTable.refreshCompetitorList(leaderboardName);
|
||||
}
|
||||
|
||||
+75
@@ -1,9 +1,11 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.cell.client.FieldUpdater;
|
||||
import com.google.gwt.cell.client.SafeHtmlCell;
|
||||
import com.google.gwt.core.client.Callback;
|
||||
import com.google.gwt.resources.client.ImageResource;
|
||||
@@ -12,6 +14,7 @@ import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
|
||||
import com.google.gwt.user.cellview.client.Column;
|
||||
import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler;
|
||||
import com.google.gwt.user.cellview.client.TextColumn;
|
||||
import com.google.gwt.user.client.Window;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.ImageResourceRenderer;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
@@ -21,10 +24,12 @@ import com.sap.sailing.gwt.ui.client.FlagImageResolver;
|
||||
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sse.common.Color;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.util.NaturalComparator;
|
||||
import com.sap.sse.gwt.client.ErrorReporter;
|
||||
import com.sap.sse.gwt.client.celltable.EntityIdentityComparator;
|
||||
import com.sap.sse.gwt.client.celltable.RefreshableSelectionModel;
|
||||
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
|
||||
import com.sap.sse.gwt.client.panels.LabeledAbstractFilterablePanel;
|
||||
|
||||
public class CompetitorTableWrapper<S extends RefreshableSelectionModel<CompetitorDTO>> extends TableWrapper<CompetitorDTO, S> {
|
||||
@@ -209,6 +214,22 @@ public class CompetitorTableWrapper<S extends RefreshableSelectionModel<Competit
|
||||
return string;
|
||||
}
|
||||
};
|
||||
|
||||
//CompetitorTableEditFeatures
|
||||
ImagesBarColumn<CompetitorDTO, CompetitorConfigImagesBarCell> competitorActionColumn = new ImagesBarColumn<CompetitorDTO, CompetitorConfigImagesBarCell>(
|
||||
new CompetitorConfigImagesBarCell(stringMessages));
|
||||
competitorActionColumn.setFieldUpdater(new FieldUpdater<CompetitorDTO, String>() {
|
||||
@Override
|
||||
public void update(int index, final CompetitorDTO competitor, String value) {
|
||||
if (CompetitorConfigImagesBarCell.ACTION_EDIT.equals(value)) {
|
||||
openEditCompetitorDialog(competitor, competitor.getBoatClass().getName());
|
||||
} else if (CompetitorConfigImagesBarCell.ACTION_REFRESH.equals(value)) {
|
||||
allowUpdate(Collections.singleton(competitor));
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
mainPanel.insert(filterField, 0);
|
||||
table.addColumnSortHandler(competitorColumnListHandler);
|
||||
table.addColumn(sailIdColumn, stringMessages.sailNumber());
|
||||
@@ -220,6 +241,7 @@ public class CompetitorTableWrapper<S extends RefreshableSelectionModel<Competit
|
||||
table.addColumn(imageColumn, stringMessages.image());
|
||||
table.addColumn(competitorEMailColumn, stringMessages.email());
|
||||
table.addColumn(competitorIdColumn, stringMessages.id());
|
||||
table.addColumn(competitorActionColumn, stringMessages.actions());
|
||||
table.ensureDebugId("CompetitorsTable");
|
||||
}
|
||||
|
||||
@@ -287,4 +309,57 @@ public class CompetitorTableWrapper<S extends RefreshableSelectionModel<Competit
|
||||
private void getFilteredCompetitors(Iterable<CompetitorDTO> result) {
|
||||
filterField.updateAll(result);
|
||||
}
|
||||
|
||||
void openEditCompetitorDialog(final CompetitorDTO competitor, String boatClass) {
|
||||
final CompetitorEditDialog dialog = new CompetitorEditDialog(stringMessages, competitor, new DialogCallback<CompetitorDTO>() {
|
||||
@Override
|
||||
public void ok(final CompetitorDTO competitor) {
|
||||
sailingService.addOrUpdateCompetitor(competitor, new AsyncCallback<CompetitorDTO>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError("Error trying to update competitor: " + caught.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(CompetitorDTO updatedCompetitor) {
|
||||
//only reload selected competitors reloading wirh refreshCompetitorList(leaderboardName)
|
||||
//would not work in case the list is not based on a leaderboard e.g. AbstractCompetitorRegistrationDialog
|
||||
int editedCompetitorIndex = getDataProvider().getList()
|
||||
.indexOf(competitor);
|
||||
getDataProvider().getList().remove(competitor);
|
||||
if (editedCompetitorIndex >= 0){
|
||||
getDataProvider().getList().add(editedCompetitorIndex, updatedCompetitor);
|
||||
} else {
|
||||
//in case competitor was not present --> not edit, but create
|
||||
getDataProvider().getList().add(updatedCompetitor);
|
||||
}
|
||||
getDataProvider().refresh();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel() {
|
||||
}
|
||||
}, boatClass);
|
||||
dialog.ensureDebugId("CompetitorEditDialog");
|
||||
dialog.show();
|
||||
}
|
||||
|
||||
protected void allowUpdate(final Iterable<CompetitorDTO> competitors) {
|
||||
List<CompetitorDTO> serializableSingletonList = new ArrayList<CompetitorDTO>();
|
||||
Util.addAll(competitors, serializableSingletonList);
|
||||
sailingService.allowCompetitorResetToDefaults(serializableSingletonList, new AsyncCallback<Void>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError("Error trying to allow resetting competitors " + competitors
|
||||
+ " to defaults: " + caught.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(Void result) {
|
||||
Window.alert(stringMessages.successfullyAllowedCompetitorReset(competitors.toString()));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
+2
@@ -30,6 +30,7 @@ public abstract class TableWrapper<T, S extends RefreshableSelectionModel<T>> im
|
||||
protected VerticalPanel mainPanel;
|
||||
protected final SailingServiceAsync sailingService;
|
||||
protected final ErrorReporter errorReporter;
|
||||
protected final StringMessages stringMessages;
|
||||
|
||||
private final AdminConsoleTableResources tableRes = GWT.create(AdminConsoleTableResources.class);
|
||||
private final ListHandler<T> columnSortHandler;
|
||||
@@ -48,6 +49,7 @@ public abstract class TableWrapper<T, S extends RefreshableSelectionModel<T>> im
|
||||
boolean multiSelection, boolean enablePager, EntityIdentityComparator<T> entityIdentityComparator) {
|
||||
this.sailingService = sailingService;
|
||||
this.errorReporter = errorReporter;
|
||||
this.stringMessages = stringMessages;
|
||||
table = new FlushableCellTable<T>(10000, tableRes);
|
||||
table.ensureDebugId("WrappedTable");
|
||||
this.dataProvider = new ListDataProvider<T>();
|
||||
|
||||
Reference in new issue
Block a user