mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-03 19:03:52 +00:00
Completed Bug 986 - Replace use of AsyncCallback<> in DataEntryDialog<> by dedicated Ok/Cancel callback interface
This commit is contained in:
1 parent
ce3a533909
commit
eee0fef97e
32 files changed
+2802
-2812
No files matched your search
+107
-108
@@ -1,108 +1,107 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.ListBox;
|
||||
import com.google.gwt.user.client.ui.LongBox;
|
||||
import com.google.gwt.user.client.ui.TextBox;
|
||||
import com.sap.sailing.domain.common.ScoringSchemeType;
|
||||
import com.sap.sailing.gwt.ui.client.DataEntryDialog;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.leaderboard.ScoringSchemeTypeFormatter;
|
||||
|
||||
public abstract class AbstractLeaderboardDialog extends DataEntryDialog<LeaderboardDescriptor> {
|
||||
protected final StringMessages stringMessages;
|
||||
protected TextBox nameTextBox;
|
||||
protected LeaderboardDescriptor leaderboard;
|
||||
|
||||
protected LongBox[] discardThresholdBoxes;
|
||||
protected static final int MAX_NUMBER_OF_DISCARDED_RESULTS = 4;
|
||||
|
||||
public AbstractLeaderboardDialog(String title, LeaderboardDescriptor leaderboardDTO, StringMessages stringConstants,
|
||||
Validator<LeaderboardDescriptor> validator, AsyncCallback<LeaderboardDescriptor> callback) {
|
||||
super(title, null, stringConstants.ok(), stringConstants.cancel(), validator, callback);
|
||||
this.stringMessages = stringConstants;
|
||||
this.leaderboard = leaderboardDTO;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected LeaderboardDescriptor getResult() {
|
||||
int[] discardThresholdsBoxContents = getDiscardThresholds(discardThresholdBoxes);
|
||||
leaderboard.setName(nameTextBox.getValue());
|
||||
leaderboard.setDiscardThresholds(discardThresholdsBoxContents);
|
||||
return leaderboard;
|
||||
}
|
||||
|
||||
protected static int[] getDiscardThresholds(LongBox[] discardThresholdBoxes) {
|
||||
List<Integer> discardThresholds = new ArrayList<Integer>();
|
||||
// go backwards; starting from first non-zero element, add them; take over leading zeroes which validator shall discard
|
||||
for (int i = discardThresholdBoxes.length-1; i>=0; i--) {
|
||||
if ((discardThresholdBoxes[i].getValue() != null
|
||||
&& discardThresholdBoxes[i].getValue().toString().length() > 0) || !discardThresholds.isEmpty()) {
|
||||
if (discardThresholdBoxes[i].getValue() == null) {
|
||||
discardThresholds.add(0, 0);
|
||||
} else {
|
||||
discardThresholds.add(0, discardThresholdBoxes[i].getValue().intValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
int[] discardThresholdsBoxContents = new int[discardThresholds.size()];
|
||||
for (int i = 0; i < discardThresholds.size(); i++) {
|
||||
discardThresholdsBoxContents[i] = discardThresholds.get(i);
|
||||
}
|
||||
return discardThresholdsBoxContents;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void show() {
|
||||
super.show();
|
||||
nameTextBox.setFocus(true);
|
||||
}
|
||||
|
||||
protected static LongBox[] initEmptyDiscardThresholdBoxes(DataEntryDialog<?> dialog) {
|
||||
LongBox[] result = new LongBox[MAX_NUMBER_OF_DISCARDED_RESULTS];
|
||||
for (int i = 0; i < result.length; i++) {
|
||||
result[i] = dialog.createLongBoxWithOptionalValue(null, 2);
|
||||
result[i].setVisibleLength(2);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
protected static LongBox[] initPrefilledDiscardThresholdBoxes(int[] valuesToShow, DataEntryDialog<?> dialog) {
|
||||
LongBox[] result = new LongBox[MAX_NUMBER_OF_DISCARDED_RESULTS];
|
||||
for (int i = 0; i < result.length; i++) {
|
||||
if (i < valuesToShow.length) {
|
||||
result[i] = dialog.createLongBox(valuesToShow[i], 2);
|
||||
} else {
|
||||
result[i] = dialog.createLongBoxWithOptionalValue(null, 2);
|
||||
}
|
||||
result[i].setVisibleLength(2);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
protected static ListBox createScoringSchemeListBox(DataEntryDialog<?> dialog, StringMessages stringMessages) {
|
||||
ListBox scoringSchemeListBox2 = dialog.createListBox(false);
|
||||
for (ScoringSchemeType scoringSchemeType: ScoringSchemeType.values()) {
|
||||
scoringSchemeListBox2.addItem(ScoringSchemeTypeFormatter.format(scoringSchemeType, stringMessages));
|
||||
}
|
||||
return scoringSchemeListBox2;
|
||||
}
|
||||
|
||||
protected static ScoringSchemeType getSelectedScoringSchemeType(ListBox scoringSchemeListBox, StringMessages stringMessages) {
|
||||
ScoringSchemeType result = null;
|
||||
int selIndex = scoringSchemeListBox.getSelectedIndex();
|
||||
if (selIndex >= 0) {
|
||||
String itemText = scoringSchemeListBox.getItemText(selIndex);
|
||||
for (ScoringSchemeType scoringSchemeType : ScoringSchemeType.values()) {
|
||||
if (ScoringSchemeTypeFormatter.format(scoringSchemeType, stringMessages).equals(itemText)) {
|
||||
result = scoringSchemeType;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.user.client.ui.ListBox;
|
||||
import com.google.gwt.user.client.ui.LongBox;
|
||||
import com.google.gwt.user.client.ui.TextBox;
|
||||
import com.sap.sailing.domain.common.ScoringSchemeType;
|
||||
import com.sap.sailing.gwt.ui.client.DataEntryDialog;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.leaderboard.ScoringSchemeTypeFormatter;
|
||||
|
||||
public abstract class AbstractLeaderboardDialog extends DataEntryDialog<LeaderboardDescriptor> {
|
||||
protected final StringMessages stringMessages;
|
||||
protected TextBox nameTextBox;
|
||||
protected LeaderboardDescriptor leaderboard;
|
||||
|
||||
protected LongBox[] discardThresholdBoxes;
|
||||
protected static final int MAX_NUMBER_OF_DISCARDED_RESULTS = 4;
|
||||
|
||||
public AbstractLeaderboardDialog(String title, LeaderboardDescriptor leaderboardDTO, StringMessages stringConstants,
|
||||
Validator<LeaderboardDescriptor> validator, DialogCallback<LeaderboardDescriptor> callback) {
|
||||
super(title, null, stringConstants.ok(), stringConstants.cancel(), validator, callback);
|
||||
this.stringMessages = stringConstants;
|
||||
this.leaderboard = leaderboardDTO;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected LeaderboardDescriptor getResult() {
|
||||
int[] discardThresholdsBoxContents = getDiscardThresholds(discardThresholdBoxes);
|
||||
leaderboard.setName(nameTextBox.getValue());
|
||||
leaderboard.setDiscardThresholds(discardThresholdsBoxContents);
|
||||
return leaderboard;
|
||||
}
|
||||
|
||||
protected static int[] getDiscardThresholds(LongBox[] discardThresholdBoxes) {
|
||||
List<Integer> discardThresholds = new ArrayList<Integer>();
|
||||
// go backwards; starting from first non-zero element, add them; take over leading zeroes which validator shall discard
|
||||
for (int i = discardThresholdBoxes.length-1; i>=0; i--) {
|
||||
if ((discardThresholdBoxes[i].getValue() != null
|
||||
&& discardThresholdBoxes[i].getValue().toString().length() > 0) || !discardThresholds.isEmpty()) {
|
||||
if (discardThresholdBoxes[i].getValue() == null) {
|
||||
discardThresholds.add(0, 0);
|
||||
} else {
|
||||
discardThresholds.add(0, discardThresholdBoxes[i].getValue().intValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
int[] discardThresholdsBoxContents = new int[discardThresholds.size()];
|
||||
for (int i = 0; i < discardThresholds.size(); i++) {
|
||||
discardThresholdsBoxContents[i] = discardThresholds.get(i);
|
||||
}
|
||||
return discardThresholdsBoxContents;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void show() {
|
||||
super.show();
|
||||
nameTextBox.setFocus(true);
|
||||
}
|
||||
|
||||
protected static LongBox[] initEmptyDiscardThresholdBoxes(DataEntryDialog<?> dialog) {
|
||||
LongBox[] result = new LongBox[MAX_NUMBER_OF_DISCARDED_RESULTS];
|
||||
for (int i = 0; i < result.length; i++) {
|
||||
result[i] = dialog.createLongBoxWithOptionalValue(null, 2);
|
||||
result[i].setVisibleLength(2);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
protected static LongBox[] initPrefilledDiscardThresholdBoxes(int[] valuesToShow, DataEntryDialog<?> dialog) {
|
||||
LongBox[] result = new LongBox[MAX_NUMBER_OF_DISCARDED_RESULTS];
|
||||
for (int i = 0; i < result.length; i++) {
|
||||
if (i < valuesToShow.length) {
|
||||
result[i] = dialog.createLongBox(valuesToShow[i], 2);
|
||||
} else {
|
||||
result[i] = dialog.createLongBoxWithOptionalValue(null, 2);
|
||||
}
|
||||
result[i].setVisibleLength(2);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
protected static ListBox createScoringSchemeListBox(DataEntryDialog<?> dialog, StringMessages stringMessages) {
|
||||
ListBox scoringSchemeListBox2 = dialog.createListBox(false);
|
||||
for (ScoringSchemeType scoringSchemeType: ScoringSchemeType.values()) {
|
||||
scoringSchemeListBox2.addItem(ScoringSchemeTypeFormatter.format(scoringSchemeType, stringMessages));
|
||||
}
|
||||
return scoringSchemeListBox2;
|
||||
}
|
||||
|
||||
protected static ScoringSchemeType getSelectedScoringSchemeType(ListBox scoringSchemeListBox, StringMessages stringMessages) {
|
||||
ScoringSchemeType result = null;
|
||||
int selIndex = scoringSchemeListBox.getSelectedIndex();
|
||||
if (selIndex >= 0) {
|
||||
String itemText = scoringSchemeListBox.getItemText(selIndex);
|
||||
for (ScoringSchemeType scoringSchemeType : ScoringSchemeType.values()) {
|
||||
if (ScoringSchemeTypeFormatter.format(scoringSchemeType, stringMessages).equals(itemText)) {
|
||||
result = scoringSchemeType;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
+21
-22
@@ -1,22 +1,21 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.EventDTO;
|
||||
|
||||
public class EventCreateDialog extends EventDialog {
|
||||
|
||||
public EventCreateDialog(Collection<EventDTO> existingEvents,
|
||||
StringMessages stringConstants, AsyncCallback<EventDTO> callback) {
|
||||
super(new EventDTO(), new EventParameterValidator(stringConstants, existingEvents),
|
||||
stringConstants, callback);
|
||||
|
||||
nameEntryField = createTextBox(null);
|
||||
nameEntryField.setWidth("200px");
|
||||
venueEntryField = createTextBox(null);
|
||||
venueEntryField.setWidth("200px");
|
||||
}
|
||||
|
||||
}
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.EventDTO;
|
||||
|
||||
public class EventCreateDialog extends EventDialog {
|
||||
|
||||
public EventCreateDialog(Collection<EventDTO> existingEvents,
|
||||
StringMessages stringConstants, DialogCallback<EventDTO> callback) {
|
||||
super(new EventDTO(), new EventParameterValidator(stringConstants, existingEvents),
|
||||
stringConstants, callback);
|
||||
|
||||
nameEntryField = createTextBox(null);
|
||||
nameEntryField.setWidth("200px");
|
||||
venueEntryField = createTextBox(null);
|
||||
venueEntryField.setWidth("200px");
|
||||
}
|
||||
|
||||
}
|
||||
+101
-102
@@ -1,102 +1,101 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.Grid;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.TextBox;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.gwt.ui.client.DataEntryDialog;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.EventDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.VenueDTO;
|
||||
|
||||
public class EventDialog extends DataEntryDialog<EventDTO> {
|
||||
|
||||
protected StringMessages stringConstants;
|
||||
protected EventDTO event;
|
||||
|
||||
protected TextBox nameEntryField;
|
||||
protected TextBox venueEntryField;
|
||||
|
||||
protected static class EventParameterValidator implements Validator<EventDTO> {
|
||||
|
||||
private StringMessages stringConstants;
|
||||
private ArrayList<EventDTO> existingEvents;
|
||||
|
||||
public EventParameterValidator(StringMessages stringConstants, Collection<EventDTO> existingEvents) {
|
||||
this.stringConstants = stringConstants;
|
||||
this.existingEvents = new ArrayList<EventDTO>(existingEvents);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getErrorMessage(EventDTO eventToValidate) {
|
||||
String errorMessage = null;
|
||||
boolean nameNotEmpty = eventToValidate.name != null && eventToValidate.name.length() > 0;
|
||||
boolean venueNotEmpty = eventToValidate.venue.name != null && eventToValidate.venue.name.length() > 0;
|
||||
|
||||
boolean unique = true;
|
||||
for (EventDTO event : existingEvents) {
|
||||
if (event.name.equals(eventToValidate.name)) {
|
||||
unique = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!nameNotEmpty) {
|
||||
errorMessage = stringConstants.pleaseEnterAName();
|
||||
} else if (!venueNotEmpty) {
|
||||
errorMessage = stringConstants.pleaseEnterNonEmptyVenue();
|
||||
} else if (!unique) {
|
||||
errorMessage = stringConstants.eventWithThisNameAlreadyExists();
|
||||
}
|
||||
|
||||
return errorMessage;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public EventDialog(EventDTO event, EventParameterValidator validator, StringMessages stringConstants,
|
||||
AsyncCallback<EventDTO> callback) {
|
||||
super(stringConstants.event(), null, stringConstants.ok(), stringConstants.cancel(), validator,
|
||||
callback);
|
||||
this.stringConstants = stringConstants;
|
||||
this.event = event;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected EventDTO getResult() {
|
||||
event.name = nameEntryField.getText();
|
||||
event.venue = new VenueDTO();
|
||||
event.venue.name = venueEntryField.getText();
|
||||
return event;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Widget getAdditionalWidget() {
|
||||
VerticalPanel panel = new VerticalPanel();
|
||||
Widget additionalWidget = super.getAdditionalWidget();
|
||||
if (additionalWidget != null) {
|
||||
panel.add(additionalWidget);
|
||||
}
|
||||
|
||||
Grid formGrid = new Grid(2, 2);
|
||||
panel.add(formGrid);
|
||||
|
||||
formGrid.setWidget(0, 0, new Label(stringConstants.name() + ":"));
|
||||
formGrid.setWidget(0, 1, nameEntryField);
|
||||
formGrid.setWidget(1, 0, new Label(stringConstants.venue() + ":"));
|
||||
formGrid.setWidget(1, 1, venueEntryField);
|
||||
return panel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void show() {
|
||||
super.show();
|
||||
nameEntryField.setFocus(true);
|
||||
}
|
||||
|
||||
}
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
|
||||
import com.google.gwt.user.client.ui.Grid;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.TextBox;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.gwt.ui.client.DataEntryDialog;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.EventDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.VenueDTO;
|
||||
|
||||
public class EventDialog extends DataEntryDialog<EventDTO> {
|
||||
|
||||
protected StringMessages stringConstants;
|
||||
protected EventDTO event;
|
||||
|
||||
protected TextBox nameEntryField;
|
||||
protected TextBox venueEntryField;
|
||||
|
||||
protected static class EventParameterValidator implements Validator<EventDTO> {
|
||||
|
||||
private StringMessages stringConstants;
|
||||
private ArrayList<EventDTO> existingEvents;
|
||||
|
||||
public EventParameterValidator(StringMessages stringConstants, Collection<EventDTO> existingEvents) {
|
||||
this.stringConstants = stringConstants;
|
||||
this.existingEvents = new ArrayList<EventDTO>(existingEvents);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getErrorMessage(EventDTO eventToValidate) {
|
||||
String errorMessage = null;
|
||||
boolean nameNotEmpty = eventToValidate.name != null && eventToValidate.name.length() > 0;
|
||||
boolean venueNotEmpty = eventToValidate.venue.name != null && eventToValidate.venue.name.length() > 0;
|
||||
|
||||
boolean unique = true;
|
||||
for (EventDTO event : existingEvents) {
|
||||
if (event.name.equals(eventToValidate.name)) {
|
||||
unique = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!nameNotEmpty) {
|
||||
errorMessage = stringConstants.pleaseEnterAName();
|
||||
} else if (!venueNotEmpty) {
|
||||
errorMessage = stringConstants.pleaseEnterNonEmptyVenue();
|
||||
} else if (!unique) {
|
||||
errorMessage = stringConstants.eventWithThisNameAlreadyExists();
|
||||
}
|
||||
|
||||
return errorMessage;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public EventDialog(EventDTO event, EventParameterValidator validator, StringMessages stringConstants,
|
||||
DialogCallback<EventDTO> callback) {
|
||||
super(stringConstants.event(), null, stringConstants.ok(), stringConstants.cancel(), validator,
|
||||
callback);
|
||||
this.stringConstants = stringConstants;
|
||||
this.event = event;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected EventDTO getResult() {
|
||||
event.name = nameEntryField.getText();
|
||||
event.venue = new VenueDTO();
|
||||
event.venue.name = venueEntryField.getText();
|
||||
return event;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Widget getAdditionalWidget() {
|
||||
VerticalPanel panel = new VerticalPanel();
|
||||
Widget additionalWidget = super.getAdditionalWidget();
|
||||
if (additionalWidget != null) {
|
||||
panel.add(additionalWidget);
|
||||
}
|
||||
|
||||
Grid formGrid = new Grid(2, 2);
|
||||
panel.add(formGrid);
|
||||
|
||||
formGrid.setWidget(0, 0, new Label(stringConstants.name() + ":"));
|
||||
formGrid.setWidget(0, 1, nameEntryField);
|
||||
formGrid.setWidget(1, 0, new Label(stringConstants.venue() + ":"));
|
||||
formGrid.setWidget(1, 1, venueEntryField);
|
||||
return panel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void show() {
|
||||
super.show();
|
||||
nameEntryField.setFocus(true);
|
||||
}
|
||||
|
||||
}
|
||||
+20
-21
@@ -1,21 +1,20 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.EventDTO;
|
||||
|
||||
public class EventEditDialog extends EventDialog {
|
||||
|
||||
public EventEditDialog(EventDTO event, Collection<EventDTO> otherExistingEvents,
|
||||
StringMessages stringConstants, AsyncCallback<EventDTO> callback) {
|
||||
super(event, new EventParameterValidator(stringConstants, otherExistingEvents), stringConstants, callback);
|
||||
|
||||
nameEntryField = createTextBox(event.name);
|
||||
nameEntryField.setWidth("200px");
|
||||
venueEntryField = createTextBox(event.venue.name);
|
||||
venueEntryField.setWidth("200px");
|
||||
}
|
||||
|
||||
}
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.EventDTO;
|
||||
|
||||
public class EventEditDialog extends EventDialog {
|
||||
|
||||
public EventEditDialog(EventDTO event, Collection<EventDTO> otherExistingEvents,
|
||||
StringMessages stringConstants, DialogCallback<EventDTO> callback) {
|
||||
super(event, new EventParameterValidator(stringConstants, otherExistingEvents), stringConstants, callback);
|
||||
|
||||
nameEntryField = createTextBox(event.name);
|
||||
nameEntryField.setWidth("200px");
|
||||
venueEntryField = createTextBox(event.venue.name);
|
||||
venueEntryField.setWidth("200px");
|
||||
}
|
||||
|
||||
}
|
||||
+18
-19
@@ -1,19 +1,18 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
|
||||
|
||||
public class FlexibleLeaderboardCreateDialog extends FlexibleLeaderboardDialog {
|
||||
|
||||
public FlexibleLeaderboardCreateDialog(Collection<StrippedLeaderboardDTO> existingLeaderboards, StringMessages stringMessages,
|
||||
ErrorReporter errorReporter, AsyncCallback<LeaderboardDescriptor> callback) {
|
||||
super(stringMessages.createFlexibleLeaderboard(), new LeaderboardDescriptor(), stringMessages, errorReporter, new FlexibleLeaderboardDialog.LeaderboardParameterValidator(stringMessages, existingLeaderboards), callback);
|
||||
nameTextBox = createTextBox(null);
|
||||
scoringSchemeListBox = createScoringSchemeListBox(this, stringMessages);
|
||||
discardThresholdBoxes = initEmptyDiscardThresholdBoxes(this);
|
||||
}
|
||||
}
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
|
||||
|
||||
public class FlexibleLeaderboardCreateDialog extends FlexibleLeaderboardDialog {
|
||||
|
||||
public FlexibleLeaderboardCreateDialog(Collection<StrippedLeaderboardDTO> existingLeaderboards, StringMessages stringMessages,
|
||||
ErrorReporter errorReporter, DialogCallback<LeaderboardDescriptor> callback) {
|
||||
super(stringMessages.createFlexibleLeaderboard(), new LeaderboardDescriptor(), stringMessages, errorReporter, new FlexibleLeaderboardDialog.LeaderboardParameterValidator(stringMessages, existingLeaderboards), callback);
|
||||
nameTextBox = createTextBox(null);
|
||||
scoringSchemeListBox = createScoringSchemeListBox(this, stringMessages);
|
||||
discardThresholdBoxes = initEmptyDiscardThresholdBoxes(this);
|
||||
}
|
||||
}
|
||||
+97
-98
@@ -1,98 +1,97 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.Grid;
|
||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.ListBox;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
|
||||
|
||||
public abstract class FlexibleLeaderboardDialog extends AbstractLeaderboardDialog {
|
||||
protected ListBox scoringSchemeListBox;
|
||||
|
||||
protected static class LeaderboardParameterValidator implements Validator<LeaderboardDescriptor> {
|
||||
protected final StringMessages stringConstants;
|
||||
protected final Collection<StrippedLeaderboardDTO> existingLeaderboards;
|
||||
|
||||
public LeaderboardParameterValidator(StringMessages stringConstants, Collection<StrippedLeaderboardDTO> existingLeaderboards){
|
||||
super();
|
||||
this.stringConstants = stringConstants;
|
||||
this.existingLeaderboards = existingLeaderboards;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getErrorMessage(LeaderboardDescriptor leaderboardToValidate) {
|
||||
String errorMessage;
|
||||
boolean nonEmpty = leaderboardToValidate.getName() != null && leaderboardToValidate.getName().length() > 0;
|
||||
|
||||
boolean discardThresholdsAscending = true;
|
||||
for (int i = 1; i < leaderboardToValidate.getDiscardThresholds().length; i++) {
|
||||
// TODO what are correct values for discarding Thresholds?
|
||||
if (0 < leaderboardToValidate.getDiscardThresholds().length){
|
||||
discardThresholdsAscending = discardThresholdsAscending
|
||||
&& leaderboardToValidate.getDiscardThresholds()[i - 1] < leaderboardToValidate.getDiscardThresholds()[i]
|
||||
// and if one box is empty, all subsequent boxes need to be empty too
|
||||
&& (leaderboardToValidate.getDiscardThresholds()[i] == 0 || leaderboardToValidate.getDiscardThresholds()[i-1] > 0);
|
||||
}
|
||||
}
|
||||
|
||||
boolean unique = true;
|
||||
for (StrippedLeaderboardDTO dao : existingLeaderboards) {
|
||||
if(dao.name.equals(leaderboardToValidate.getName())){
|
||||
unique = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (!nonEmpty) {
|
||||
errorMessage = stringConstants.pleaseEnterAName();
|
||||
} else if(!unique){
|
||||
errorMessage = stringConstants.leaderboardWithThisNameAlreadyExists();
|
||||
} else if (!discardThresholdsAscending) {
|
||||
errorMessage = stringConstants.discardThresholdsMustBeAscending();
|
||||
} else {
|
||||
errorMessage = null;
|
||||
}
|
||||
return errorMessage;
|
||||
}
|
||||
}
|
||||
|
||||
public FlexibleLeaderboardDialog(String title, LeaderboardDescriptor leaderboardDTO, StringMessages stringMessages,
|
||||
ErrorReporter errorReporter, LeaderboardParameterValidator validator, AsyncCallback<LeaderboardDescriptor> callback) {
|
||||
super(title, leaderboardDTO, stringMessages, validator, callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected LeaderboardDescriptor getResult() {
|
||||
LeaderboardDescriptor leaderboard = super.getResult();
|
||||
leaderboard.setRegattaName(null);
|
||||
leaderboard.setScoringScheme(getSelectedScoringSchemeType(scoringSchemeListBox, stringMessages));
|
||||
return leaderboard;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Widget getAdditionalWidget() {
|
||||
VerticalPanel mainPanel = new VerticalPanel();
|
||||
Grid formGrid = new Grid(3,2);
|
||||
formGrid.setCellSpacing(3);
|
||||
formGrid.setWidget(0, 0, new Label(stringMessages.name() + ":"));
|
||||
formGrid.setWidget(0, 1, nameTextBox);
|
||||
formGrid.setWidget(1, 0, new Label(stringMessages.scoringSystem() + ":"));
|
||||
formGrid.setWidget(1, 1, scoringSchemeListBox);
|
||||
mainPanel.add(formGrid);
|
||||
mainPanel.add(new Label(stringMessages.discardRacesFromHowManyStartedRacesOn()));
|
||||
HorizontalPanel hp = new HorizontalPanel();
|
||||
hp.setSpacing(3);
|
||||
for (int i = 0; i < discardThresholdBoxes.length; i++) {
|
||||
hp.add(new Label("" + (i + 1) + "."));
|
||||
hp.add(discardThresholdBoxes[i]);
|
||||
}
|
||||
mainPanel.add(hp);
|
||||
return mainPanel;
|
||||
}
|
||||
}
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import com.google.gwt.user.client.ui.Grid;
|
||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.ListBox;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
|
||||
|
||||
public abstract class FlexibleLeaderboardDialog extends AbstractLeaderboardDialog {
|
||||
protected ListBox scoringSchemeListBox;
|
||||
|
||||
protected static class LeaderboardParameterValidator implements Validator<LeaderboardDescriptor> {
|
||||
protected final StringMessages stringConstants;
|
||||
protected final Collection<StrippedLeaderboardDTO> existingLeaderboards;
|
||||
|
||||
public LeaderboardParameterValidator(StringMessages stringConstants, Collection<StrippedLeaderboardDTO> existingLeaderboards){
|
||||
super();
|
||||
this.stringConstants = stringConstants;
|
||||
this.existingLeaderboards = existingLeaderboards;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getErrorMessage(LeaderboardDescriptor leaderboardToValidate) {
|
||||
String errorMessage;
|
||||
boolean nonEmpty = leaderboardToValidate.getName() != null && leaderboardToValidate.getName().length() > 0;
|
||||
|
||||
boolean discardThresholdsAscending = true;
|
||||
for (int i = 1; i < leaderboardToValidate.getDiscardThresholds().length; i++) {
|
||||
// TODO what are correct values for discarding Thresholds?
|
||||
if (0 < leaderboardToValidate.getDiscardThresholds().length){
|
||||
discardThresholdsAscending = discardThresholdsAscending
|
||||
&& leaderboardToValidate.getDiscardThresholds()[i - 1] < leaderboardToValidate.getDiscardThresholds()[i]
|
||||
// and if one box is empty, all subsequent boxes need to be empty too
|
||||
&& (leaderboardToValidate.getDiscardThresholds()[i] == 0 || leaderboardToValidate.getDiscardThresholds()[i-1] > 0);
|
||||
}
|
||||
}
|
||||
|
||||
boolean unique = true;
|
||||
for (StrippedLeaderboardDTO dao : existingLeaderboards) {
|
||||
if(dao.name.equals(leaderboardToValidate.getName())){
|
||||
unique = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (!nonEmpty) {
|
||||
errorMessage = stringConstants.pleaseEnterAName();
|
||||
} else if(!unique){
|
||||
errorMessage = stringConstants.leaderboardWithThisNameAlreadyExists();
|
||||
} else if (!discardThresholdsAscending) {
|
||||
errorMessage = stringConstants.discardThresholdsMustBeAscending();
|
||||
} else {
|
||||
errorMessage = null;
|
||||
}
|
||||
return errorMessage;
|
||||
}
|
||||
}
|
||||
|
||||
public FlexibleLeaderboardDialog(String title, LeaderboardDescriptor leaderboardDTO, StringMessages stringMessages,
|
||||
ErrorReporter errorReporter, LeaderboardParameterValidator validator, DialogCallback<LeaderboardDescriptor> callback) {
|
||||
super(title, leaderboardDTO, stringMessages, validator, callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected LeaderboardDescriptor getResult() {
|
||||
LeaderboardDescriptor leaderboard = super.getResult();
|
||||
leaderboard.setRegattaName(null);
|
||||
leaderboard.setScoringScheme(getSelectedScoringSchemeType(scoringSchemeListBox, stringMessages));
|
||||
return leaderboard;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Widget getAdditionalWidget() {
|
||||
VerticalPanel mainPanel = new VerticalPanel();
|
||||
Grid formGrid = new Grid(3,2);
|
||||
formGrid.setCellSpacing(3);
|
||||
formGrid.setWidget(0, 0, new Label(stringMessages.name() + ":"));
|
||||
formGrid.setWidget(0, 1, nameTextBox);
|
||||
formGrid.setWidget(1, 0, new Label(stringMessages.scoringSystem() + ":"));
|
||||
formGrid.setWidget(1, 1, scoringSchemeListBox);
|
||||
mainPanel.add(formGrid);
|
||||
mainPanel.add(new Label(stringMessages.discardRacesFromHowManyStartedRacesOn()));
|
||||
HorizontalPanel hp = new HorizontalPanel();
|
||||
hp.setSpacing(3);
|
||||
for (int i = 0; i < discardThresholdBoxes.length; i++) {
|
||||
hp.add(new Label("" + (i + 1) + "."));
|
||||
hp.add(discardThresholdBoxes[i]);
|
||||
}
|
||||
mainPanel.add(hp);
|
||||
return mainPanel;
|
||||
}
|
||||
}
|
||||
+33
-34
@@ -1,34 +1,33 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.sap.sailing.domain.common.ScoringSchemeType;
|
||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.leaderboard.ScoringSchemeTypeFormatter;
|
||||
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
|
||||
|
||||
public class FlexibleLeaderboardEditDialog extends FlexibleLeaderboardDialog {
|
||||
|
||||
public FlexibleLeaderboardEditDialog(Collection<StrippedLeaderboardDTO> otherExistingLeaderboards,
|
||||
LeaderboardDescriptor leaderboard, StringMessages stringConstants, ErrorReporter errorReporter,
|
||||
AsyncCallback<LeaderboardDescriptor> callback) {
|
||||
super(stringConstants.editFlexibleLeaderboard(), leaderboard, stringConstants, errorReporter, new FlexibleLeaderboardDialog.LeaderboardParameterValidator(
|
||||
stringConstants, otherExistingLeaderboards), callback);
|
||||
|
||||
nameTextBox = createTextBox(leaderboard.getName());
|
||||
|
||||
scoringSchemeListBox = createListBox(false);
|
||||
int j = 0;
|
||||
for (ScoringSchemeType scoringSchemeType: ScoringSchemeType.values()) {
|
||||
scoringSchemeListBox.addItem(ScoringSchemeTypeFormatter.format(scoringSchemeType, stringConstants));
|
||||
if(leaderboard.getScoringScheme() == scoringSchemeType) {
|
||||
scoringSchemeListBox.setSelectedIndex(j);
|
||||
}
|
||||
j++;
|
||||
}
|
||||
scoringSchemeListBox.setEnabled(false);
|
||||
discardThresholdBoxes = initPrefilledDiscardThresholdBoxes(leaderboard.getDiscardThresholds(), this);
|
||||
}
|
||||
}
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import com.sap.sailing.domain.common.ScoringSchemeType;
|
||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.leaderboard.ScoringSchemeTypeFormatter;
|
||||
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
|
||||
|
||||
public class FlexibleLeaderboardEditDialog extends FlexibleLeaderboardDialog {
|
||||
|
||||
public FlexibleLeaderboardEditDialog(Collection<StrippedLeaderboardDTO> otherExistingLeaderboards,
|
||||
LeaderboardDescriptor leaderboard, StringMessages stringConstants, ErrorReporter errorReporter,
|
||||
DialogCallback<LeaderboardDescriptor> callback) {
|
||||
super(stringConstants.editFlexibleLeaderboard(), leaderboard, stringConstants, errorReporter, new FlexibleLeaderboardDialog.LeaderboardParameterValidator(
|
||||
stringConstants, otherExistingLeaderboards), callback);
|
||||
|
||||
nameTextBox = createTextBox(leaderboard.getName());
|
||||
|
||||
scoringSchemeListBox = createListBox(false);
|
||||
int j = 0;
|
||||
for (ScoringSchemeType scoringSchemeType: ScoringSchemeType.values()) {
|
||||
scoringSchemeListBox.addItem(ScoringSchemeTypeFormatter.format(scoringSchemeType, stringConstants));
|
||||
if(leaderboard.getScoringScheme() == scoringSchemeType) {
|
||||
scoringSchemeListBox.setSelectedIndex(j);
|
||||
}
|
||||
j++;
|
||||
}
|
||||
scoringSchemeListBox.setEnabled(false);
|
||||
discardThresholdBoxes = initPrefilledDiscardThresholdBoxes(leaderboard.getDiscardThresholds(), this);
|
||||
}
|
||||
}
|
||||
+4
-3
@@ -14,6 +14,7 @@ import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||
import com.google.gwt.user.client.ui.ListBox;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.sap.sailing.gwt.ui.client.DataEntryDialog;
|
||||
import com.sap.sailing.gwt.ui.client.DataEntryDialog.DialogCallback;
|
||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
@@ -114,14 +115,14 @@ public class FregResultImportUrlPanel extends FlowPanel {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}, new AsyncCallback<String>() {
|
||||
}, new DialogCallback<String>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
public void cancel() {
|
||||
// user cancelled; just don't add
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(String result) {
|
||||
public void ok(String result) {
|
||||
urlListBox.addItem(result);
|
||||
sailingService.addFragUrl(result, new AsyncCallback<Void>() {
|
||||
@Override
|
||||
|
||||
+19
-18
@@ -47,6 +47,7 @@ import com.sap.sailing.domain.common.RegattaIdentifier;
|
||||
import com.sap.sailing.domain.common.RegattaName;
|
||||
import com.sap.sailing.domain.common.RegattaNameAndRaceName;
|
||||
import com.sap.sailing.domain.common.impl.Util.Pair;
|
||||
import com.sap.sailing.gwt.ui.client.DataEntryDialog.DialogCallback;
|
||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||
import com.sap.sailing.gwt.ui.client.ParallelExecutionCallback;
|
||||
import com.sap.sailing.gwt.ui.client.ParallelExecutionHolder;
|
||||
@@ -248,13 +249,13 @@ public class LeaderboardConfigPanel extends FormPanel implements RegattaDisplaye
|
||||
AbstractLeaderboardDialog dialog = new RegattaLeaderboardEditDialog(Collections
|
||||
.unmodifiableCollection(otherExistingLeaderboard), Collections.unmodifiableCollection(allRegattas),
|
||||
descriptor, stringMessages, errorReporter,
|
||||
new AsyncCallback<LeaderboardDescriptor>() {
|
||||
new DialogCallback<LeaderboardDescriptor>() {
|
||||
@Override
|
||||
public void onFailure(Throwable arg0) {
|
||||
public void cancel() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(LeaderboardDescriptor result) {
|
||||
public void ok(LeaderboardDescriptor result) {
|
||||
updateLeaderboard(oldLeaderboardName, result);
|
||||
}
|
||||
});
|
||||
@@ -264,13 +265,13 @@ public class LeaderboardConfigPanel extends FormPanel implements RegattaDisplaye
|
||||
FlexibleLeaderboardEditDialog dialog = new FlexibleLeaderboardEditDialog(Collections
|
||||
.unmodifiableCollection(otherExistingLeaderboard),
|
||||
descriptor, stringMessages, errorReporter,
|
||||
new AsyncCallback<LeaderboardDescriptor>() {
|
||||
new DialogCallback<LeaderboardDescriptor>() {
|
||||
@Override
|
||||
public void onFailure(Throwable arg0) {
|
||||
public void cancel() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(LeaderboardDescriptor result) {
|
||||
public void ok(LeaderboardDescriptor result) {
|
||||
updateLeaderboard(oldLeaderboardName, result);
|
||||
}
|
||||
});
|
||||
@@ -693,13 +694,13 @@ public class LeaderboardConfigPanel extends FormPanel implements RegattaDisplaye
|
||||
}
|
||||
existingRacesWithoutThisRace.remove(raceColumnWithFleet.getA());
|
||||
final RaceColumnInLeaderboardDialog raceDialog = new RaceColumnInLeaderboardDialog(existingRacesWithoutThisRace,
|
||||
raceColumnWithFleet.getA(), stringMessages, new AsyncCallback<RaceColumnDTO>() {
|
||||
raceColumnWithFleet.getA(), stringMessages, new DialogCallback<RaceColumnDTO>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
public void cancel() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(final RaceColumnDTO result) {
|
||||
public void ok(final RaceColumnDTO result) {
|
||||
final ParallelExecutionCallback<Void> renameLeaderboardColumnCallback = new ParallelExecutionCallback<Void>();
|
||||
final ParallelExecutionCallback<Void> updateIsMedalRaceCallback = new ParallelExecutionCallback<Void>();
|
||||
new ParallelExecutionHolder(renameLeaderboardColumnCallback, updateIsMedalRaceCallback) {
|
||||
@@ -748,13 +749,13 @@ public class LeaderboardConfigPanel extends FormPanel implements RegattaDisplaye
|
||||
}
|
||||
|
||||
final RaceColumnsInLeaderboardDialog raceDialog = new RaceColumnsInLeaderboardDialog(existingRaceColumns,
|
||||
stringMessages, new AsyncCallback<List<RaceColumnDTO>>() {
|
||||
stringMessages, new DialogCallback<List<RaceColumnDTO>>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
public void cancel() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(final List<RaceColumnDTO> result) {
|
||||
public void ok(final List<RaceColumnDTO> result) {
|
||||
updateRaceColumnsOfLeaderboard(leaderboardName, existingRaceColumns, result);
|
||||
}
|
||||
});
|
||||
@@ -838,13 +839,13 @@ public class LeaderboardConfigPanel extends FormPanel implements RegattaDisplaye
|
||||
|
||||
private void createFlexibleLeaderboard() {
|
||||
AbstractLeaderboardDialog dialog = new FlexibleLeaderboardCreateDialog(Collections.unmodifiableCollection(availableLeaderboardList),
|
||||
stringMessages, errorReporter, new AsyncCallback<LeaderboardDescriptor>() {
|
||||
stringMessages, errorReporter, new DialogCallback<LeaderboardDescriptor>() {
|
||||
@Override
|
||||
public void onFailure(Throwable arg0) {
|
||||
public void cancel() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(final LeaderboardDescriptor newLeaderboard) {
|
||||
public void ok(final LeaderboardDescriptor newLeaderboard) {
|
||||
sailingService.createFlexibleLeaderboard(newLeaderboard.getName(), newLeaderboard.getDiscardThresholds(),
|
||||
newLeaderboard.getScoringScheme(),
|
||||
new AsyncCallback<StrippedLeaderboardDTO>() {
|
||||
@@ -866,13 +867,13 @@ public class LeaderboardConfigPanel extends FormPanel implements RegattaDisplaye
|
||||
|
||||
private void createRegattaLeaderboard() {
|
||||
RegattaLeaderboardCreateDialog dialog = new RegattaLeaderboardCreateDialog(Collections.unmodifiableCollection(availableLeaderboardList),
|
||||
Collections.unmodifiableCollection(allRegattas), stringMessages, errorReporter, new AsyncCallback<LeaderboardDescriptor>() {
|
||||
Collections.unmodifiableCollection(allRegattas), stringMessages, errorReporter, new DialogCallback<LeaderboardDescriptor>() {
|
||||
@Override
|
||||
public void onFailure(Throwable arg0) {
|
||||
public void cancel() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(final LeaderboardDescriptor newLeaderboard) {
|
||||
public void ok(final LeaderboardDescriptor newLeaderboard) {
|
||||
RegattaIdentifier regattaIdentifier = new RegattaName(newLeaderboard.getRegattaName());
|
||||
sailingService.createRegattaLeaderboard(regattaIdentifier, newLeaderboard.getDiscardThresholds(),
|
||||
new AsyncCallback<StrippedLeaderboardDTO>() {
|
||||
|
||||
+7
-6
@@ -37,6 +37,7 @@ import com.google.gwt.view.client.SelectionChangeEvent;
|
||||
import com.google.gwt.view.client.SingleSelectionModel;
|
||||
import com.sap.sailing.gwt.ui.adminconsole.LeaderboardConfigPanel.AnchorCell;
|
||||
import com.sap.sailing.gwt.ui.client.AbstractRegattaPanel;
|
||||
import com.sap.sailing.gwt.ui.client.DataEntryDialog.DialogCallback;
|
||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||
import com.sap.sailing.gwt.ui.client.RegattaRefresher;
|
||||
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||
@@ -450,11 +451,11 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel {
|
||||
final String oldGroupName = group.name;
|
||||
ArrayList<LeaderboardGroupDTO> otherExistingGroups = new ArrayList<LeaderboardGroupDTO>(availableLeaderboardGroups);
|
||||
otherExistingGroups.remove(group);
|
||||
LeaderboardGroupEditDialog dialog = new LeaderboardGroupEditDialog(group, otherExistingGroups, stringMessages, new AsyncCallback<LeaderboardGroupDTO>() {
|
||||
LeaderboardGroupEditDialog dialog = new LeaderboardGroupEditDialog(group, otherExistingGroups, stringMessages, new DialogCallback<LeaderboardGroupDTO>() {
|
||||
@Override
|
||||
public void onFailure(Throwable t) {}
|
||||
public void cancel() {}
|
||||
@Override
|
||||
public void onSuccess(LeaderboardGroupDTO group) {
|
||||
public void ok(LeaderboardGroupDTO group) {
|
||||
updateGroup(oldGroupName, group);
|
||||
}
|
||||
});
|
||||
@@ -557,11 +558,11 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel {
|
||||
private void addNewGroup() {
|
||||
LeaderboardGroupCreateDialog dialog = new LeaderboardGroupCreateDialog(
|
||||
Collections.unmodifiableCollection(availableLeaderboardGroups), stringMessages,
|
||||
new AsyncCallback<LeaderboardGroupDTO>() {
|
||||
new DialogCallback<LeaderboardGroupDTO>() {
|
||||
@Override
|
||||
public void onFailure(Throwable t) {}
|
||||
public void cancel() {}
|
||||
@Override
|
||||
public void onSuccess(LeaderboardGroupDTO newGroup) {
|
||||
public void ok(LeaderboardGroupDTO newGroup) {
|
||||
createNewGroup(newGroup);
|
||||
}
|
||||
});
|
||||
|
||||
+1
-2
@@ -2,14 +2,13 @@ package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO;
|
||||
|
||||
public class LeaderboardGroupCreateDialog extends LeaderboardGroupDialog {
|
||||
|
||||
public LeaderboardGroupCreateDialog(Collection<LeaderboardGroupDTO> existingGroups,
|
||||
StringMessages stringMessages, AsyncCallback<LeaderboardGroupDTO> callback) {
|
||||
StringMessages stringMessages, DialogCallback<LeaderboardGroupDTO> callback) {
|
||||
super(new LeaderboardGroupDTO(), stringMessages,
|
||||
callback, existingGroups);
|
||||
nameEntryField = createTextBox(null);
|
||||
|
||||
+1
-2
@@ -8,7 +8,6 @@ import java.util.List;
|
||||
|
||||
import com.google.gwt.event.logical.shared.ValueChangeEvent;
|
||||
import com.google.gwt.event.logical.shared.ValueChangeHandler;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.CheckBox;
|
||||
import com.google.gwt.user.client.ui.Grid;
|
||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||
@@ -94,7 +93,7 @@ public class LeaderboardGroupDialog extends DataEntryDialog<LeaderboardGroupDTO>
|
||||
}
|
||||
|
||||
public LeaderboardGroupDialog(LeaderboardGroupDTO group, StringMessages stringMessages,
|
||||
AsyncCallback<LeaderboardGroupDTO> callback, Collection<LeaderboardGroupDTO> existingLeaderboardGroups) {
|
||||
DialogCallback<LeaderboardGroupDTO> callback, Collection<LeaderboardGroupDTO> existingLeaderboardGroups) {
|
||||
super(stringMessages.leaderboardGroup(), null, stringMessages.ok(), stringMessages.cancel(),
|
||||
new LeaderboardGroupParameterValidator(stringMessages, existingLeaderboardGroups), callback);
|
||||
this.stringMessages = stringMessages;
|
||||
|
||||
+1
-2
@@ -2,14 +2,13 @@ package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO;
|
||||
|
||||
public class LeaderboardGroupEditDialog extends LeaderboardGroupDialog {
|
||||
public LeaderboardGroupEditDialog(LeaderboardGroupDTO group, Collection<LeaderboardGroupDTO> otherExistingGroups,
|
||||
StringMessages stringMessages, AsyncCallback<LeaderboardGroupDTO> callback) {
|
||||
StringMessages stringMessages, DialogCallback<LeaderboardGroupDTO> callback) {
|
||||
super(group, stringMessages, callback, otherExistingGroups);
|
||||
// don't allow editing the overall leaderboard's scoring scheme if the group already uses an overall leaderboard
|
||||
getOverallLeaderboardScoringSchemeListBox().setEnabled(!group.hasOverallLeaderboard());
|
||||
|
||||
+104
-105
@@ -1,105 +1,104 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.CheckBox;
|
||||
import com.google.gwt.user.client.ui.HasVerticalAlignment;
|
||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.TextBox;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.gwt.ui.client.DataEntryDialog;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.RaceColumnDTO;
|
||||
|
||||
/**
|
||||
* Fills a {@link RaceColumnDTO} object by setting its {@link RaceColumnDTO#setMedalRace(boolean) medal race} property and its name.
|
||||
* @author Axel Uhl (D043530)
|
||||
*
|
||||
*/
|
||||
public class RaceColumnInLeaderboardDialog extends DataEntryDialog<RaceColumnDTO> {
|
||||
private final TextBox raceNameBox;
|
||||
private final CheckBox isMedalRace;
|
||||
private final StringMessages stringConstants;
|
||||
|
||||
private RaceColumnDTO raceColumnToEdit;
|
||||
|
||||
private static class RaceDialogValidator implements Validator<RaceColumnDTO> {
|
||||
|
||||
private StringMessages stringConstants;
|
||||
private List<RaceColumnDTO> existingRaces;
|
||||
|
||||
public RaceDialogValidator(StringMessages stringConstants, List<RaceColumnDTO> existingRaceColumnsAndFleetNames) {
|
||||
this.stringConstants = stringConstants;
|
||||
this.existingRaces = existingRaceColumnsAndFleetNames;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getErrorMessage(RaceColumnDTO valueToValidate) {
|
||||
String errorMessage;
|
||||
String racename = valueToValidate.getRaceColumnName();
|
||||
Boolean isMedalRace = valueToValidate.isMedalRace();
|
||||
boolean isNameNotEmpty = racename != null & racename != "";
|
||||
boolean medalRaceNotNull = isMedalRace != null;
|
||||
|
||||
boolean unique = true;
|
||||
for (RaceColumnDTO raceColumn : existingRaces) {
|
||||
if (raceColumn.getRaceColumnName().equals(valueToValidate.getRaceColumnName())) {
|
||||
unique = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (!isNameNotEmpty) {
|
||||
errorMessage = stringConstants.pleaseEnterAName();
|
||||
} else if (!medalRaceNotNull) {
|
||||
errorMessage = stringConstants.medalRaceIsNull();
|
||||
} else if (!unique) {
|
||||
errorMessage = stringConstants.raceWithThisNameAlreadyExists();
|
||||
} else {
|
||||
return errorMessage = null;
|
||||
}
|
||||
return errorMessage;
|
||||
}
|
||||
}
|
||||
|
||||
public RaceColumnInLeaderboardDialog(List<RaceColumnDTO> existingRaces, RaceColumnDTO raceColumnToEdit,
|
||||
StringMessages stringConstants, AsyncCallback<RaceColumnDTO> callback) {
|
||||
super(stringConstants.actionRaceEdit(), null, stringConstants.ok(), stringConstants.cancel(),
|
||||
new RaceDialogValidator(stringConstants, existingRaces), callback);
|
||||
this.raceColumnToEdit = raceColumnToEdit;
|
||||
this.stringConstants = stringConstants;
|
||||
raceNameBox = createTextBox(raceColumnToEdit.getRaceColumnName());
|
||||
isMedalRace = createCheckbox(stringConstants.medalRace());
|
||||
isMedalRace.setValue(raceColumnToEdit.isMedalRace());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected RaceColumnDTO getResult() {
|
||||
raceColumnToEdit.name = raceNameBox.getValue();
|
||||
raceColumnToEdit.setMedalRace(isMedalRace.getValue());
|
||||
return raceColumnToEdit;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Widget getAdditionalWidget() {
|
||||
VerticalPanel mainPanel = new VerticalPanel();
|
||||
|
||||
HorizontalPanel raceNamePanel = new HorizontalPanel();
|
||||
raceNamePanel.setSpacing(3);
|
||||
mainPanel.add(raceNamePanel);
|
||||
raceNamePanel.add(new Label(stringConstants.name() + ":"));
|
||||
raceNamePanel.add(raceNameBox);
|
||||
alignAllPanelWidgetsVertically(raceNamePanel, HasVerticalAlignment.ALIGN_MIDDLE);
|
||||
|
||||
mainPanel.add(isMedalRace);
|
||||
return mainPanel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void show() {
|
||||
super.show();
|
||||
raceNameBox.setFocus(true);
|
||||
}
|
||||
}
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.user.client.ui.CheckBox;
|
||||
import com.google.gwt.user.client.ui.HasVerticalAlignment;
|
||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.TextBox;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.gwt.ui.client.DataEntryDialog;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.RaceColumnDTO;
|
||||
|
||||
/**
|
||||
* Fills a {@link RaceColumnDTO} object by setting its {@link RaceColumnDTO#setMedalRace(boolean) medal race} property and its name.
|
||||
* @author Axel Uhl (D043530)
|
||||
*
|
||||
*/
|
||||
public class RaceColumnInLeaderboardDialog extends DataEntryDialog<RaceColumnDTO> {
|
||||
private final TextBox raceNameBox;
|
||||
private final CheckBox isMedalRace;
|
||||
private final StringMessages stringConstants;
|
||||
|
||||
private RaceColumnDTO raceColumnToEdit;
|
||||
|
||||
private static class RaceDialogValidator implements Validator<RaceColumnDTO> {
|
||||
|
||||
private StringMessages stringConstants;
|
||||
private List<RaceColumnDTO> existingRaces;
|
||||
|
||||
public RaceDialogValidator(StringMessages stringConstants, List<RaceColumnDTO> existingRaceColumnsAndFleetNames) {
|
||||
this.stringConstants = stringConstants;
|
||||
this.existingRaces = existingRaceColumnsAndFleetNames;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getErrorMessage(RaceColumnDTO valueToValidate) {
|
||||
String errorMessage;
|
||||
String racename = valueToValidate.getRaceColumnName();
|
||||
Boolean isMedalRace = valueToValidate.isMedalRace();
|
||||
boolean isNameNotEmpty = racename != null & racename != "";
|
||||
boolean medalRaceNotNull = isMedalRace != null;
|
||||
|
||||
boolean unique = true;
|
||||
for (RaceColumnDTO raceColumn : existingRaces) {
|
||||
if (raceColumn.getRaceColumnName().equals(valueToValidate.getRaceColumnName())) {
|
||||
unique = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (!isNameNotEmpty) {
|
||||
errorMessage = stringConstants.pleaseEnterAName();
|
||||
} else if (!medalRaceNotNull) {
|
||||
errorMessage = stringConstants.medalRaceIsNull();
|
||||
} else if (!unique) {
|
||||
errorMessage = stringConstants.raceWithThisNameAlreadyExists();
|
||||
} else {
|
||||
return errorMessage = null;
|
||||
}
|
||||
return errorMessage;
|
||||
}
|
||||
}
|
||||
|
||||
public RaceColumnInLeaderboardDialog(List<RaceColumnDTO> existingRaces, RaceColumnDTO raceColumnToEdit,
|
||||
StringMessages stringConstants, DialogCallback<RaceColumnDTO> callback) {
|
||||
super(stringConstants.actionRaceEdit(), null, stringConstants.ok(), stringConstants.cancel(),
|
||||
new RaceDialogValidator(stringConstants, existingRaces), callback);
|
||||
this.raceColumnToEdit = raceColumnToEdit;
|
||||
this.stringConstants = stringConstants;
|
||||
raceNameBox = createTextBox(raceColumnToEdit.getRaceColumnName());
|
||||
isMedalRace = createCheckbox(stringConstants.medalRace());
|
||||
isMedalRace.setValue(raceColumnToEdit.isMedalRace());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected RaceColumnDTO getResult() {
|
||||
raceColumnToEdit.name = raceNameBox.getValue();
|
||||
raceColumnToEdit.setMedalRace(isMedalRace.getValue());
|
||||
return raceColumnToEdit;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Widget getAdditionalWidget() {
|
||||
VerticalPanel mainPanel = new VerticalPanel();
|
||||
|
||||
HorizontalPanel raceNamePanel = new HorizontalPanel();
|
||||
raceNamePanel.setSpacing(3);
|
||||
mainPanel.add(raceNamePanel);
|
||||
raceNamePanel.add(new Label(stringConstants.name() + ":"));
|
||||
raceNamePanel.add(raceNameBox);
|
||||
alignAllPanelWidgetsVertically(raceNamePanel, HasVerticalAlignment.ALIGN_MIDDLE);
|
||||
|
||||
mainPanel.add(isMedalRace);
|
||||
return mainPanel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void show() {
|
||||
super.show();
|
||||
raceNameBox.setFocus(true);
|
||||
}
|
||||
}
|
||||
+312
-313
@@ -1,313 +1,312 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.event.dom.client.ChangeEvent;
|
||||
import com.google.gwt.event.dom.client.ChangeHandler;
|
||||
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.Grid;
|
||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.ListBox;
|
||||
import com.google.gwt.user.client.ui.TextBox;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.domain.common.impl.Util.Pair;
|
||||
import com.sap.sailing.gwt.ui.client.DataEntryDialog;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.RaceColumnDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.SeriesDTO;
|
||||
|
||||
public class RaceColumnInRegattaSeriesDialog extends DataEntryDialog<Pair<SeriesDTO, List<RaceColumnDTO>>> {
|
||||
private final RegattaDTO regatta;
|
||||
private final ListBox seriesListBox;
|
||||
private final ListBox addRacesListBox;
|
||||
private Button addRacesBtn;
|
||||
private final List<TextBox> raceNameEntryFields;
|
||||
private final List<Button> raceNameDeleteButtons;
|
||||
private final StringMessages stringMessages;
|
||||
private final TextBox raceNamePrefixTextBox;
|
||||
private final boolean hasOneSeries;
|
||||
private Grid raceColumnsGrid;
|
||||
private VerticalPanel additionalWidgetPanel;
|
||||
|
||||
private static class RaceDialogValidator implements Validator<Pair<SeriesDTO, List<RaceColumnDTO>>> {
|
||||
private StringMessages stringConstants;
|
||||
|
||||
public RaceDialogValidator(RegattaDTO regatta, StringMessages stringConstants) {
|
||||
this.stringConstants = stringConstants;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getErrorMessage(Pair<SeriesDTO, List<RaceColumnDTO>> valueToValidate) {
|
||||
String errorMessage = null;
|
||||
|
||||
SeriesDTO series = valueToValidate.getA();
|
||||
if(series == null) {
|
||||
errorMessage = "You must select a series";
|
||||
}
|
||||
|
||||
if(errorMessage == null) {
|
||||
List<RaceColumnDTO> raceColumnsToValidate = valueToValidate.getB();
|
||||
int index = 0;
|
||||
boolean raceColumnNameNotEmpty = true;
|
||||
|
||||
for (RaceColumnDTO raceColumn : raceColumnsToValidate) {
|
||||
raceColumnNameNotEmpty = raceColumn.name != null && raceColumn.name.length() > 0;
|
||||
if (!raceColumnNameNotEmpty) {
|
||||
break;
|
||||
}
|
||||
index++;
|
||||
}
|
||||
|
||||
int index2 = 0;
|
||||
boolean raceColumnUnique = true;
|
||||
|
||||
HashSet<String> setToFindDuplicates = new HashSet<String>();
|
||||
for (RaceColumnDTO raceColumn : raceColumnsToValidate) {
|
||||
if (!setToFindDuplicates.add(raceColumn.name)) {
|
||||
raceColumnUnique = false;
|
||||
break;
|
||||
}
|
||||
index2++;
|
||||
}
|
||||
|
||||
if (!raceColumnNameNotEmpty) {
|
||||
errorMessage = stringConstants.race() + " " + (index + 1) + ": "
|
||||
+ stringConstants.pleaseEnterAName();
|
||||
} else if (!raceColumnUnique) {
|
||||
errorMessage = stringConstants.race() + " " + (index2 + 1) + ": "
|
||||
+ stringConstants.raceWithThisNameAlreadyExists();
|
||||
}
|
||||
}
|
||||
|
||||
return errorMessage;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public RaceColumnInRegattaSeriesDialog(RegattaDTO regatta, StringMessages stringConstants,
|
||||
AsyncCallback<Pair<SeriesDTO, List<RaceColumnDTO>>> callback) {
|
||||
super(stringConstants.actionEditRaces(), null, stringConstants.ok(), stringConstants.cancel(),
|
||||
new RaceDialogValidator(regatta, stringConstants), callback);
|
||||
this.regatta = regatta;
|
||||
this.stringMessages = stringConstants;
|
||||
this.hasOneSeries = regatta.series.size() == 1;
|
||||
seriesListBox = createListBox(false);
|
||||
addRacesListBox = createListBox(false);
|
||||
raceNamePrefixTextBox = createTextBox(null);
|
||||
raceNameEntryFields = new ArrayList<TextBox>();
|
||||
raceNameDeleteButtons = new ArrayList<Button>();
|
||||
raceColumnsGrid = new Grid(0, 0);
|
||||
}
|
||||
|
||||
private Widget createRaceNameWidget(String defaultName, boolean enabled) {
|
||||
TextBox textBox = createTextBox(defaultName);
|
||||
textBox.setVisibleLength(40);
|
||||
textBox.setEnabled(enabled);
|
||||
raceNameEntryFields.add(textBox);
|
||||
return textBox;
|
||||
}
|
||||
|
||||
private Widget createRaceNameDeleteButtonWidget() {
|
||||
final Button raceNameDeleteBtn = new Button(stringMessages.delete());
|
||||
raceNameDeleteBtn.addStyleName("inlineButton");
|
||||
raceNameDeleteButtons.add(raceNameDeleteBtn);
|
||||
raceNameDeleteBtn.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
int index = 0;
|
||||
for(Button btn: raceNameDeleteButtons) {
|
||||
if(raceNameDeleteBtn == btn) {
|
||||
break;
|
||||
}
|
||||
index++;
|
||||
}
|
||||
raceNameEntryFields.remove(index);
|
||||
raceNameDeleteButtons.remove(index);
|
||||
updateRaceColumnsGrid(additionalWidgetPanel);
|
||||
}
|
||||
});
|
||||
return raceNameDeleteBtn;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pair<SeriesDTO, List<RaceColumnDTO>> getResult() {
|
||||
SeriesDTO selectedSeries = getSelectedSeries();
|
||||
List<RaceColumnDTO> races = new ArrayList<RaceColumnDTO>();
|
||||
int racesCount = raceNameEntryFields.size();
|
||||
for(int i = 0; i < racesCount; i++) {
|
||||
String raceColumnName = raceNameEntryFields.get(i).getValue();
|
||||
RaceColumnDTO raceColumnDTO = findRaceColumnInSeriesByName(selectedSeries, raceColumnName);
|
||||
if(raceColumnDTO == null) {
|
||||
raceColumnDTO = new RaceColumnDTO();
|
||||
raceColumnDTO.name = raceColumnName;
|
||||
}
|
||||
races.add(raceColumnDTO);
|
||||
}
|
||||
return new Pair<SeriesDTO, List<RaceColumnDTO>>(selectedSeries, races);
|
||||
}
|
||||
|
||||
private RaceColumnDTO findRaceColumnInSeriesByName(SeriesDTO series, String raceColumnName) {
|
||||
RaceColumnDTO result = null;
|
||||
if(series != null) {
|
||||
for(RaceColumnDTO raceColumn: series.getRaceColumns()) {
|
||||
if(raceColumn.name.equals(raceColumnName)) {
|
||||
result = raceColumn;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Widget getAdditionalWidget() {
|
||||
additionalWidgetPanel = new VerticalPanel();
|
||||
Widget additionalWidget = super.getAdditionalWidget();
|
||||
if (additionalWidget != null) {
|
||||
additionalWidgetPanel.add(additionalWidget);
|
||||
}
|
||||
|
||||
HorizontalPanel seriesPanel = new HorizontalPanel();
|
||||
seriesPanel.setSpacing(3);
|
||||
seriesPanel.add(new Label(stringMessages.series() + ":"));
|
||||
if(hasOneSeries) {
|
||||
String seriesName = regatta.series.get(0).name;
|
||||
seriesListBox.addItem(seriesName);
|
||||
seriesListBox.setSelectedIndex(0);
|
||||
if("Default".equals(seriesName)) {
|
||||
raceNamePrefixTextBox.setText("R");
|
||||
} else {
|
||||
raceNamePrefixTextBox.setText(seriesName.substring(0, 1).toUpperCase());
|
||||
}
|
||||
} else {
|
||||
seriesListBox.addItem("Please select a series");
|
||||
for (SeriesDTO series : regatta.series) {
|
||||
seriesListBox.addItem(series.name);
|
||||
}
|
||||
}
|
||||
|
||||
seriesListBox.addChangeHandler(new ChangeHandler() {
|
||||
@Override
|
||||
public void onChange(ChangeEvent event) {
|
||||
SeriesDTO selectedSeries = getSelectedSeries();
|
||||
if(selectedSeries == null) {
|
||||
raceNamePrefixTextBox.setText("");
|
||||
} else {
|
||||
raceNamePrefixTextBox.setText(selectedSeries.name.substring(0, 1).toUpperCase());
|
||||
}
|
||||
fillExistingRacesOfSeries();
|
||||
}
|
||||
});
|
||||
|
||||
seriesPanel.add(seriesListBox);
|
||||
additionalWidgetPanel.add(seriesPanel);
|
||||
|
||||
// add races controls
|
||||
HorizontalPanel addRacesPanel = new HorizontalPanel();
|
||||
addRacesPanel.setSpacing(3);
|
||||
addRacesPanel.add(new Label(stringMessages.add()));
|
||||
addRacesPanel.add(addRacesListBox);
|
||||
for(int i = 1; i <= 10; i++) {
|
||||
addRacesListBox.addItem("" + i);
|
||||
}
|
||||
addRacesListBox.setSelectedIndex(0);
|
||||
raceNamePrefixTextBox.setWidth("20px");
|
||||
addRacesPanel.add(raceNamePrefixTextBox);
|
||||
addRacesBtn = new Button(stringMessages.add());
|
||||
addRacesBtn.addStyleName("inlineButton");
|
||||
addRacesBtn.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
SeriesDTO selectedSeries = getSelectedSeries();
|
||||
if(selectedSeries != null) {
|
||||
String racePrefix = raceNamePrefixTextBox.getText();
|
||||
int racesCountToCreate = addRacesListBox.getSelectedIndex()+1;
|
||||
int currentSize = raceNameEntryFields.size();
|
||||
for(int i = 1; i <= racesCountToCreate; i++) {
|
||||
String raceName = racePrefix;
|
||||
if(racesCountToCreate != 1 || selectedSeries.getRaceColumns().size() > 0) {
|
||||
raceName += (currentSize + i);
|
||||
}
|
||||
createRaceNameWidget(raceName, true);
|
||||
createRaceNameDeleteButtonWidget();
|
||||
}
|
||||
updateRaceColumnsGrid(additionalWidgetPanel);
|
||||
} else {
|
||||
Window.alert("Please select a series first.");
|
||||
}
|
||||
}
|
||||
});
|
||||
addRacesPanel.add(addRacesBtn);
|
||||
additionalWidgetPanel.add(addRacesPanel);
|
||||
|
||||
additionalWidgetPanel.add(createHeadlineLabel(stringMessages.races()));
|
||||
additionalWidgetPanel.add(raceColumnsGrid);
|
||||
|
||||
if(hasOneSeries) {
|
||||
fillExistingRacesOfSeries();
|
||||
}
|
||||
|
||||
return additionalWidgetPanel;
|
||||
}
|
||||
|
||||
private void fillExistingRacesOfSeries() {
|
||||
SeriesDTO selectedSeries = getSelectedSeries();
|
||||
raceNameEntryFields.clear();
|
||||
raceNameDeleteButtons.clear();
|
||||
if(selectedSeries != null && !selectedSeries.getRaceColumns().isEmpty()) {
|
||||
for(RaceColumnDTO raceColumn: selectedSeries.getRaceColumns()) {
|
||||
createRaceNameWidget(raceColumn.name, false);
|
||||
createRaceNameDeleteButtonWidget();
|
||||
}
|
||||
}
|
||||
updateRaceColumnsGrid(additionalWidgetPanel);
|
||||
}
|
||||
|
||||
private void updateRaceColumnsGrid(VerticalPanel parentPanel) {
|
||||
int widgetIndex = parentPanel.getWidgetIndex(raceColumnsGrid);
|
||||
parentPanel.remove(raceColumnsGrid);
|
||||
int raceNamesCount = raceNameEntryFields.size();
|
||||
if(raceNamesCount > 0) {
|
||||
raceColumnsGrid = new Grid(raceNamesCount + 1, 3);
|
||||
raceColumnsGrid.setCellSpacing(4);
|
||||
raceColumnsGrid.setHTML(0, 0, stringMessages.name());
|
||||
for(int i = 0; i < raceNamesCount; i++) {
|
||||
raceColumnsGrid.setWidget(i+1, 0, raceNameEntryFields.get(i));
|
||||
raceColumnsGrid.setWidget(i+1, 1, raceNameDeleteButtons.get(i));
|
||||
}
|
||||
} else {
|
||||
raceColumnsGrid = new Grid(0, 0);
|
||||
}
|
||||
|
||||
parentPanel.insert(raceColumnsGrid, widgetIndex);
|
||||
}
|
||||
|
||||
private SeriesDTO getSelectedSeries() {
|
||||
SeriesDTO result = null;
|
||||
int selIndex = seriesListBox.getSelectedIndex();
|
||||
if(selIndex > 0 || hasOneSeries) { // the zero index represents the 'no selection' text
|
||||
String itemText = seriesListBox.getItemText(selIndex);
|
||||
for(SeriesDTO seriesDTO: regatta.series) {
|
||||
if(seriesDTO.name.equals(itemText)) {
|
||||
result = seriesDTO;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void show() {
|
||||
super.show();
|
||||
}
|
||||
}
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.event.dom.client.ChangeEvent;
|
||||
import com.google.gwt.event.dom.client.ChangeHandler;
|
||||
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.ui.Button;
|
||||
import com.google.gwt.user.client.ui.Grid;
|
||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.ListBox;
|
||||
import com.google.gwt.user.client.ui.TextBox;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.domain.common.impl.Util.Pair;
|
||||
import com.sap.sailing.gwt.ui.client.DataEntryDialog;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.RaceColumnDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.SeriesDTO;
|
||||
|
||||
public class RaceColumnInRegattaSeriesDialog extends DataEntryDialog<Pair<SeriesDTO, List<RaceColumnDTO>>> {
|
||||
private final RegattaDTO regatta;
|
||||
private final ListBox seriesListBox;
|
||||
private final ListBox addRacesListBox;
|
||||
private Button addRacesBtn;
|
||||
private final List<TextBox> raceNameEntryFields;
|
||||
private final List<Button> raceNameDeleteButtons;
|
||||
private final StringMessages stringMessages;
|
||||
private final TextBox raceNamePrefixTextBox;
|
||||
private final boolean hasOneSeries;
|
||||
private Grid raceColumnsGrid;
|
||||
private VerticalPanel additionalWidgetPanel;
|
||||
|
||||
private static class RaceDialogValidator implements Validator<Pair<SeriesDTO, List<RaceColumnDTO>>> {
|
||||
private StringMessages stringConstants;
|
||||
|
||||
public RaceDialogValidator(RegattaDTO regatta, StringMessages stringConstants) {
|
||||
this.stringConstants = stringConstants;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getErrorMessage(Pair<SeriesDTO, List<RaceColumnDTO>> valueToValidate) {
|
||||
String errorMessage = null;
|
||||
|
||||
SeriesDTO series = valueToValidate.getA();
|
||||
if(series == null) {
|
||||
errorMessage = "You must select a series";
|
||||
}
|
||||
|
||||
if(errorMessage == null) {
|
||||
List<RaceColumnDTO> raceColumnsToValidate = valueToValidate.getB();
|
||||
int index = 0;
|
||||
boolean raceColumnNameNotEmpty = true;
|
||||
|
||||
for (RaceColumnDTO raceColumn : raceColumnsToValidate) {
|
||||
raceColumnNameNotEmpty = raceColumn.name != null && raceColumn.name.length() > 0;
|
||||
if (!raceColumnNameNotEmpty) {
|
||||
break;
|
||||
}
|
||||
index++;
|
||||
}
|
||||
|
||||
int index2 = 0;
|
||||
boolean raceColumnUnique = true;
|
||||
|
||||
HashSet<String> setToFindDuplicates = new HashSet<String>();
|
||||
for (RaceColumnDTO raceColumn : raceColumnsToValidate) {
|
||||
if (!setToFindDuplicates.add(raceColumn.name)) {
|
||||
raceColumnUnique = false;
|
||||
break;
|
||||
}
|
||||
index2++;
|
||||
}
|
||||
|
||||
if (!raceColumnNameNotEmpty) {
|
||||
errorMessage = stringConstants.race() + " " + (index + 1) + ": "
|
||||
+ stringConstants.pleaseEnterAName();
|
||||
} else if (!raceColumnUnique) {
|
||||
errorMessage = stringConstants.race() + " " + (index2 + 1) + ": "
|
||||
+ stringConstants.raceWithThisNameAlreadyExists();
|
||||
}
|
||||
}
|
||||
|
||||
return errorMessage;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public RaceColumnInRegattaSeriesDialog(RegattaDTO regatta, StringMessages stringConstants,
|
||||
DialogCallback<Pair<SeriesDTO, List<RaceColumnDTO>>> callback) {
|
||||
super(stringConstants.actionEditRaces(), null, stringConstants.ok(), stringConstants.cancel(),
|
||||
new RaceDialogValidator(regatta, stringConstants), callback);
|
||||
this.regatta = regatta;
|
||||
this.stringMessages = stringConstants;
|
||||
this.hasOneSeries = regatta.series.size() == 1;
|
||||
seriesListBox = createListBox(false);
|
||||
addRacesListBox = createListBox(false);
|
||||
raceNamePrefixTextBox = createTextBox(null);
|
||||
raceNameEntryFields = new ArrayList<TextBox>();
|
||||
raceNameDeleteButtons = new ArrayList<Button>();
|
||||
raceColumnsGrid = new Grid(0, 0);
|
||||
}
|
||||
|
||||
private Widget createRaceNameWidget(String defaultName, boolean enabled) {
|
||||
TextBox textBox = createTextBox(defaultName);
|
||||
textBox.setVisibleLength(40);
|
||||
textBox.setEnabled(enabled);
|
||||
raceNameEntryFields.add(textBox);
|
||||
return textBox;
|
||||
}
|
||||
|
||||
private Widget createRaceNameDeleteButtonWidget() {
|
||||
final Button raceNameDeleteBtn = new Button(stringMessages.delete());
|
||||
raceNameDeleteBtn.addStyleName("inlineButton");
|
||||
raceNameDeleteButtons.add(raceNameDeleteBtn);
|
||||
raceNameDeleteBtn.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
int index = 0;
|
||||
for(Button btn: raceNameDeleteButtons) {
|
||||
if(raceNameDeleteBtn == btn) {
|
||||
break;
|
||||
}
|
||||
index++;
|
||||
}
|
||||
raceNameEntryFields.remove(index);
|
||||
raceNameDeleteButtons.remove(index);
|
||||
updateRaceColumnsGrid(additionalWidgetPanel);
|
||||
}
|
||||
});
|
||||
return raceNameDeleteBtn;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pair<SeriesDTO, List<RaceColumnDTO>> getResult() {
|
||||
SeriesDTO selectedSeries = getSelectedSeries();
|
||||
List<RaceColumnDTO> races = new ArrayList<RaceColumnDTO>();
|
||||
int racesCount = raceNameEntryFields.size();
|
||||
for(int i = 0; i < racesCount; i++) {
|
||||
String raceColumnName = raceNameEntryFields.get(i).getValue();
|
||||
RaceColumnDTO raceColumnDTO = findRaceColumnInSeriesByName(selectedSeries, raceColumnName);
|
||||
if(raceColumnDTO == null) {
|
||||
raceColumnDTO = new RaceColumnDTO();
|
||||
raceColumnDTO.name = raceColumnName;
|
||||
}
|
||||
races.add(raceColumnDTO);
|
||||
}
|
||||
return new Pair<SeriesDTO, List<RaceColumnDTO>>(selectedSeries, races);
|
||||
}
|
||||
|
||||
private RaceColumnDTO findRaceColumnInSeriesByName(SeriesDTO series, String raceColumnName) {
|
||||
RaceColumnDTO result = null;
|
||||
if(series != null) {
|
||||
for(RaceColumnDTO raceColumn: series.getRaceColumns()) {
|
||||
if(raceColumn.name.equals(raceColumnName)) {
|
||||
result = raceColumn;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Widget getAdditionalWidget() {
|
||||
additionalWidgetPanel = new VerticalPanel();
|
||||
Widget additionalWidget = super.getAdditionalWidget();
|
||||
if (additionalWidget != null) {
|
||||
additionalWidgetPanel.add(additionalWidget);
|
||||
}
|
||||
|
||||
HorizontalPanel seriesPanel = new HorizontalPanel();
|
||||
seriesPanel.setSpacing(3);
|
||||
seriesPanel.add(new Label(stringMessages.series() + ":"));
|
||||
if(hasOneSeries) {
|
||||
String seriesName = regatta.series.get(0).name;
|
||||
seriesListBox.addItem(seriesName);
|
||||
seriesListBox.setSelectedIndex(0);
|
||||
if("Default".equals(seriesName)) {
|
||||
raceNamePrefixTextBox.setText("R");
|
||||
} else {
|
||||
raceNamePrefixTextBox.setText(seriesName.substring(0, 1).toUpperCase());
|
||||
}
|
||||
} else {
|
||||
seriesListBox.addItem("Please select a series");
|
||||
for (SeriesDTO series : regatta.series) {
|
||||
seriesListBox.addItem(series.name);
|
||||
}
|
||||
}
|
||||
|
||||
seriesListBox.addChangeHandler(new ChangeHandler() {
|
||||
@Override
|
||||
public void onChange(ChangeEvent event) {
|
||||
SeriesDTO selectedSeries = getSelectedSeries();
|
||||
if(selectedSeries == null) {
|
||||
raceNamePrefixTextBox.setText("");
|
||||
} else {
|
||||
raceNamePrefixTextBox.setText(selectedSeries.name.substring(0, 1).toUpperCase());
|
||||
}
|
||||
fillExistingRacesOfSeries();
|
||||
}
|
||||
});
|
||||
|
||||
seriesPanel.add(seriesListBox);
|
||||
additionalWidgetPanel.add(seriesPanel);
|
||||
|
||||
// add races controls
|
||||
HorizontalPanel addRacesPanel = new HorizontalPanel();
|
||||
addRacesPanel.setSpacing(3);
|
||||
addRacesPanel.add(new Label(stringMessages.add()));
|
||||
addRacesPanel.add(addRacesListBox);
|
||||
for(int i = 1; i <= 10; i++) {
|
||||
addRacesListBox.addItem("" + i);
|
||||
}
|
||||
addRacesListBox.setSelectedIndex(0);
|
||||
raceNamePrefixTextBox.setWidth("20px");
|
||||
addRacesPanel.add(raceNamePrefixTextBox);
|
||||
addRacesBtn = new Button(stringMessages.add());
|
||||
addRacesBtn.addStyleName("inlineButton");
|
||||
addRacesBtn.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
SeriesDTO selectedSeries = getSelectedSeries();
|
||||
if(selectedSeries != null) {
|
||||
String racePrefix = raceNamePrefixTextBox.getText();
|
||||
int racesCountToCreate = addRacesListBox.getSelectedIndex()+1;
|
||||
int currentSize = raceNameEntryFields.size();
|
||||
for(int i = 1; i <= racesCountToCreate; i++) {
|
||||
String raceName = racePrefix;
|
||||
if(racesCountToCreate != 1 || selectedSeries.getRaceColumns().size() > 0) {
|
||||
raceName += (currentSize + i);
|
||||
}
|
||||
createRaceNameWidget(raceName, true);
|
||||
createRaceNameDeleteButtonWidget();
|
||||
}
|
||||
updateRaceColumnsGrid(additionalWidgetPanel);
|
||||
} else {
|
||||
Window.alert("Please select a series first.");
|
||||
}
|
||||
}
|
||||
});
|
||||
addRacesPanel.add(addRacesBtn);
|
||||
additionalWidgetPanel.add(addRacesPanel);
|
||||
|
||||
additionalWidgetPanel.add(createHeadlineLabel(stringMessages.races()));
|
||||
additionalWidgetPanel.add(raceColumnsGrid);
|
||||
|
||||
if(hasOneSeries) {
|
||||
fillExistingRacesOfSeries();
|
||||
}
|
||||
|
||||
return additionalWidgetPanel;
|
||||
}
|
||||
|
||||
private void fillExistingRacesOfSeries() {
|
||||
SeriesDTO selectedSeries = getSelectedSeries();
|
||||
raceNameEntryFields.clear();
|
||||
raceNameDeleteButtons.clear();
|
||||
if(selectedSeries != null && !selectedSeries.getRaceColumns().isEmpty()) {
|
||||
for(RaceColumnDTO raceColumn: selectedSeries.getRaceColumns()) {
|
||||
createRaceNameWidget(raceColumn.name, false);
|
||||
createRaceNameDeleteButtonWidget();
|
||||
}
|
||||
}
|
||||
updateRaceColumnsGrid(additionalWidgetPanel);
|
||||
}
|
||||
|
||||
private void updateRaceColumnsGrid(VerticalPanel parentPanel) {
|
||||
int widgetIndex = parentPanel.getWidgetIndex(raceColumnsGrid);
|
||||
parentPanel.remove(raceColumnsGrid);
|
||||
int raceNamesCount = raceNameEntryFields.size();
|
||||
if(raceNamesCount > 0) {
|
||||
raceColumnsGrid = new Grid(raceNamesCount + 1, 3);
|
||||
raceColumnsGrid.setCellSpacing(4);
|
||||
raceColumnsGrid.setHTML(0, 0, stringMessages.name());
|
||||
for(int i = 0; i < raceNamesCount; i++) {
|
||||
raceColumnsGrid.setWidget(i+1, 0, raceNameEntryFields.get(i));
|
||||
raceColumnsGrid.setWidget(i+1, 1, raceNameDeleteButtons.get(i));
|
||||
}
|
||||
} else {
|
||||
raceColumnsGrid = new Grid(0, 0);
|
||||
}
|
||||
|
||||
parentPanel.insert(raceColumnsGrid, widgetIndex);
|
||||
}
|
||||
|
||||
private SeriesDTO getSelectedSeries() {
|
||||
SeriesDTO result = null;
|
||||
int selIndex = seriesListBox.getSelectedIndex();
|
||||
if(selIndex > 0 || hasOneSeries) { // the zero index represents the 'no selection' text
|
||||
String itemText = seriesListBox.getItemText(selIndex);
|
||||
for(SeriesDTO seriesDTO: regatta.series) {
|
||||
if(seriesDTO.name.equals(itemText)) {
|
||||
result = seriesDTO;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void show() {
|
||||
super.show();
|
||||
}
|
||||
}
|
||||
+206
-207
@@ -1,207 +1,206 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.event.dom.client.ClickHandler;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.Button;
|
||||
import com.google.gwt.user.client.ui.CheckBox;
|
||||
import com.google.gwt.user.client.ui.Grid;
|
||||
import com.google.gwt.user.client.ui.HasVerticalAlignment;
|
||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.ListBox;
|
||||
import com.google.gwt.user.client.ui.TextBox;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.gwt.ui.client.DataEntryDialog;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.RaceColumnDTO;
|
||||
|
||||
public class RaceColumnsInLeaderboardDialog extends DataEntryDialog<List<RaceColumnDTO>> {
|
||||
private final ListBox addRacesListBox;
|
||||
private Button addRacesBtn;
|
||||
private final List<TextBox> raceNameEntryFields;
|
||||
private final List<CheckBox> isMedalRaceCheckboxes;
|
||||
private final StringMessages stringMessages;
|
||||
private final TextBox raceNamePrefixTextBox;
|
||||
private Grid raceColumnsGrid;
|
||||
private VerticalPanel additionalWidget;
|
||||
private List<RaceColumnDTO> existingRaces;
|
||||
|
||||
private static class RaceDialogValidator implements Validator<List<RaceColumnDTO>> {
|
||||
private StringMessages stringConstants;
|
||||
|
||||
public RaceDialogValidator(StringMessages stringConstants) {
|
||||
this.stringConstants = stringConstants;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getErrorMessage(List<RaceColumnDTO> raceColumnsWithFleetToValidate) {
|
||||
String errorMessage = null;
|
||||
|
||||
List<RaceColumnDTO> raceColumnsToValidate = new ArrayList<RaceColumnDTO>();
|
||||
for (RaceColumnDTO raceColumnDTO : raceColumnsToValidate) {
|
||||
raceColumnsToValidate.add(raceColumnDTO);
|
||||
}
|
||||
|
||||
if(errorMessage == null) {
|
||||
int index = 0;
|
||||
boolean raceColumnNameNotEmpty = true;
|
||||
|
||||
for (RaceColumnDTO raceColumn : raceColumnsToValidate) {
|
||||
raceColumnNameNotEmpty = raceColumn.name != null && raceColumn.name.length() > 0;
|
||||
if (!raceColumnNameNotEmpty) {
|
||||
break;
|
||||
}
|
||||
index++;
|
||||
}
|
||||
|
||||
int index2 = 0;
|
||||
boolean raceColumnUnique = true;
|
||||
|
||||
HashSet<String> setToFindDuplicates = new HashSet<String>();
|
||||
for (RaceColumnDTO raceColumn : raceColumnsToValidate) {
|
||||
if (!setToFindDuplicates.add(raceColumn.name)) {
|
||||
raceColumnUnique = false;
|
||||
break;
|
||||
}
|
||||
index2++;
|
||||
}
|
||||
|
||||
if (!raceColumnNameNotEmpty) {
|
||||
errorMessage = stringConstants.race() + " " + (index + 1) + ": "
|
||||
+ stringConstants.pleaseEnterAName();
|
||||
} else if (!raceColumnUnique) {
|
||||
errorMessage = stringConstants.race() + " " + (index2 + 1) + ": "
|
||||
+ stringConstants.raceWithThisNameAlreadyExists();
|
||||
}
|
||||
}
|
||||
|
||||
return errorMessage;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public RaceColumnsInLeaderboardDialog(List<RaceColumnDTO> existingRaces, StringMessages stringConstants,
|
||||
AsyncCallback<List<RaceColumnDTO>> callback) {
|
||||
super(stringConstants.actionAddRaces(), null, stringConstants.ok(), stringConstants.cancel(),
|
||||
new RaceDialogValidator(stringConstants), callback);
|
||||
this.existingRaces = existingRaces;
|
||||
this.stringMessages = stringConstants;
|
||||
addRacesListBox = createListBox(false);
|
||||
raceNamePrefixTextBox = createTextBox(null);
|
||||
raceNameEntryFields = new ArrayList<TextBox>();
|
||||
isMedalRaceCheckboxes = new ArrayList<CheckBox>();
|
||||
raceColumnsGrid = new Grid(0, 0);
|
||||
}
|
||||
|
||||
private Widget createRaceNameWidget(String defaultName, boolean enabled) {
|
||||
TextBox textBox = createTextBox(defaultName);
|
||||
textBox.setVisibleLength(25);
|
||||
textBox.setEnabled(enabled);
|
||||
raceNameEntryFields.add(textBox);
|
||||
return textBox;
|
||||
}
|
||||
|
||||
private Widget createMedalRaceWidget(boolean isMedalRace, boolean enabled) {
|
||||
CheckBox checkBox = createCheckbox(stringMessages.medalRace());
|
||||
checkBox.setEnabled(enabled);
|
||||
isMedalRaceCheckboxes.add(checkBox);
|
||||
return checkBox;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<RaceColumnDTO> getResult() {
|
||||
List<RaceColumnDTO> racesWithFleet = new ArrayList<RaceColumnDTO>();
|
||||
int racesCount = raceNameEntryFields.size();
|
||||
for(int i = 0; i < racesCount; i++) {
|
||||
String raceColumnName = raceNameEntryFields.get(i).getValue();
|
||||
RaceColumnDTO raceColumnDTO = new RaceColumnDTO();
|
||||
raceColumnDTO.name = raceColumnName;
|
||||
raceColumnDTO.setMedalRace(false);
|
||||
racesWithFleet.add(raceColumnDTO);
|
||||
}
|
||||
return racesWithFleet;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Widget getAdditionalWidget() {
|
||||
additionalWidget = new VerticalPanel();
|
||||
|
||||
raceNamePrefixTextBox.setText("R");
|
||||
|
||||
// add races controls
|
||||
HorizontalPanel addRacesPanel = new HorizontalPanel();
|
||||
addRacesPanel.setSpacing(5);
|
||||
addRacesPanel.add(new Label(stringMessages.add()));
|
||||
addRacesPanel.add(addRacesListBox);
|
||||
for(int i = 1; i <= 20; i++) {
|
||||
addRacesListBox.addItem("" + i);
|
||||
}
|
||||
addRacesListBox.setSelectedIndex(0);
|
||||
addRacesPanel.add(new Label(stringMessages.racesWithNamePrefix()+" "));
|
||||
raceNamePrefixTextBox.setWidth("20px");
|
||||
addRacesPanel.add(raceNamePrefixTextBox);
|
||||
addRacesBtn = new Button(stringMessages.add());
|
||||
addRacesBtn.addStyleName("inlineButton");
|
||||
addRacesBtn.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
String racePrefix = raceNamePrefixTextBox.getText();
|
||||
int racesCountToCreate = addRacesListBox.getSelectedIndex()+1;
|
||||
int currentSize = raceNameEntryFields.size();
|
||||
for(int i = 1; i <= racesCountToCreate; i++) {
|
||||
String raceName = racePrefix;
|
||||
if(racesCountToCreate != 1 || existingRaces.size() > 0) {
|
||||
raceName += (currentSize + i);
|
||||
}
|
||||
createRaceNameWidget(raceName, true);
|
||||
createMedalRaceWidget(false, true);
|
||||
}
|
||||
updateRaceColumnsGrid(additionalWidget);
|
||||
|
||||
}
|
||||
});
|
||||
addRacesPanel.add(addRacesBtn);
|
||||
additionalWidget.add(addRacesPanel);
|
||||
alignAllPanelWidgetsVertically(addRacesPanel, HasVerticalAlignment.ALIGN_MIDDLE);
|
||||
|
||||
additionalWidget.add(createHeadlineLabel(stringMessages.races()));
|
||||
additionalWidget.add(raceColumnsGrid);
|
||||
|
||||
for(RaceColumnDTO raceColumn: existingRaces) {
|
||||
createRaceNameWidget(raceColumn.getRaceColumnName(), false);
|
||||
createMedalRaceWidget(raceColumn.isMedalRace(), false);
|
||||
}
|
||||
updateRaceColumnsGrid(additionalWidget);
|
||||
|
||||
return additionalWidget;
|
||||
}
|
||||
|
||||
private void updateRaceColumnsGrid(VerticalPanel parentPanel) {
|
||||
int widgetIndex = parentPanel.getWidgetIndex(raceColumnsGrid);
|
||||
parentPanel.remove(raceColumnsGrid);
|
||||
int raceNamesCount = raceNameEntryFields.size();
|
||||
if(raceNamesCount > 0) {
|
||||
raceColumnsGrid = new Grid(raceNamesCount, 3);
|
||||
raceColumnsGrid.setCellSpacing(4);
|
||||
for(int i = 0; i < raceNamesCount; i++) {
|
||||
raceColumnsGrid.setWidget(i, 0, raceNameEntryFields.get(i));
|
||||
raceColumnsGrid.setWidget(i, 1, isMedalRaceCheckboxes.get(i));
|
||||
}
|
||||
} else {
|
||||
raceColumnsGrid = new Grid(0, 0);
|
||||
}
|
||||
|
||||
parentPanel.insert(raceColumnsGrid, widgetIndex);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void show() {
|
||||
super.show();
|
||||
}
|
||||
}
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.event.dom.client.ClickHandler;
|
||||
import com.google.gwt.user.client.ui.Button;
|
||||
import com.google.gwt.user.client.ui.CheckBox;
|
||||
import com.google.gwt.user.client.ui.Grid;
|
||||
import com.google.gwt.user.client.ui.HasVerticalAlignment;
|
||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.ListBox;
|
||||
import com.google.gwt.user.client.ui.TextBox;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.gwt.ui.client.DataEntryDialog;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.RaceColumnDTO;
|
||||
|
||||
public class RaceColumnsInLeaderboardDialog extends DataEntryDialog<List<RaceColumnDTO>> {
|
||||
private final ListBox addRacesListBox;
|
||||
private Button addRacesBtn;
|
||||
private final List<TextBox> raceNameEntryFields;
|
||||
private final List<CheckBox> isMedalRaceCheckboxes;
|
||||
private final StringMessages stringMessages;
|
||||
private final TextBox raceNamePrefixTextBox;
|
||||
private Grid raceColumnsGrid;
|
||||
private VerticalPanel additionalWidget;
|
||||
private List<RaceColumnDTO> existingRaces;
|
||||
|
||||
private static class RaceDialogValidator implements Validator<List<RaceColumnDTO>> {
|
||||
private StringMessages stringConstants;
|
||||
|
||||
public RaceDialogValidator(StringMessages stringConstants) {
|
||||
this.stringConstants = stringConstants;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getErrorMessage(List<RaceColumnDTO> raceColumnsWithFleetToValidate) {
|
||||
String errorMessage = null;
|
||||
|
||||
List<RaceColumnDTO> raceColumnsToValidate = new ArrayList<RaceColumnDTO>();
|
||||
for (RaceColumnDTO raceColumnDTO : raceColumnsToValidate) {
|
||||
raceColumnsToValidate.add(raceColumnDTO);
|
||||
}
|
||||
|
||||
if(errorMessage == null) {
|
||||
int index = 0;
|
||||
boolean raceColumnNameNotEmpty = true;
|
||||
|
||||
for (RaceColumnDTO raceColumn : raceColumnsToValidate) {
|
||||
raceColumnNameNotEmpty = raceColumn.name != null && raceColumn.name.length() > 0;
|
||||
if (!raceColumnNameNotEmpty) {
|
||||
break;
|
||||
}
|
||||
index++;
|
||||
}
|
||||
|
||||
int index2 = 0;
|
||||
boolean raceColumnUnique = true;
|
||||
|
||||
HashSet<String> setToFindDuplicates = new HashSet<String>();
|
||||
for (RaceColumnDTO raceColumn : raceColumnsToValidate) {
|
||||
if (!setToFindDuplicates.add(raceColumn.name)) {
|
||||
raceColumnUnique = false;
|
||||
break;
|
||||
}
|
||||
index2++;
|
||||
}
|
||||
|
||||
if (!raceColumnNameNotEmpty) {
|
||||
errorMessage = stringConstants.race() + " " + (index + 1) + ": "
|
||||
+ stringConstants.pleaseEnterAName();
|
||||
} else if (!raceColumnUnique) {
|
||||
errorMessage = stringConstants.race() + " " + (index2 + 1) + ": "
|
||||
+ stringConstants.raceWithThisNameAlreadyExists();
|
||||
}
|
||||
}
|
||||
|
||||
return errorMessage;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public RaceColumnsInLeaderboardDialog(List<RaceColumnDTO> existingRaces, StringMessages stringConstants,
|
||||
DialogCallback<List<RaceColumnDTO>> callback) {
|
||||
super(stringConstants.actionAddRaces(), null, stringConstants.ok(), stringConstants.cancel(),
|
||||
new RaceDialogValidator(stringConstants), callback);
|
||||
this.existingRaces = existingRaces;
|
||||
this.stringMessages = stringConstants;
|
||||
addRacesListBox = createListBox(false);
|
||||
raceNamePrefixTextBox = createTextBox(null);
|
||||
raceNameEntryFields = new ArrayList<TextBox>();
|
||||
isMedalRaceCheckboxes = new ArrayList<CheckBox>();
|
||||
raceColumnsGrid = new Grid(0, 0);
|
||||
}
|
||||
|
||||
private Widget createRaceNameWidget(String defaultName, boolean enabled) {
|
||||
TextBox textBox = createTextBox(defaultName);
|
||||
textBox.setVisibleLength(25);
|
||||
textBox.setEnabled(enabled);
|
||||
raceNameEntryFields.add(textBox);
|
||||
return textBox;
|
||||
}
|
||||
|
||||
private Widget createMedalRaceWidget(boolean isMedalRace, boolean enabled) {
|
||||
CheckBox checkBox = createCheckbox(stringMessages.medalRace());
|
||||
checkBox.setEnabled(enabled);
|
||||
isMedalRaceCheckboxes.add(checkBox);
|
||||
return checkBox;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<RaceColumnDTO> getResult() {
|
||||
List<RaceColumnDTO> racesWithFleet = new ArrayList<RaceColumnDTO>();
|
||||
int racesCount = raceNameEntryFields.size();
|
||||
for(int i = 0; i < racesCount; i++) {
|
||||
String raceColumnName = raceNameEntryFields.get(i).getValue();
|
||||
RaceColumnDTO raceColumnDTO = new RaceColumnDTO();
|
||||
raceColumnDTO.name = raceColumnName;
|
||||
raceColumnDTO.setMedalRace(false);
|
||||
racesWithFleet.add(raceColumnDTO);
|
||||
}
|
||||
return racesWithFleet;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Widget getAdditionalWidget() {
|
||||
additionalWidget = new VerticalPanel();
|
||||
|
||||
raceNamePrefixTextBox.setText("R");
|
||||
|
||||
// add races controls
|
||||
HorizontalPanel addRacesPanel = new HorizontalPanel();
|
||||
addRacesPanel.setSpacing(5);
|
||||
addRacesPanel.add(new Label(stringMessages.add()));
|
||||
addRacesPanel.add(addRacesListBox);
|
||||
for(int i = 1; i <= 20; i++) {
|
||||
addRacesListBox.addItem("" + i);
|
||||
}
|
||||
addRacesListBox.setSelectedIndex(0);
|
||||
addRacesPanel.add(new Label(stringMessages.racesWithNamePrefix()+" "));
|
||||
raceNamePrefixTextBox.setWidth("20px");
|
||||
addRacesPanel.add(raceNamePrefixTextBox);
|
||||
addRacesBtn = new Button(stringMessages.add());
|
||||
addRacesBtn.addStyleName("inlineButton");
|
||||
addRacesBtn.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
String racePrefix = raceNamePrefixTextBox.getText();
|
||||
int racesCountToCreate = addRacesListBox.getSelectedIndex()+1;
|
||||
int currentSize = raceNameEntryFields.size();
|
||||
for(int i = 1; i <= racesCountToCreate; i++) {
|
||||
String raceName = racePrefix;
|
||||
if(racesCountToCreate != 1 || existingRaces.size() > 0) {
|
||||
raceName += (currentSize + i);
|
||||
}
|
||||
createRaceNameWidget(raceName, true);
|
||||
createMedalRaceWidget(false, true);
|
||||
}
|
||||
updateRaceColumnsGrid(additionalWidget);
|
||||
|
||||
}
|
||||
});
|
||||
addRacesPanel.add(addRacesBtn);
|
||||
additionalWidget.add(addRacesPanel);
|
||||
alignAllPanelWidgetsVertically(addRacesPanel, HasVerticalAlignment.ALIGN_MIDDLE);
|
||||
|
||||
additionalWidget.add(createHeadlineLabel(stringMessages.races()));
|
||||
additionalWidget.add(raceColumnsGrid);
|
||||
|
||||
for(RaceColumnDTO raceColumn: existingRaces) {
|
||||
createRaceNameWidget(raceColumn.getRaceColumnName(), false);
|
||||
createMedalRaceWidget(raceColumn.isMedalRace(), false);
|
||||
}
|
||||
updateRaceColumnsGrid(additionalWidget);
|
||||
|
||||
return additionalWidget;
|
||||
}
|
||||
|
||||
private void updateRaceColumnsGrid(VerticalPanel parentPanel) {
|
||||
int widgetIndex = parentPanel.getWidgetIndex(raceColumnsGrid);
|
||||
parentPanel.remove(raceColumnsGrid);
|
||||
int raceNamesCount = raceNameEntryFields.size();
|
||||
if(raceNamesCount > 0) {
|
||||
raceColumnsGrid = new Grid(raceNamesCount, 3);
|
||||
raceColumnsGrid.setCellSpacing(4);
|
||||
for(int i = 0; i < raceNamesCount; i++) {
|
||||
raceColumnsGrid.setWidget(i, 0, raceNameEntryFields.get(i));
|
||||
raceColumnsGrid.setWidget(i, 1, isMedalRaceCheckboxes.get(i));
|
||||
}
|
||||
} else {
|
||||
raceColumnsGrid = new Grid(0, 0);
|
||||
}
|
||||
|
||||
parentPanel.insert(raceColumnsGrid, widgetIndex);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void show() {
|
||||
super.show();
|
||||
}
|
||||
}
|
||||
+521
-520
File diff suppressed because it is too large.
Load diff
+26
-27
@@ -1,27 +1,26 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
|
||||
|
||||
public class RegattaLeaderboardCreateDialog extends RegattaLeaderboardDialog {
|
||||
|
||||
public RegattaLeaderboardCreateDialog(Collection<StrippedLeaderboardDTO> existingLeaderboards, Collection<RegattaDTO> existingRegattas, StringMessages stringConstants,
|
||||
ErrorReporter errorReporter, AsyncCallback<LeaderboardDescriptor> callback) {
|
||||
super(stringConstants.createRegattaLeaderboard(), new LeaderboardDescriptor(), existingRegattas, stringConstants, errorReporter, new RegattaLeaderboardDialog.LeaderboardParameterValidator(stringConstants, existingLeaderboards), callback);
|
||||
|
||||
nameTextBox = createTextBox(null);
|
||||
|
||||
regattaListBox = createListBox(false);
|
||||
regattaListBox.addItem(stringConstants.pleaseSelectARegatta());
|
||||
for (RegattaDTO regatta : existingRegattas) {
|
||||
regattaListBox.addItem(regatta.name);
|
||||
}
|
||||
discardThresholdBoxes = initEmptyDiscardThresholdBoxes(this);
|
||||
}
|
||||
|
||||
}
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
|
||||
|
||||
public class RegattaLeaderboardCreateDialog extends RegattaLeaderboardDialog {
|
||||
|
||||
public RegattaLeaderboardCreateDialog(Collection<StrippedLeaderboardDTO> existingLeaderboards, Collection<RegattaDTO> existingRegattas, StringMessages stringConstants,
|
||||
ErrorReporter errorReporter, DialogCallback<LeaderboardDescriptor> callback) {
|
||||
super(stringConstants.createRegattaLeaderboard(), new LeaderboardDescriptor(), existingRegattas, stringConstants, errorReporter, new RegattaLeaderboardDialog.LeaderboardParameterValidator(stringConstants, existingLeaderboards), callback);
|
||||
|
||||
nameTextBox = createTextBox(null);
|
||||
|
||||
regattaListBox = createListBox(false);
|
||||
regattaListBox.addItem(stringConstants.pleaseSelectARegatta());
|
||||
for (RegattaDTO regatta : existingRegattas) {
|
||||
regattaListBox.addItem(regatta.name);
|
||||
}
|
||||
discardThresholdBoxes = initEmptyDiscardThresholdBoxes(this);
|
||||
}
|
||||
|
||||
}
|
||||
+123
-124
@@ -1,124 +1,123 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.Grid;
|
||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.ListBox;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
|
||||
|
||||
|
||||
public abstract class RegattaLeaderboardDialog extends AbstractLeaderboardDialog {
|
||||
protected ListBox regattaListBox;
|
||||
protected Collection<RegattaDTO> existingRegattas;
|
||||
|
||||
protected static class LeaderboardParameterValidator implements Validator<LeaderboardDescriptor> {
|
||||
protected final StringMessages stringConstants;
|
||||
protected final Collection<StrippedLeaderboardDTO> existingLeaderboards;
|
||||
|
||||
public LeaderboardParameterValidator(StringMessages stringConstants, Collection<StrippedLeaderboardDTO> existingLeaderboards){
|
||||
super();
|
||||
this.stringConstants = stringConstants;
|
||||
this.existingLeaderboards = existingLeaderboards;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getErrorMessage(LeaderboardDescriptor leaderboardToValidate) {
|
||||
String errorMessage;
|
||||
boolean nonEmpty = leaderboardToValidate.getName() != null && leaderboardToValidate.getName().length() > 0;
|
||||
|
||||
boolean discardThresholdsAscending = true;
|
||||
for (int i = 1; i < leaderboardToValidate.getDiscardThresholds().length; i++) {
|
||||
// TODO what are correct values for discarding Thresholds?
|
||||
if (0 < leaderboardToValidate.getDiscardThresholds().length){
|
||||
discardThresholdsAscending = discardThresholdsAscending
|
||||
&& leaderboardToValidate.getDiscardThresholds()[i - 1] < leaderboardToValidate.getDiscardThresholds()[i]
|
||||
// and if one box is empty, all subsequent boxes need to be empty too
|
||||
&& (leaderboardToValidate.getDiscardThresholds()[i] == 0 || leaderboardToValidate.getDiscardThresholds()[i-1] > 0);
|
||||
}
|
||||
}
|
||||
|
||||
boolean unique = true;
|
||||
for (StrippedLeaderboardDTO dao : existingLeaderboards) {
|
||||
if(dao.name.equals(leaderboardToValidate.getName())){
|
||||
unique = false;
|
||||
}
|
||||
}
|
||||
|
||||
boolean regattaSelected = leaderboardToValidate.getRegattaName() != null ? true : false;
|
||||
|
||||
if (!nonEmpty) {
|
||||
errorMessage = stringConstants.pleaseEnterAName();
|
||||
} else if(!regattaSelected){
|
||||
errorMessage = stringConstants.pleaseSelectARegatta();
|
||||
} else if(!unique){
|
||||
errorMessage = stringConstants.leaderboardWithThisNameAlreadyExists();
|
||||
} else if (!discardThresholdsAscending) {
|
||||
errorMessage = stringConstants.discardThresholdsMustBeAscending();
|
||||
} else {
|
||||
errorMessage = null;
|
||||
}
|
||||
return errorMessage;
|
||||
}
|
||||
}
|
||||
|
||||
public RegattaLeaderboardDialog(String title, LeaderboardDescriptor leaderboardDTO, Collection<RegattaDTO> existingRegattas, StringMessages stringConstants,
|
||||
ErrorReporter errorReporter, LeaderboardParameterValidator validator, AsyncCallback<LeaderboardDescriptor> callback) {
|
||||
super(title, leaderboardDTO, stringConstants, validator, callback);
|
||||
this.existingRegattas = existingRegattas;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected LeaderboardDescriptor getResult() {
|
||||
LeaderboardDescriptor leaderboard = super.getResult();
|
||||
leaderboard.setRegattaName(getSelectedRegatta() != null ? getSelectedRegatta().name : null);
|
||||
return leaderboard;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Widget getAdditionalWidget() {
|
||||
VerticalPanel mainPanel = new VerticalPanel();
|
||||
|
||||
Grid formGrid = new Grid(3,2);
|
||||
formGrid.setCellSpacing(3);
|
||||
formGrid.setWidget(0, 0, new Label(stringMessages.name() + ":"));
|
||||
formGrid.setWidget(0, 1, nameTextBox);
|
||||
formGrid.setWidget(1, 0, new Label(stringMessages.regatta() + ":"));
|
||||
formGrid.setWidget(1, 1, regattaListBox);
|
||||
|
||||
mainPanel.add(formGrid);
|
||||
|
||||
mainPanel.add(new Label(stringMessages.discardRacesFromHowManyStartedRacesOn()));
|
||||
HorizontalPanel hp = new HorizontalPanel();
|
||||
hp.setSpacing(3);
|
||||
for (int i = 0; i < discardThresholdBoxes.length; i++) {
|
||||
hp.add(new Label("" + (i + 1) + "."));
|
||||
hp.add(discardThresholdBoxes[i]);
|
||||
}
|
||||
mainPanel.add(hp);
|
||||
return mainPanel;
|
||||
}
|
||||
|
||||
public RegattaDTO getSelectedRegatta() {
|
||||
RegattaDTO result = null;
|
||||
int selIndex = regattaListBox.getSelectedIndex();
|
||||
if(selIndex > 0) { // the zero index represents the 'no selection' text
|
||||
String itemText = regattaListBox.getItemText(selIndex);
|
||||
for(RegattaDTO regattaDTO: existingRegattas) {
|
||||
if(regattaDTO.name.equals(itemText)) {
|
||||
result = regattaDTO;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import com.google.gwt.user.client.ui.Grid;
|
||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.ListBox;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
|
||||
|
||||
|
||||
public abstract class RegattaLeaderboardDialog extends AbstractLeaderboardDialog {
|
||||
protected ListBox regattaListBox;
|
||||
protected Collection<RegattaDTO> existingRegattas;
|
||||
|
||||
protected static class LeaderboardParameterValidator implements Validator<LeaderboardDescriptor> {
|
||||
protected final StringMessages stringConstants;
|
||||
protected final Collection<StrippedLeaderboardDTO> existingLeaderboards;
|
||||
|
||||
public LeaderboardParameterValidator(StringMessages stringConstants, Collection<StrippedLeaderboardDTO> existingLeaderboards){
|
||||
super();
|
||||
this.stringConstants = stringConstants;
|
||||
this.existingLeaderboards = existingLeaderboards;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getErrorMessage(LeaderboardDescriptor leaderboardToValidate) {
|
||||
String errorMessage;
|
||||
boolean nonEmpty = leaderboardToValidate.getName() != null && leaderboardToValidate.getName().length() > 0;
|
||||
|
||||
boolean discardThresholdsAscending = true;
|
||||
for (int i = 1; i < leaderboardToValidate.getDiscardThresholds().length; i++) {
|
||||
// TODO what are correct values for discarding Thresholds?
|
||||
if (0 < leaderboardToValidate.getDiscardThresholds().length){
|
||||
discardThresholdsAscending = discardThresholdsAscending
|
||||
&& leaderboardToValidate.getDiscardThresholds()[i - 1] < leaderboardToValidate.getDiscardThresholds()[i]
|
||||
// and if one box is empty, all subsequent boxes need to be empty too
|
||||
&& (leaderboardToValidate.getDiscardThresholds()[i] == 0 || leaderboardToValidate.getDiscardThresholds()[i-1] > 0);
|
||||
}
|
||||
}
|
||||
|
||||
boolean unique = true;
|
||||
for (StrippedLeaderboardDTO dao : existingLeaderboards) {
|
||||
if(dao.name.equals(leaderboardToValidate.getName())){
|
||||
unique = false;
|
||||
}
|
||||
}
|
||||
|
||||
boolean regattaSelected = leaderboardToValidate.getRegattaName() != null ? true : false;
|
||||
|
||||
if (!nonEmpty) {
|
||||
errorMessage = stringConstants.pleaseEnterAName();
|
||||
} else if(!regattaSelected){
|
||||
errorMessage = stringConstants.pleaseSelectARegatta();
|
||||
} else if(!unique){
|
||||
errorMessage = stringConstants.leaderboardWithThisNameAlreadyExists();
|
||||
} else if (!discardThresholdsAscending) {
|
||||
errorMessage = stringConstants.discardThresholdsMustBeAscending();
|
||||
} else {
|
||||
errorMessage = null;
|
||||
}
|
||||
return errorMessage;
|
||||
}
|
||||
}
|
||||
|
||||
public RegattaLeaderboardDialog(String title, LeaderboardDescriptor leaderboardDTO, Collection<RegattaDTO> existingRegattas, StringMessages stringConstants,
|
||||
ErrorReporter errorReporter, LeaderboardParameterValidator validator, DialogCallback<LeaderboardDescriptor> callback) {
|
||||
super(title, leaderboardDTO, stringConstants, validator, callback);
|
||||
this.existingRegattas = existingRegattas;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected LeaderboardDescriptor getResult() {
|
||||
LeaderboardDescriptor leaderboard = super.getResult();
|
||||
leaderboard.setRegattaName(getSelectedRegatta() != null ? getSelectedRegatta().name : null);
|
||||
return leaderboard;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Widget getAdditionalWidget() {
|
||||
VerticalPanel mainPanel = new VerticalPanel();
|
||||
|
||||
Grid formGrid = new Grid(3,2);
|
||||
formGrid.setCellSpacing(3);
|
||||
formGrid.setWidget(0, 0, new Label(stringMessages.name() + ":"));
|
||||
formGrid.setWidget(0, 1, nameTextBox);
|
||||
formGrid.setWidget(1, 0, new Label(stringMessages.regatta() + ":"));
|
||||
formGrid.setWidget(1, 1, regattaListBox);
|
||||
|
||||
mainPanel.add(formGrid);
|
||||
|
||||
mainPanel.add(new Label(stringMessages.discardRacesFromHowManyStartedRacesOn()));
|
||||
HorizontalPanel hp = new HorizontalPanel();
|
||||
hp.setSpacing(3);
|
||||
for (int i = 0; i < discardThresholdBoxes.length; i++) {
|
||||
hp.add(new Label("" + (i + 1) + "."));
|
||||
hp.add(discardThresholdBoxes[i]);
|
||||
}
|
||||
mainPanel.add(hp);
|
||||
return mainPanel;
|
||||
}
|
||||
|
||||
public RegattaDTO getSelectedRegatta() {
|
||||
RegattaDTO result = null;
|
||||
int selIndex = regattaListBox.getSelectedIndex();
|
||||
if(selIndex > 0) { // the zero index represents the 'no selection' text
|
||||
String itemText = regattaListBox.getItemText(selIndex);
|
||||
for(RegattaDTO regattaDTO: existingRegattas) {
|
||||
if(regattaDTO.name.equals(itemText)) {
|
||||
result = regattaDTO;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
+33
-34
@@ -1,34 +1,33 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
|
||||
|
||||
public class RegattaLeaderboardEditDialog extends RegattaLeaderboardDialog {
|
||||
|
||||
public RegattaLeaderboardEditDialog(Collection<StrippedLeaderboardDTO> otherExistingLeaderboards, Collection<RegattaDTO> existingRegattas,
|
||||
LeaderboardDescriptor leaderboard, StringMessages stringConstants, ErrorReporter errorReporter,
|
||||
AsyncCallback<LeaderboardDescriptor> callback) {
|
||||
super(stringConstants.editRegattaLeaderboard(), leaderboard, existingRegattas, stringConstants, errorReporter, new RegattaLeaderboardDialog.LeaderboardParameterValidator(
|
||||
stringConstants, otherExistingLeaderboards), callback);
|
||||
|
||||
nameTextBox = createTextBox(leaderboard.getName());
|
||||
|
||||
regattaListBox = createListBox(false);
|
||||
regattaListBox.addItem(stringConstants.pleaseSelectARegatta());
|
||||
int i=1;
|
||||
for (RegattaDTO regatta : existingRegattas) {
|
||||
regattaListBox.addItem(regatta.name);
|
||||
if (regatta.name.equals(leaderboard.getRegattaName())) {
|
||||
regattaListBox.setSelectedIndex(i);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
regattaListBox.setEnabled(false);
|
||||
discardThresholdBoxes = initPrefilledDiscardThresholdBoxes(leaderboard.getDiscardThresholds(), this);
|
||||
}
|
||||
}
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
|
||||
|
||||
public class RegattaLeaderboardEditDialog extends RegattaLeaderboardDialog {
|
||||
|
||||
public RegattaLeaderboardEditDialog(Collection<StrippedLeaderboardDTO> otherExistingLeaderboards, Collection<RegattaDTO> existingRegattas,
|
||||
LeaderboardDescriptor leaderboard, StringMessages stringConstants, ErrorReporter errorReporter,
|
||||
DialogCallback<LeaderboardDescriptor> callback) {
|
||||
super(stringConstants.editRegattaLeaderboard(), leaderboard, existingRegattas, stringConstants, errorReporter, new RegattaLeaderboardDialog.LeaderboardParameterValidator(
|
||||
stringConstants, otherExistingLeaderboards), callback);
|
||||
|
||||
nameTextBox = createTextBox(leaderboard.getName());
|
||||
|
||||
regattaListBox = createListBox(false);
|
||||
regattaListBox.addItem(stringConstants.pleaseSelectARegatta());
|
||||
int i=1;
|
||||
for (RegattaDTO regatta : existingRegattas) {
|
||||
regattaListBox.addItem(regatta.name);
|
||||
if (regatta.name.equals(leaderboard.getRegattaName())) {
|
||||
regattaListBox.setSelectedIndex(i);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
regattaListBox.setEnabled(false);
|
||||
discardThresholdBoxes = initPrefilledDiscardThresholdBoxes(leaderboard.getDiscardThresholds(), this);
|
||||
}
|
||||
}
|
||||
+529
-528
File diff suppressed because it is too large.
Load diff
+232
-233
@@ -1,233 +1,232 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.dom.client.Style.FontWeight;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.event.dom.client.ClickHandler;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.Button;
|
||||
import com.google.gwt.user.client.ui.Grid;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.ListBox;
|
||||
import com.google.gwt.user.client.ui.TextBox;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.domain.common.ScoringSchemeType;
|
||||
import com.sap.sailing.gwt.ui.client.DataEntryDialog;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.leaderboard.ScoringSchemeTypeFormatter;
|
||||
import com.sap.sailing.gwt.ui.shared.BoatClassDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.SeriesDTO;
|
||||
|
||||
public class RegattaWithSeriesAndFleetsCreateDialog extends DataEntryDialog<RegattaDTO> {
|
||||
|
||||
private StringMessages stringConstants;
|
||||
private RegattaDTO regatta;
|
||||
|
||||
private TextBox nameEntryField;
|
||||
private TextBox boatClassEntryField;
|
||||
private ListBox scoringSchemeListBox;
|
||||
|
||||
private List<SeriesDTO> createdSeries;
|
||||
|
||||
private Grid seriesGrid;
|
||||
|
||||
protected static class RegattaParameterValidator implements Validator<RegattaDTO> {
|
||||
|
||||
private StringMessages stringConstants;
|
||||
private ArrayList<RegattaDTO> existingRegattas;
|
||||
|
||||
public RegattaParameterValidator(StringMessages stringConstants, Collection<RegattaDTO> existingRegattas) {
|
||||
this.stringConstants = stringConstants;
|
||||
this.existingRegattas = new ArrayList<RegattaDTO>(existingRegattas);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getErrorMessage(RegattaDTO regattaToValidate) {
|
||||
String errorMessage = null;
|
||||
boolean nameNotEmpty = regattaToValidate.name != null && regattaToValidate.name.length() > 0;
|
||||
boolean boatClassNotEmpty = regattaToValidate.boatClass != null
|
||||
&& regattaToValidate.boatClass.name.length() > 0;
|
||||
|
||||
boolean unique = true;
|
||||
for (RegattaDTO regatta : existingRegattas) {
|
||||
if (regatta.name.equals(regattaToValidate.name)) {
|
||||
unique = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!nameNotEmpty) {
|
||||
errorMessage = stringConstants.pleaseEnterAName();
|
||||
} else if (!boatClassNotEmpty) {
|
||||
errorMessage = stringConstants.pleaseEnterAName();
|
||||
} else if (!unique) {
|
||||
errorMessage = stringConstants.regattaWithThisNameAlreadyExists();
|
||||
}
|
||||
|
||||
if (errorMessage == null) {
|
||||
List<SeriesDTO> seriesToValidate = regattaToValidate.series;
|
||||
int index = 0;
|
||||
boolean seriesNameNotEmpty = true;
|
||||
|
||||
for (SeriesDTO series : seriesToValidate) {
|
||||
seriesNameNotEmpty = series.name != null && series.name.length() > 0;
|
||||
if (!seriesNameNotEmpty) {
|
||||
break;
|
||||
}
|
||||
index++;
|
||||
}
|
||||
|
||||
int index2 = 0;
|
||||
boolean seriesUnique = true;
|
||||
|
||||
HashSet<String> setToFindDuplicates = new HashSet<String>();
|
||||
for (SeriesDTO series : seriesToValidate) {
|
||||
if (!setToFindDuplicates.add(series.name)) {
|
||||
seriesUnique = false;
|
||||
break;
|
||||
}
|
||||
index2++;
|
||||
}
|
||||
|
||||
if (!seriesNameNotEmpty) {
|
||||
errorMessage = stringConstants.series() + " " + (index + 1) + ": "
|
||||
+ stringConstants.pleaseEnterAName();
|
||||
} else if (!seriesUnique) {
|
||||
errorMessage = stringConstants.series() + " " + (index2 + 1) + ": "
|
||||
+ stringConstants.seriesWithThisNameAlreadyExists();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return errorMessage;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public RegattaWithSeriesAndFleetsCreateDialog(Collection<RegattaDTO> existingRegattas,
|
||||
StringMessages stringConstants, AsyncCallback<RegattaDTO> callback) {
|
||||
super(stringConstants.regatta(), null, stringConstants.ok(), stringConstants.cancel(),
|
||||
new RegattaParameterValidator(stringConstants, existingRegattas), callback);
|
||||
this.stringConstants = stringConstants;
|
||||
this.regatta = new RegattaDTO();
|
||||
|
||||
nameEntryField = createTextBox(null);
|
||||
nameEntryField.setVisibleLength(40);
|
||||
boatClassEntryField = createTextBox(null);
|
||||
boatClassEntryField.setVisibleLength(20);
|
||||
scoringSchemeListBox = createListBox(false);
|
||||
for (ScoringSchemeType scoringSchemeType: ScoringSchemeType.values()) {
|
||||
scoringSchemeListBox.addItem(ScoringSchemeTypeFormatter.format(scoringSchemeType, stringConstants));
|
||||
}
|
||||
|
||||
createdSeries = new ArrayList<SeriesDTO>();
|
||||
seriesGrid = new Grid(0, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected RegattaDTO getResult() {
|
||||
regatta.name = nameEntryField.getText();
|
||||
regatta.boatClass = new BoatClassDTO(boatClassEntryField.getText(), 0.0);
|
||||
regatta.scoringScheme = getSelectedScoringSchemeType();
|
||||
regatta.series = new ArrayList<SeriesDTO>();
|
||||
regatta.series.addAll(createdSeries);
|
||||
return regatta;
|
||||
}
|
||||
|
||||
public ScoringSchemeType getSelectedScoringSchemeType() {
|
||||
ScoringSchemeType result = null;
|
||||
int selIndex = scoringSchemeListBox.getSelectedIndex();
|
||||
if(selIndex >= 0) {
|
||||
String itemText = scoringSchemeListBox.getItemText(selIndex);
|
||||
for(ScoringSchemeType scoringSchemeType: ScoringSchemeType.values()) {
|
||||
if(ScoringSchemeTypeFormatter.format(scoringSchemeType, stringConstants).equals(itemText)) {
|
||||
result = scoringSchemeType;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Widget getAdditionalWidget() {
|
||||
final VerticalPanel panel = new VerticalPanel();
|
||||
Widget additionalWidget = super.getAdditionalWidget();
|
||||
if (additionalWidget != null) {
|
||||
panel.add(additionalWidget);
|
||||
}
|
||||
Grid formGrid = new Grid(3, 2);
|
||||
panel.add(formGrid);
|
||||
formGrid.setWidget(0, 0, new Label(stringConstants.name() + ":"));
|
||||
formGrid.setWidget(0, 1, nameEntryField);
|
||||
formGrid.setWidget(1, 0, new Label(stringConstants.boatClass() + ":"));
|
||||
formGrid.setWidget(1, 1, boatClassEntryField);
|
||||
formGrid.setWidget(2, 0, new Label(stringConstants.scoringSystem() + ":"));
|
||||
formGrid.setWidget(2, 1, scoringSchemeListBox);
|
||||
|
||||
panel.add(createHeadlineLabel(stringConstants.series()));
|
||||
panel.add(seriesGrid);
|
||||
Button addSeriesButton = new Button("Add series");
|
||||
addSeriesButton.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
RegattaDTO result = getResult();
|
||||
SeriesWithFleetsCreateDialog dialog = new SeriesWithFleetsCreateDialog(Collections
|
||||
.unmodifiableCollection(result.series), stringConstants, new AsyncCallback<SeriesDTO>() {
|
||||
@Override
|
||||
public void onFailure(Throwable t) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(SeriesDTO newSeries) {
|
||||
createdSeries.add(newSeries);
|
||||
updateSeriesGrid(panel);
|
||||
}
|
||||
});
|
||||
dialog.show();
|
||||
}
|
||||
});
|
||||
panel.add(addSeriesButton);
|
||||
return panel;
|
||||
}
|
||||
|
||||
private void updateSeriesGrid(VerticalPanel parentPanel) {
|
||||
int widgetIndex = parentPanel.getWidgetIndex(seriesGrid);
|
||||
parentPanel.remove(seriesGrid);
|
||||
|
||||
int seriesCount = createdSeries.size();
|
||||
seriesGrid = new Grid(seriesCount * 2, 3);
|
||||
seriesGrid.setCellSpacing(3);
|
||||
|
||||
for (int i = 0; i < seriesCount; i++) {
|
||||
SeriesDTO seriesDTO = createdSeries.get(i);
|
||||
Label seriesLabel = new Label((i + 1) + ". " + stringConstants.series() + ":");
|
||||
seriesLabel.setWordWrap(false);
|
||||
seriesLabel.getElement().getStyle().setFontWeight(FontWeight.BOLD);
|
||||
seriesGrid.setWidget(i * 2, 0, seriesLabel);
|
||||
seriesGrid.setHTML(i * 2, 1, seriesDTO.name);
|
||||
if (seriesDTO.getFleets() != null && seriesDTO.getFleets().size() > 0) {
|
||||
seriesGrid.setHTML(i * 2 + 1, 1, seriesDTO.getFleets().size() + " fleets: "
|
||||
+ seriesDTO.getFleets().toString());
|
||||
} else {
|
||||
seriesGrid.setHTML(i * 2 + 1, 1, seriesDTO.getFleets().size() + " No fleets defined.");
|
||||
}
|
||||
}
|
||||
|
||||
parentPanel.insert(seriesGrid, widgetIndex);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void show() {
|
||||
super.show();
|
||||
nameEntryField.setFocus(true);
|
||||
}
|
||||
|
||||
}
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.dom.client.Style.FontWeight;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.event.dom.client.ClickHandler;
|
||||
import com.google.gwt.user.client.ui.Button;
|
||||
import com.google.gwt.user.client.ui.Grid;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.ListBox;
|
||||
import com.google.gwt.user.client.ui.TextBox;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.domain.common.ScoringSchemeType;
|
||||
import com.sap.sailing.gwt.ui.client.DataEntryDialog;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.leaderboard.ScoringSchemeTypeFormatter;
|
||||
import com.sap.sailing.gwt.ui.shared.BoatClassDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.SeriesDTO;
|
||||
|
||||
public class RegattaWithSeriesAndFleetsCreateDialog extends DataEntryDialog<RegattaDTO> {
|
||||
|
||||
private StringMessages stringConstants;
|
||||
private RegattaDTO regatta;
|
||||
|
||||
private TextBox nameEntryField;
|
||||
private TextBox boatClassEntryField;
|
||||
private ListBox scoringSchemeListBox;
|
||||
|
||||
private List<SeriesDTO> createdSeries;
|
||||
|
||||
private Grid seriesGrid;
|
||||
|
||||
protected static class RegattaParameterValidator implements Validator<RegattaDTO> {
|
||||
|
||||
private StringMessages stringConstants;
|
||||
private ArrayList<RegattaDTO> existingRegattas;
|
||||
|
||||
public RegattaParameterValidator(StringMessages stringConstants, Collection<RegattaDTO> existingRegattas) {
|
||||
this.stringConstants = stringConstants;
|
||||
this.existingRegattas = new ArrayList<RegattaDTO>(existingRegattas);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getErrorMessage(RegattaDTO regattaToValidate) {
|
||||
String errorMessage = null;
|
||||
boolean nameNotEmpty = regattaToValidate.name != null && regattaToValidate.name.length() > 0;
|
||||
boolean boatClassNotEmpty = regattaToValidate.boatClass != null
|
||||
&& regattaToValidate.boatClass.name.length() > 0;
|
||||
|
||||
boolean unique = true;
|
||||
for (RegattaDTO regatta : existingRegattas) {
|
||||
if (regatta.name.equals(regattaToValidate.name)) {
|
||||
unique = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!nameNotEmpty) {
|
||||
errorMessage = stringConstants.pleaseEnterAName();
|
||||
} else if (!boatClassNotEmpty) {
|
||||
errorMessage = stringConstants.pleaseEnterAName();
|
||||
} else if (!unique) {
|
||||
errorMessage = stringConstants.regattaWithThisNameAlreadyExists();
|
||||
}
|
||||
|
||||
if (errorMessage == null) {
|
||||
List<SeriesDTO> seriesToValidate = regattaToValidate.series;
|
||||
int index = 0;
|
||||
boolean seriesNameNotEmpty = true;
|
||||
|
||||
for (SeriesDTO series : seriesToValidate) {
|
||||
seriesNameNotEmpty = series.name != null && series.name.length() > 0;
|
||||
if (!seriesNameNotEmpty) {
|
||||
break;
|
||||
}
|
||||
index++;
|
||||
}
|
||||
|
||||
int index2 = 0;
|
||||
boolean seriesUnique = true;
|
||||
|
||||
HashSet<String> setToFindDuplicates = new HashSet<String>();
|
||||
for (SeriesDTO series : seriesToValidate) {
|
||||
if (!setToFindDuplicates.add(series.name)) {
|
||||
seriesUnique = false;
|
||||
break;
|
||||
}
|
||||
index2++;
|
||||
}
|
||||
|
||||
if (!seriesNameNotEmpty) {
|
||||
errorMessage = stringConstants.series() + " " + (index + 1) + ": "
|
||||
+ stringConstants.pleaseEnterAName();
|
||||
} else if (!seriesUnique) {
|
||||
errorMessage = stringConstants.series() + " " + (index2 + 1) + ": "
|
||||
+ stringConstants.seriesWithThisNameAlreadyExists();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return errorMessage;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public RegattaWithSeriesAndFleetsCreateDialog(Collection<RegattaDTO> existingRegattas,
|
||||
StringMessages stringConstants, DialogCallback<RegattaDTO> callback) {
|
||||
super(stringConstants.regatta(), null, stringConstants.ok(), stringConstants.cancel(),
|
||||
new RegattaParameterValidator(stringConstants, existingRegattas), callback);
|
||||
this.stringConstants = stringConstants;
|
||||
this.regatta = new RegattaDTO();
|
||||
|
||||
nameEntryField = createTextBox(null);
|
||||
nameEntryField.setVisibleLength(40);
|
||||
boatClassEntryField = createTextBox(null);
|
||||
boatClassEntryField.setVisibleLength(20);
|
||||
scoringSchemeListBox = createListBox(false);
|
||||
for (ScoringSchemeType scoringSchemeType: ScoringSchemeType.values()) {
|
||||
scoringSchemeListBox.addItem(ScoringSchemeTypeFormatter.format(scoringSchemeType, stringConstants));
|
||||
}
|
||||
|
||||
createdSeries = new ArrayList<SeriesDTO>();
|
||||
seriesGrid = new Grid(0, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected RegattaDTO getResult() {
|
||||
regatta.name = nameEntryField.getText();
|
||||
regatta.boatClass = new BoatClassDTO(boatClassEntryField.getText(), 0.0);
|
||||
regatta.scoringScheme = getSelectedScoringSchemeType();
|
||||
regatta.series = new ArrayList<SeriesDTO>();
|
||||
regatta.series.addAll(createdSeries);
|
||||
return regatta;
|
||||
}
|
||||
|
||||
public ScoringSchemeType getSelectedScoringSchemeType() {
|
||||
ScoringSchemeType result = null;
|
||||
int selIndex = scoringSchemeListBox.getSelectedIndex();
|
||||
if(selIndex >= 0) {
|
||||
String itemText = scoringSchemeListBox.getItemText(selIndex);
|
||||
for(ScoringSchemeType scoringSchemeType: ScoringSchemeType.values()) {
|
||||
if(ScoringSchemeTypeFormatter.format(scoringSchemeType, stringConstants).equals(itemText)) {
|
||||
result = scoringSchemeType;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Widget getAdditionalWidget() {
|
||||
final VerticalPanel panel = new VerticalPanel();
|
||||
Widget additionalWidget = super.getAdditionalWidget();
|
||||
if (additionalWidget != null) {
|
||||
panel.add(additionalWidget);
|
||||
}
|
||||
Grid formGrid = new Grid(3, 2);
|
||||
panel.add(formGrid);
|
||||
formGrid.setWidget(0, 0, new Label(stringConstants.name() + ":"));
|
||||
formGrid.setWidget(0, 1, nameEntryField);
|
||||
formGrid.setWidget(1, 0, new Label(stringConstants.boatClass() + ":"));
|
||||
formGrid.setWidget(1, 1, boatClassEntryField);
|
||||
formGrid.setWidget(2, 0, new Label(stringConstants.scoringSystem() + ":"));
|
||||
formGrid.setWidget(2, 1, scoringSchemeListBox);
|
||||
|
||||
panel.add(createHeadlineLabel(stringConstants.series()));
|
||||
panel.add(seriesGrid);
|
||||
Button addSeriesButton = new Button("Add series");
|
||||
addSeriesButton.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
RegattaDTO result = getResult();
|
||||
SeriesWithFleetsCreateDialog dialog = new SeriesWithFleetsCreateDialog(Collections
|
||||
.unmodifiableCollection(result.series), stringConstants, new DialogCallback<SeriesDTO>() {
|
||||
@Override
|
||||
public void cancel() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void ok(SeriesDTO newSeries) {
|
||||
createdSeries.add(newSeries);
|
||||
updateSeriesGrid(panel);
|
||||
}
|
||||
});
|
||||
dialog.show();
|
||||
}
|
||||
});
|
||||
panel.add(addSeriesButton);
|
||||
return panel;
|
||||
}
|
||||
|
||||
private void updateSeriesGrid(VerticalPanel parentPanel) {
|
||||
int widgetIndex = parentPanel.getWidgetIndex(seriesGrid);
|
||||
parentPanel.remove(seriesGrid);
|
||||
|
||||
int seriesCount = createdSeries.size();
|
||||
seriesGrid = new Grid(seriesCount * 2, 3);
|
||||
seriesGrid.setCellSpacing(3);
|
||||
|
||||
for (int i = 0; i < seriesCount; i++) {
|
||||
SeriesDTO seriesDTO = createdSeries.get(i);
|
||||
Label seriesLabel = new Label((i + 1) + ". " + stringConstants.series() + ":");
|
||||
seriesLabel.setWordWrap(false);
|
||||
seriesLabel.getElement().getStyle().setFontWeight(FontWeight.BOLD);
|
||||
seriesGrid.setWidget(i * 2, 0, seriesLabel);
|
||||
seriesGrid.setHTML(i * 2, 1, seriesDTO.name);
|
||||
if (seriesDTO.getFleets() != null && seriesDTO.getFleets().size() > 0) {
|
||||
seriesGrid.setHTML(i * 2 + 1, 1, seriesDTO.getFleets().size() + " fleets: "
|
||||
+ seriesDTO.getFleets().toString());
|
||||
} else {
|
||||
seriesGrid.setHTML(i * 2 + 1, 1, seriesDTO.getFleets().size() + " No fleets defined.");
|
||||
}
|
||||
}
|
||||
|
||||
parentPanel.insert(seriesGrid, widgetIndex);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void show() {
|
||||
super.show();
|
||||
nameEntryField.setFocus(true);
|
||||
}
|
||||
|
||||
}
|
||||
+5
-4
@@ -15,6 +15,7 @@ import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.domain.common.impl.Util.Pair;
|
||||
import com.sap.sailing.domain.common.impl.Util.Triple;
|
||||
import com.sap.sailing.gwt.ui.client.DataEntryDialog;
|
||||
import com.sap.sailing.gwt.ui.client.DataEntryDialog.DialogCallback;
|
||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
@@ -62,9 +63,9 @@ public class ReplicationPanel extends FlowPanel {
|
||||
|
||||
private void addReplication() {
|
||||
AddReplicationDialog dialog = new AddReplicationDialog(null,
|
||||
new AsyncCallback<Triple<Pair<String, String>, Integer, Integer>>() {
|
||||
new DialogCallback<Triple<Pair<String, String>, Integer, Integer>>() {
|
||||
@Override
|
||||
public void onSuccess(final Triple<Pair<String, String>, Integer, Integer> masterNameAndExchangeNameAndMessagingPortNumberAndServletPortNumber) {
|
||||
public void ok(final Triple<Pair<String, String>, Integer, Integer> masterNameAndExchangeNameAndMessagingPortNumberAndServletPortNumber) {
|
||||
sailingService.startReplicatingFromMaster(masterNameAndExchangeNameAndMessagingPortNumberAndServletPortNumber.getA().getA(),
|
||||
masterNameAndExchangeNameAndMessagingPortNumberAndServletPortNumber.getA().getB(),
|
||||
masterNameAndExchangeNameAndMessagingPortNumberAndServletPortNumber.getC(),
|
||||
@@ -84,7 +85,7 @@ public class ReplicationPanel extends FlowPanel {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable arg0) {
|
||||
public void cancel() {
|
||||
// simply don't add replication
|
||||
}
|
||||
});
|
||||
@@ -141,7 +142,7 @@ public class ReplicationPanel extends FlowPanel {
|
||||
private final IntegerBox servletPortField;
|
||||
|
||||
public AddReplicationDialog(final Validator<Triple<Pair<String, String>, Integer, Integer>> validator,
|
||||
final AsyncCallback<Triple<Pair<String, String>, Integer, Integer>> callback) {
|
||||
final DialogCallback<Triple<Pair<String, String>, Integer, Integer>> callback) {
|
||||
super(stringMessages.add(), stringMessages.enterMaster(),
|
||||
stringMessages.ok(), stringMessages.cancel(), validator, callback);
|
||||
hostnameEntryField = createTextBox("localhost");
|
||||
|
||||
+256
-257
@@ -1,257 +1,256 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.event.dom.client.ChangeEvent;
|
||||
import com.google.gwt.event.dom.client.ChangeHandler;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.event.dom.client.ClickHandler;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.Button;
|
||||
import com.google.gwt.user.client.ui.CheckBox;
|
||||
import com.google.gwt.user.client.ui.Grid;
|
||||
import com.google.gwt.user.client.ui.IntegerBox;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.ListBox;
|
||||
import com.google.gwt.user.client.ui.TextBox;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.domain.common.Color;
|
||||
import com.sap.sailing.gwt.ui.client.DataEntryDialog;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.FleetDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.SeriesDTO;
|
||||
|
||||
public class SeriesWithFleetsCreateDialog extends DataEntryDialog<SeriesDTO> {
|
||||
|
||||
private StringMessages stringConstants;
|
||||
private SeriesDTO series;
|
||||
|
||||
private TextBox nameEntryField;
|
||||
private CheckBox isMedalSeriesCheckbox;
|
||||
|
||||
private List<TextBox> fleetNameEntryFields;
|
||||
private List<ListBox> fleetColorEntryFields;
|
||||
private List<IntegerBox> fleetOrderNoEntryFields;
|
||||
|
||||
private Grid fleetsGrid;
|
||||
|
||||
protected static class SeriesParameterValidator implements Validator<SeriesDTO> {
|
||||
|
||||
private StringMessages stringConstants;
|
||||
private ArrayList<SeriesDTO> existingSeries;
|
||||
|
||||
public SeriesParameterValidator(StringMessages stringConstants, Collection<SeriesDTO> existingSeries) {
|
||||
this.stringConstants = stringConstants;
|
||||
this.existingSeries = new ArrayList<SeriesDTO>(existingSeries);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getErrorMessage(SeriesDTO seriesToValidate) {
|
||||
String errorMessage = null;
|
||||
boolean nameNotEmpty = seriesToValidate.name != null && seriesToValidate.name.length() > 0;
|
||||
boolean unique = true;
|
||||
for (SeriesDTO series : existingSeries) {
|
||||
if (series.name.equals(seriesToValidate.name)) {
|
||||
unique = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!nameNotEmpty) {
|
||||
errorMessage = stringConstants.pleaseEnterAName();
|
||||
} else if (!unique) {
|
||||
errorMessage = stringConstants.seriesWithThisNameAlreadyExists();
|
||||
}
|
||||
if (errorMessage == null) {
|
||||
List<FleetDTO> fleetsToValidate = seriesToValidate.getFleets();
|
||||
int index = 0;
|
||||
boolean fleetNameNotEmpty = true;
|
||||
for (FleetDTO fleet : fleetsToValidate) {
|
||||
fleetNameNotEmpty = fleet.name != null && fleet.name.length() > 0;
|
||||
if (!fleetNameNotEmpty) {
|
||||
break;
|
||||
}
|
||||
index++;
|
||||
}
|
||||
int index2 = 0;
|
||||
boolean fleetUnique = true;
|
||||
HashSet<String> setToFindDuplicates = new HashSet<String>();
|
||||
for (FleetDTO fleet: fleetsToValidate) {
|
||||
if(!setToFindDuplicates.add(fleet.name)) {
|
||||
fleetUnique = false;
|
||||
break;
|
||||
}
|
||||
index2++;
|
||||
}
|
||||
if (!fleetNameNotEmpty) {
|
||||
errorMessage = stringConstants.fleet() + " " + (index + 1) + ": " + stringConstants.pleaseEnterAName();
|
||||
} else if (!fleetUnique) {
|
||||
errorMessage = stringConstants.fleet() + " " + (index2 + 1) + ": " + stringConstants.fleetWithThisNameAlreadyExists();
|
||||
}
|
||||
}
|
||||
return errorMessage;
|
||||
}
|
||||
}
|
||||
|
||||
public SeriesWithFleetsCreateDialog(Collection<SeriesDTO> existingSeries, StringMessages stringConstants,
|
||||
AsyncCallback<SeriesDTO> callback) {
|
||||
super(stringConstants.series(), null, stringConstants.ok(), stringConstants.cancel(),
|
||||
new SeriesParameterValidator(stringConstants, existingSeries), callback);
|
||||
this.stringConstants = stringConstants;
|
||||
this.series = new SeriesDTO();
|
||||
nameEntryField = createTextBox(null);
|
||||
nameEntryField.setVisibleLength(40);
|
||||
isMedalSeriesCheckbox = createCheckbox(stringConstants.medalSeries());
|
||||
fleetNameEntryFields = new ArrayList<TextBox>();
|
||||
fleetColorEntryFields = new ArrayList<ListBox>();
|
||||
fleetOrderNoEntryFields = new ArrayList<IntegerBox>();
|
||||
fleetsGrid = new Grid(0, 0);
|
||||
// create at least one fleet
|
||||
addFleetWidget("Default", 0, null);
|
||||
}
|
||||
|
||||
private Widget createFleetNameWidget(String defaultName) {
|
||||
TextBox textBox = createTextBox(defaultName);
|
||||
textBox.setVisibleLength(40);
|
||||
textBox.setWidth("175px");
|
||||
fleetNameEntryFields.add(textBox);
|
||||
return textBox;
|
||||
}
|
||||
|
||||
private Widget createFleetColorWidget(Color defaultColor) {
|
||||
final ListBox listBox = createListBox(false);
|
||||
final int fleetIndex = fleetNameEntryFields.size()-1;
|
||||
listBox.addChangeHandler(new ChangeHandler() {
|
||||
@Override
|
||||
public void onChange(ChangeEvent event) {
|
||||
// set default order no of the selected color
|
||||
int selIndex = listBox.getSelectedIndex();
|
||||
IntegerBox orderNoBox = fleetOrderNoEntryFields.get(fleetIndex);
|
||||
TextBox nameBox = fleetNameEntryFields.get(fleetIndex);
|
||||
if (selIndex == 0) {
|
||||
orderNoBox.setValue(0);
|
||||
} else {
|
||||
String value = listBox.getValue(selIndex);
|
||||
final FleetColors color = FleetColors.valueOf(value);
|
||||
if (color != null) {
|
||||
orderNoBox.setValue(color.getDefaultOrderNo());
|
||||
nameBox.setValue(""+color.name().charAt(0)+color.name().toLowerCase().substring(1));
|
||||
}
|
||||
}
|
||||
validate();
|
||||
}
|
||||
});
|
||||
listBox.addItem(stringConstants.noColor());
|
||||
for(FleetColors value: FleetColors.values()) {
|
||||
listBox.addItem(value.name());
|
||||
}
|
||||
if(defaultColor == null) {
|
||||
listBox.setSelectedIndex(0);
|
||||
}
|
||||
fleetColorEntryFields.add(listBox);
|
||||
return listBox;
|
||||
}
|
||||
|
||||
private Widget createFleetOrderNoWidget(int defaultValue) {
|
||||
IntegerBox intBox = createIntegerBox(defaultValue, 3);
|
||||
fleetOrderNoEntryFields.add(intBox);
|
||||
return intBox;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected SeriesDTO getResult() {
|
||||
series.name = nameEntryField.getText();
|
||||
series.setMedal(isMedalSeriesCheckbox.getValue());
|
||||
List<FleetDTO> fleets = new ArrayList<FleetDTO>();
|
||||
int fleetsCount = fleetNameEntryFields.size();
|
||||
for(int i = 0; i < fleetsCount; i++) {
|
||||
FleetDTO fleetDTO = new FleetDTO();
|
||||
fleetDTO.name = fleetNameEntryFields.get(i).getValue();
|
||||
fleetDTO.setColor(getSelectedColor(fleetColorEntryFields.get(i)));
|
||||
int orderNo = -1;
|
||||
if(fleetOrderNoEntryFields.get(i).getValue() != null) {
|
||||
orderNo = fleetOrderNoEntryFields.get(i).getValue();
|
||||
}
|
||||
fleetDTO.setOrderNo(orderNo);
|
||||
fleets.add(fleetDTO);
|
||||
}
|
||||
series.setFleets(fleets);
|
||||
return series;
|
||||
}
|
||||
|
||||
private Color getSelectedColor(ListBox colorListBox) {
|
||||
Color result = null;
|
||||
int selIndex = colorListBox.getSelectedIndex();
|
||||
// the zero index represents the 'no color' option
|
||||
if(selIndex > 0) {
|
||||
String value = colorListBox.getValue(selIndex);
|
||||
for(FleetColors color: FleetColors.values()) {
|
||||
if(color.name().equals(value)) {
|
||||
result = color.getColor();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Widget getAdditionalWidget() {
|
||||
final VerticalPanel panel = new VerticalPanel();
|
||||
Widget additionalWidget = super.getAdditionalWidget();
|
||||
if (additionalWidget != null) {
|
||||
panel.add(additionalWidget);
|
||||
}
|
||||
Grid formGrid = new Grid(2, 2);
|
||||
panel.add(formGrid);
|
||||
formGrid.setWidget(0, 0, new Label(stringConstants.name() + ":"));
|
||||
formGrid.setWidget(0, 1, nameEntryField);
|
||||
formGrid.setWidget(1, 1, isMedalSeriesCheckbox);
|
||||
panel.add(createHeadlineLabel(stringConstants.fleets()));
|
||||
panel.add(fleetsGrid);
|
||||
Button addFleetButton = new Button(stringConstants.addFleet());
|
||||
addFleetButton.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
addFleetWidget(null, 0, null);
|
||||
updateFleetsGrid(panel);
|
||||
}
|
||||
});
|
||||
panel.add(addFleetButton);
|
||||
updateFleetsGrid(panel);
|
||||
return panel;
|
||||
}
|
||||
|
||||
private void addFleetWidget(String fleetName, int ordering, Color color) {
|
||||
createFleetNameWidget(fleetName);
|
||||
createFleetOrderNoWidget(ordering);
|
||||
createFleetColorWidget(color);
|
||||
}
|
||||
|
||||
private void updateFleetsGrid(VerticalPanel parentPanel) {
|
||||
int widgetIndex = parentPanel.getWidgetIndex(fleetsGrid);
|
||||
parentPanel.remove(fleetsGrid);
|
||||
int fleetCount = fleetNameEntryFields.size();
|
||||
fleetsGrid = new Grid(fleetCount + 1, 3);
|
||||
fleetsGrid.setCellSpacing(4);
|
||||
fleetsGrid.setHTML(0, 0, stringConstants.color());
|
||||
fleetsGrid.setHTML(0, 1, stringConstants.name());
|
||||
fleetsGrid.setHTML(0, 2, stringConstants.rank());
|
||||
for(int i = 0; i < fleetCount; i++) {
|
||||
fleetsGrid.setWidget(i+1, 0, fleetColorEntryFields.get(i));
|
||||
fleetsGrid.setWidget(i+1, 1, fleetNameEntryFields.get(i));
|
||||
fleetsGrid.setWidget(i+1, 2, fleetOrderNoEntryFields.get(i));
|
||||
}
|
||||
parentPanel.insert(fleetsGrid, widgetIndex);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void show() {
|
||||
super.show();
|
||||
nameEntryField.setFocus(true);
|
||||
}
|
||||
|
||||
}
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.event.dom.client.ChangeEvent;
|
||||
import com.google.gwt.event.dom.client.ChangeHandler;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.event.dom.client.ClickHandler;
|
||||
import com.google.gwt.user.client.ui.Button;
|
||||
import com.google.gwt.user.client.ui.CheckBox;
|
||||
import com.google.gwt.user.client.ui.Grid;
|
||||
import com.google.gwt.user.client.ui.IntegerBox;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.ListBox;
|
||||
import com.google.gwt.user.client.ui.TextBox;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.domain.common.Color;
|
||||
import com.sap.sailing.gwt.ui.client.DataEntryDialog;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.FleetDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.SeriesDTO;
|
||||
|
||||
public class SeriesWithFleetsCreateDialog extends DataEntryDialog<SeriesDTO> {
|
||||
|
||||
private StringMessages stringConstants;
|
||||
private SeriesDTO series;
|
||||
|
||||
private TextBox nameEntryField;
|
||||
private CheckBox isMedalSeriesCheckbox;
|
||||
|
||||
private List<TextBox> fleetNameEntryFields;
|
||||
private List<ListBox> fleetColorEntryFields;
|
||||
private List<IntegerBox> fleetOrderNoEntryFields;
|
||||
|
||||
private Grid fleetsGrid;
|
||||
|
||||
protected static class SeriesParameterValidator implements Validator<SeriesDTO> {
|
||||
|
||||
private StringMessages stringConstants;
|
||||
private ArrayList<SeriesDTO> existingSeries;
|
||||
|
||||
public SeriesParameterValidator(StringMessages stringConstants, Collection<SeriesDTO> existingSeries) {
|
||||
this.stringConstants = stringConstants;
|
||||
this.existingSeries = new ArrayList<SeriesDTO>(existingSeries);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getErrorMessage(SeriesDTO seriesToValidate) {
|
||||
String errorMessage = null;
|
||||
boolean nameNotEmpty = seriesToValidate.name != null && seriesToValidate.name.length() > 0;
|
||||
boolean unique = true;
|
||||
for (SeriesDTO series : existingSeries) {
|
||||
if (series.name.equals(seriesToValidate.name)) {
|
||||
unique = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!nameNotEmpty) {
|
||||
errorMessage = stringConstants.pleaseEnterAName();
|
||||
} else if (!unique) {
|
||||
errorMessage = stringConstants.seriesWithThisNameAlreadyExists();
|
||||
}
|
||||
if (errorMessage == null) {
|
||||
List<FleetDTO> fleetsToValidate = seriesToValidate.getFleets();
|
||||
int index = 0;
|
||||
boolean fleetNameNotEmpty = true;
|
||||
for (FleetDTO fleet : fleetsToValidate) {
|
||||
fleetNameNotEmpty = fleet.name != null && fleet.name.length() > 0;
|
||||
if (!fleetNameNotEmpty) {
|
||||
break;
|
||||
}
|
||||
index++;
|
||||
}
|
||||
int index2 = 0;
|
||||
boolean fleetUnique = true;
|
||||
HashSet<String> setToFindDuplicates = new HashSet<String>();
|
||||
for (FleetDTO fleet: fleetsToValidate) {
|
||||
if(!setToFindDuplicates.add(fleet.name)) {
|
||||
fleetUnique = false;
|
||||
break;
|
||||
}
|
||||
index2++;
|
||||
}
|
||||
if (!fleetNameNotEmpty) {
|
||||
errorMessage = stringConstants.fleet() + " " + (index + 1) + ": " + stringConstants.pleaseEnterAName();
|
||||
} else if (!fleetUnique) {
|
||||
errorMessage = stringConstants.fleet() + " " + (index2 + 1) + ": " + stringConstants.fleetWithThisNameAlreadyExists();
|
||||
}
|
||||
}
|
||||
return errorMessage;
|
||||
}
|
||||
}
|
||||
|
||||
public SeriesWithFleetsCreateDialog(Collection<SeriesDTO> existingSeries, StringMessages stringConstants,
|
||||
DialogCallback<SeriesDTO> callback) {
|
||||
super(stringConstants.series(), null, stringConstants.ok(), stringConstants.cancel(),
|
||||
new SeriesParameterValidator(stringConstants, existingSeries), callback);
|
||||
this.stringConstants = stringConstants;
|
||||
this.series = new SeriesDTO();
|
||||
nameEntryField = createTextBox(null);
|
||||
nameEntryField.setVisibleLength(40);
|
||||
isMedalSeriesCheckbox = createCheckbox(stringConstants.medalSeries());
|
||||
fleetNameEntryFields = new ArrayList<TextBox>();
|
||||
fleetColorEntryFields = new ArrayList<ListBox>();
|
||||
fleetOrderNoEntryFields = new ArrayList<IntegerBox>();
|
||||
fleetsGrid = new Grid(0, 0);
|
||||
// create at least one fleet
|
||||
addFleetWidget("Default", 0, null);
|
||||
}
|
||||
|
||||
private Widget createFleetNameWidget(String defaultName) {
|
||||
TextBox textBox = createTextBox(defaultName);
|
||||
textBox.setVisibleLength(40);
|
||||
textBox.setWidth("175px");
|
||||
fleetNameEntryFields.add(textBox);
|
||||
return textBox;
|
||||
}
|
||||
|
||||
private Widget createFleetColorWidget(Color defaultColor) {
|
||||
final ListBox listBox = createListBox(false);
|
||||
final int fleetIndex = fleetNameEntryFields.size()-1;
|
||||
listBox.addChangeHandler(new ChangeHandler() {
|
||||
@Override
|
||||
public void onChange(ChangeEvent event) {
|
||||
// set default order no of the selected color
|
||||
int selIndex = listBox.getSelectedIndex();
|
||||
IntegerBox orderNoBox = fleetOrderNoEntryFields.get(fleetIndex);
|
||||
TextBox nameBox = fleetNameEntryFields.get(fleetIndex);
|
||||
if (selIndex == 0) {
|
||||
orderNoBox.setValue(0);
|
||||
} else {
|
||||
String value = listBox.getValue(selIndex);
|
||||
final FleetColors color = FleetColors.valueOf(value);
|
||||
if (color != null) {
|
||||
orderNoBox.setValue(color.getDefaultOrderNo());
|
||||
nameBox.setValue(""+color.name().charAt(0)+color.name().toLowerCase().substring(1));
|
||||
}
|
||||
}
|
||||
validate();
|
||||
}
|
||||
});
|
||||
listBox.addItem(stringConstants.noColor());
|
||||
for(FleetColors value: FleetColors.values()) {
|
||||
listBox.addItem(value.name());
|
||||
}
|
||||
if(defaultColor == null) {
|
||||
listBox.setSelectedIndex(0);
|
||||
}
|
||||
fleetColorEntryFields.add(listBox);
|
||||
return listBox;
|
||||
}
|
||||
|
||||
private Widget createFleetOrderNoWidget(int defaultValue) {
|
||||
IntegerBox intBox = createIntegerBox(defaultValue, 3);
|
||||
fleetOrderNoEntryFields.add(intBox);
|
||||
return intBox;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected SeriesDTO getResult() {
|
||||
series.name = nameEntryField.getText();
|
||||
series.setMedal(isMedalSeriesCheckbox.getValue());
|
||||
List<FleetDTO> fleets = new ArrayList<FleetDTO>();
|
||||
int fleetsCount = fleetNameEntryFields.size();
|
||||
for(int i = 0; i < fleetsCount; i++) {
|
||||
FleetDTO fleetDTO = new FleetDTO();
|
||||
fleetDTO.name = fleetNameEntryFields.get(i).getValue();
|
||||
fleetDTO.setColor(getSelectedColor(fleetColorEntryFields.get(i)));
|
||||
int orderNo = -1;
|
||||
if(fleetOrderNoEntryFields.get(i).getValue() != null) {
|
||||
orderNo = fleetOrderNoEntryFields.get(i).getValue();
|
||||
}
|
||||
fleetDTO.setOrderNo(orderNo);
|
||||
fleets.add(fleetDTO);
|
||||
}
|
||||
series.setFleets(fleets);
|
||||
return series;
|
||||
}
|
||||
|
||||
private Color getSelectedColor(ListBox colorListBox) {
|
||||
Color result = null;
|
||||
int selIndex = colorListBox.getSelectedIndex();
|
||||
// the zero index represents the 'no color' option
|
||||
if(selIndex > 0) {
|
||||
String value = colorListBox.getValue(selIndex);
|
||||
for(FleetColors color: FleetColors.values()) {
|
||||
if(color.name().equals(value)) {
|
||||
result = color.getColor();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Widget getAdditionalWidget() {
|
||||
final VerticalPanel panel = new VerticalPanel();
|
||||
Widget additionalWidget = super.getAdditionalWidget();
|
||||
if (additionalWidget != null) {
|
||||
panel.add(additionalWidget);
|
||||
}
|
||||
Grid formGrid = new Grid(2, 2);
|
||||
panel.add(formGrid);
|
||||
formGrid.setWidget(0, 0, new Label(stringConstants.name() + ":"));
|
||||
formGrid.setWidget(0, 1, nameEntryField);
|
||||
formGrid.setWidget(1, 1, isMedalSeriesCheckbox);
|
||||
panel.add(createHeadlineLabel(stringConstants.fleets()));
|
||||
panel.add(fleetsGrid);
|
||||
Button addFleetButton = new Button(stringConstants.addFleet());
|
||||
addFleetButton.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
addFleetWidget(null, 0, null);
|
||||
updateFleetsGrid(panel);
|
||||
}
|
||||
});
|
||||
panel.add(addFleetButton);
|
||||
updateFleetsGrid(panel);
|
||||
return panel;
|
||||
}
|
||||
|
||||
private void addFleetWidget(String fleetName, int ordering, Color color) {
|
||||
createFleetNameWidget(fleetName);
|
||||
createFleetOrderNoWidget(ordering);
|
||||
createFleetColorWidget(color);
|
||||
}
|
||||
|
||||
private void updateFleetsGrid(VerticalPanel parentPanel) {
|
||||
int widgetIndex = parentPanel.getWidgetIndex(fleetsGrid);
|
||||
parentPanel.remove(fleetsGrid);
|
||||
int fleetCount = fleetNameEntryFields.size();
|
||||
fleetsGrid = new Grid(fleetCount + 1, 3);
|
||||
fleetsGrid.setCellSpacing(4);
|
||||
fleetsGrid.setHTML(0, 0, stringConstants.color());
|
||||
fleetsGrid.setHTML(0, 1, stringConstants.name());
|
||||
fleetsGrid.setHTML(0, 2, stringConstants.rank());
|
||||
for(int i = 0; i < fleetCount; i++) {
|
||||
fleetsGrid.setWidget(i+1, 0, fleetColorEntryFields.get(i));
|
||||
fleetsGrid.setWidget(i+1, 1, fleetNameEntryFields.get(i));
|
||||
fleetsGrid.setWidget(i+1, 2, fleetOrderNoEntryFields.get(i));
|
||||
}
|
||||
parentPanel.insert(fleetsGrid, widgetIndex);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void show() {
|
||||
super.show();
|
||||
nameEntryField.setFocus(true);
|
||||
}
|
||||
|
||||
}
|
||||
+4
-3
@@ -32,6 +32,7 @@ import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
|
||||
import com.sap.sailing.domain.common.WindSource;
|
||||
import com.sap.sailing.domain.common.WindSourceType;
|
||||
import com.sap.sailing.gwt.ui.actions.AsyncActionsExecutor;
|
||||
import com.sap.sailing.gwt.ui.client.DataEntryDialog.DialogCallback;
|
||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||
import com.sap.sailing.gwt.ui.client.RaceSelectionChangeListener;
|
||||
import com.sap.sailing.gwt.ui.client.RaceSelectionModel;
|
||||
@@ -215,13 +216,13 @@ public class WindPanel extends FormPanel implements RegattaDisplayer, WindShower
|
||||
|
||||
private void showWindSettingDialog(RaceDTO race, CourseDTO course) {
|
||||
WindSettingDialog windSettingDialog = new WindSettingDialog(race, course, stringMessages,
|
||||
new AsyncCallback<WindDTO>() {
|
||||
new DialogCallback<WindDTO>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
public void cancel() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(final WindDTO result) {
|
||||
public void ok(final WindDTO result) {
|
||||
addWindFix(result);
|
||||
}
|
||||
});
|
||||
|
||||
+1
-2
@@ -1,6 +1,5 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.DoubleBox;
|
||||
import com.google.gwt.user.client.ui.Grid;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
@@ -55,7 +54,7 @@ public class WindSettingDialog extends DataEntryDialog<WindDTO> {
|
||||
}
|
||||
}
|
||||
|
||||
public WindSettingDialog(RaceDTO race, CourseDTO courseDTO, StringMessages stringMessages, AsyncCallback<WindDTO> callback) {
|
||||
public WindSettingDialog(RaceDTO race, CourseDTO courseDTO, StringMessages stringMessages, DialogCallback<WindDTO> callback) {
|
||||
super(stringMessages.actionAddWindData(), null, stringMessages.ok(), stringMessages.cancel(), new WindDataValidator(stringMessages), callback);
|
||||
this.stringMessages = stringMessages;
|
||||
speedInKnotsBox = createDoubleBox(5);
|
||||
|
||||
+9
-4
@@ -49,6 +49,11 @@ public abstract class DataEntryDialog<T> {
|
||||
*/
|
||||
String getErrorMessage(T valueToValidate);
|
||||
}
|
||||
|
||||
public static interface DialogCallback<T> {
|
||||
void ok(T editedObject);
|
||||
void cancel();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param validator
|
||||
@@ -60,7 +65,7 @@ public abstract class DataEntryDialog<T> {
|
||||
* {@link AsyncCallback#onSuccess(Object) confirmed}
|
||||
*/
|
||||
public DataEntryDialog(String title, String message, String okButtonName, String cancelButtonName,
|
||||
Validator<T> validator, final AsyncCallback<T> callback) {
|
||||
Validator<T> validator, final DialogCallback<T> callback) {
|
||||
this(title, message, okButtonName, cancelButtonName, validator, /* animationEnabled */ true, callback);
|
||||
}
|
||||
|
||||
@@ -74,7 +79,7 @@ public abstract class DataEntryDialog<T> {
|
||||
* {@link AsyncCallback#onSuccess(Object) confirmed}
|
||||
*/
|
||||
public DataEntryDialog(String title, String message, String okButtonName, String cancelButtonName,
|
||||
Validator<T> validator, boolean animationEnabled, final AsyncCallback<T> callback) {
|
||||
Validator<T> validator, boolean animationEnabled, final DialogCallback<T> callback) {
|
||||
dateEntryDialog = new DialogBox();
|
||||
dateEntryDialog.setText(title);
|
||||
dateEntryDialog.setAnimationEnabled(animationEnabled);
|
||||
@@ -103,14 +108,14 @@ public abstract class DataEntryDialog<T> {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
dateEntryDialog.hide();
|
||||
callback.onFailure(null);
|
||||
callback.cancel();
|
||||
}
|
||||
});
|
||||
dateEntryDialog.setWidget(dialogFPanel);
|
||||
okButton.addClickHandler(new ClickHandler() {
|
||||
public void onClick(ClickEvent event) {
|
||||
dateEntryDialog.hide();
|
||||
callback.onSuccess(getResult());
|
||||
callback.ok(getResult());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
+1
-2
@@ -1,6 +1,5 @@
|
||||
package com.sap.sailing.gwt.ui.client;
|
||||
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.TextBox;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
|
||||
@@ -15,7 +14,7 @@ public class TextfieldEntryDialog extends DataEntryDialog<String> {
|
||||
private final TextBox entryField;
|
||||
|
||||
public TextfieldEntryDialog(String title, String message, String okButtonName, String cancelButtonName,
|
||||
String initialValue, final Validator<String> validator, final AsyncCallback<String> callback) {
|
||||
String initialValue, final Validator<String> validator, final DialogCallback<String> callback) {
|
||||
super(title, message, okButtonName, cancelButtonName, validator, callback);
|
||||
entryField = createTextBox(initialValue);
|
||||
}
|
||||
|
||||
+1
-2
@@ -1,6 +1,5 @@
|
||||
package com.sap.sailing.gwt.ui.client;
|
||||
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.CheckBox;
|
||||
import com.google.gwt.user.client.ui.TextBox;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
@@ -12,7 +11,7 @@ public class TextfieldEntryDialogWithCheckbox extends DataEntryDialog<Pair<Strin
|
||||
private final TextBox entryField;
|
||||
|
||||
public TextfieldEntryDialogWithCheckbox(String title, String message, String okButtonName, String cancelButtonName,
|
||||
String checkboxLabel, String initialValue, Validator<Pair<String, Boolean>> validator, AsyncCallback<Pair<String, Boolean>> callback) {
|
||||
String checkboxLabel, String initialValue, Validator<Pair<String, Boolean>> validator, DialogCallback<Pair<String, Boolean>> callback) {
|
||||
super(title, message, okButtonName, cancelButtonName, validator, callback);
|
||||
checkbox = createCheckbox(checkboxLabel);
|
||||
entryField = createTextBox(initialValue);
|
||||
|
||||
+3
-3
@@ -378,7 +378,7 @@ public class MatchAndApplyScoreCorrectionsDialog extends DataEntryDialog<BulkSco
|
||||
}
|
||||
}
|
||||
|
||||
private static class Callback implements AsyncCallback<BulkScoreCorrectionDTO> {
|
||||
private static class Callback implements DialogCallback<BulkScoreCorrectionDTO> {
|
||||
private final SailingServiceAsync sailingService;
|
||||
private final StringMessages stringMessages;
|
||||
private final ErrorReporter errorReporter;
|
||||
@@ -393,12 +393,12 @@ public class MatchAndApplyScoreCorrectionsDialog extends DataEntryDialog<BulkSco
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
public void cancel() {
|
||||
// user has canceled the dialog
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(final BulkScoreCorrectionDTO result) {
|
||||
public void ok(final BulkScoreCorrectionDTO result) {
|
||||
leaderboardPanel.getBusyIndicator().setBusy(true);
|
||||
sailingService.updateLeaderboardScoreCorrectionsAndMaxPointsReasons(result, new AsyncCallback<Void>() {
|
||||
@Override
|
||||
|
||||
+3
-3
@@ -43,7 +43,7 @@ public class ResultSelectionAndApplyDialog extends DataEntryDialog<Triple<String
|
||||
}
|
||||
}
|
||||
|
||||
private static class Callback implements AsyncCallback<Triple<String, String, Pair<String, Date>>> {
|
||||
private static class Callback implements DialogCallback<Triple<String, String, Pair<String, Date>>> {
|
||||
private final EditableLeaderboardPanel leaderboardPanel;
|
||||
private final SailingServiceAsync sailingService;
|
||||
private final StringMessages stringMessages;
|
||||
@@ -58,12 +58,12 @@ public class ResultSelectionAndApplyDialog extends DataEntryDialog<Triple<String
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
public void cancel() {
|
||||
// don't do anything; dialog was canceled
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(Triple<String, String, Pair<String, Date>> result) {
|
||||
public void ok(Triple<String, String, Pair<String, Date>> result) {
|
||||
final String scoreCorrectionProviderName = result.getA();
|
||||
final String eventName = result.getB();
|
||||
final String boatClassName = result.getC().getA();
|
||||
|
||||
+3
-4
@@ -1,6 +1,5 @@
|
||||
package com.sap.sailing.gwt.ui.shared.components;
|
||||
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.FocusWidget;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.gwt.ui.client.DataEntryDialog;
|
||||
@@ -12,13 +11,13 @@ public class SettingsDialog<SettingsType> extends DataEntryDialog<SettingsType>
|
||||
public SettingsDialog(final Component<SettingsType> component, StringMessages stringConstants) {
|
||||
super(stringConstants.settingsForComponent(component.getLocalizedShortName()), null, stringConstants.ok(),
|
||||
stringConstants.cancel(), component.getSettingsDialogComponent().getValidator(),
|
||||
new AsyncCallback<SettingsType>() {
|
||||
new DialogCallback<SettingsType>() {
|
||||
@Override
|
||||
public void onFailure(Throwable t) {
|
||||
public void cancel() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(SettingsType newSettings) {
|
||||
public void ok(SettingsType newSettings) {
|
||||
component.updateSettings(newSettings);
|
||||
}
|
||||
});
|
||||
|
||||
Reference in new issue
Block a user