Fixed adding wind fixed manually. Timepoint is not optional anymore - must be between startOftracking and endOfTracking (if present)

This commit is contained in:
fmittag committed 2013-03-07 15:25:01 +01:00
1 parent ed76399644
commit b79d09ea8f
3 files changed
+44 -26

No files matched your search

@@ -1,5 +1,7 @@
package com.sap.sailing.gwt.ui.adminconsole;
import java.util.Date;
import com.google.gwt.user.client.ui.DoubleBox;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.Label;
@@ -13,7 +15,7 @@ import com.sap.sailing.gwt.ui.shared.PositionDTO;
import com.sap.sailing.gwt.ui.shared.RaceDTO;
import com.sap.sailing.gwt.ui.shared.WindDTO;
public class WindSettingDialog extends DataEntryDialog<WindDTO> {
public class AddWindFixDialog extends DataEntryDialog<WindDTO> {
private final StringMessages stringMessages;
private final DoubleBox speedInKnotsBox;
@@ -23,11 +25,15 @@ public class WindSettingDialog extends DataEntryDialog<WindDTO> {
private final DateBox timeBox;
protected static class WindDataValidator implements Validator<WindDTO> {
protected final StringMessages stringMessages;
private final StringMessages stringMessages;
private final Date minTimepoint;
private final Date maxTimepoint;
public WindDataValidator(StringMessages stringMessages){
public WindDataValidator(RaceDTO race, StringMessages stringMessages){
super();
this.stringMessages = stringMessages;
this.minTimepoint = race.trackedRace.startOfTracking != null ? race.trackedRace.startOfTracking : null;
this.maxTimepoint = race.trackedRace.endOfTracking != null ? race.trackedRace.endOfTracking : null;
}
@Override
@@ -48,18 +54,29 @@ public class WindSettingDialog extends DataEntryDialog<WindDTO> {
} else if(windDTO.position.lngDeg < -180.0 || windDTO.position.lngDeg > 180.0){
errorMessage = stringMessages.valueMustBeBetweenMinMax(stringMessages.longitude(), "-180", "180");
}
}
if(errorMessage == null) {
if(windDTO.measureTimepoint == null) {
errorMessage = stringMessages.pleaseEnterAValue();
} else {
if(minTimepoint != null && windDTO.measureTimepoint < minTimepoint.getTime()) {
errorMessage = "Timepoint must be before start of tracking";
} else if(maxTimepoint != null && windDTO.measureTimepoint > maxTimepoint.getTime()) {
errorMessage = "Timepoint must be before end of tracking";
}
}
}
return errorMessage;
}
}
public WindSettingDialog(RaceDTO race, CoursePositionsDTO courseDTO, StringMessages stringMessages, DialogCallback<WindDTO> callback) {
super(stringMessages.actionAddWindData(), null, stringMessages.ok(), stringMessages.cancel(), new WindDataValidator(stringMessages), callback);
public AddWindFixDialog(RaceDTO race, CoursePositionsDTO courseDTO, StringMessages stringMessages, DialogCallback<WindDTO> callback) {
super(stringMessages.actionAddWindData(), null, stringMessages.ok(), stringMessages.cancel(), new WindDataValidator(race, stringMessages), callback);
this.stringMessages = stringMessages;
speedInKnotsBox = createDoubleBox(5);
fromInDegBox = createDoubleBox(5);
if(courseDTO != null && courseDTO.waypointPositions.get(0) != null) {
if(courseDTO != null && courseDTO.waypointPositions != null && courseDTO.waypointPositions.get(0) != null) {
PositionDTO positionDTO = courseDTO.waypointPositions.get(0);
latDegBox = createDoubleBox(positionDTO.latDeg, 10);
lngDegBox = createDoubleBox(positionDTO.lngDeg, 10);
@@ -67,8 +84,8 @@ public class WindSettingDialog extends DataEntryDialog<WindDTO> {
latDegBox = createDoubleBox(10);
lngDegBox = createDoubleBox(10);
}
if(race.startOfRace != null) {
timeBox = createDateBox(race.startOfRace.getTime(), 20);
if(race.trackedRace != null && race.trackedRace.startOfTracking != null) {
timeBox = createDateBox(race.trackedRace.startOfTracking.getTime(), 20);
} else {
timeBox = createDateBox(20);
}
@@ -84,12 +101,12 @@ public class WindSettingDialog extends DataEntryDialog<WindDTO> {
grid.setWidget(0, 1, speedInKnotsBox);
grid.setWidget(1, 0, new Label(stringMessages.fromDeg() + ":"));
grid.setWidget(1, 1, fromInDegBox);
grid.setWidget(2, 0, new Label(stringMessages.latitude() + " (" + stringMessages.optional() + "):"));
grid.setWidget(2, 1, latDegBox);
grid.setWidget(3, 0, new Label(stringMessages.longitude() + " (" + stringMessages.optional() + "):"));
grid.setWidget(3, 1, lngDegBox);
grid.setWidget(4, 0, new Label(stringMessages.time() + " (" + stringMessages.optional() + "):"));
grid.setWidget(4, 1, timeBox);
grid.setWidget(2, 0, new Label(stringMessages.time() + ":"));
grid.setWidget(2, 1, timeBox);
grid.setWidget(3, 0, new Label(stringMessages.latitude() + " (" + stringMessages.optional() + "):"));
grid.setWidget(3, 1, latDegBox);
grid.setWidget(4, 0, new Label(stringMessages.longitude() + " (" + stringMessages.optional() + "):"));
grid.setWidget(4, 1, lngDegBox);
return mainPanel;
}
@@ -100,7 +117,7 @@ public class WindSettingDialog extends DataEntryDialog<WindDTO> {
result.trueWindSpeedInKnots = speedInKnotsBox.getValue();
result.trueWindFromDeg = fromInDegBox.getValue();
result.measureTimepoint = timeBox.getValue() != null ? timeBox.getValue().getTime() : System.currentTimeMillis();
result.measureTimepoint = timeBox.getValue() != null ? timeBox.getValue().getTime() : null;
if (latDegBox.getValue() != null && lngDegBox.getValue() != null) {
result.position = new PositionDTO(latDegBox.getValue(), lngDegBox.getValue());
}
@@ -109,7 +109,7 @@ public class WindPanel extends FormPanel implements RegattaDisplayer, WindShower
RegattaAndRaceIdentifier selectedRace = getSelectedRace();
if(selectedRace != null) {
final RaceDTO race = trackedRacesListComposite.getRaceByIdentifier(selectedRace);
sailingService.getCoursePositions(selectedRace, race.startOfRace, new AsyncCallback<CoursePositionsDTO>() {
sailingService.getCoursePositions(selectedRace, race.trackedRace.startOfTracking, new AsyncCallback<CoursePositionsDTO>() {
@Override
public void onFailure(Throwable caught) {
showWindSettingDialog(race, null);
@@ -215,7 +215,7 @@ public class WindPanel extends FormPanel implements RegattaDisplayer, WindShower
}
private void showWindSettingDialog(RaceDTO race, CoursePositionsDTO course) {
WindSettingDialog windSettingDialog = new WindSettingDialog(race, course, stringMessages,
AddWindFixDialog windSettingDialog = new AddWindFixDialog(race, course, stringMessages,
new DialogCallback<WindDTO>() {
@Override
public void cancel() {
@@ -238,19 +238,20 @@ public abstract class DataEntryDialog<T> {
}
private DateBox createDateBoxInternal(Date initialDate, int visibleLength) {
DateBox textBox = new DateBox();
textBox.getTextBox().setVisibleLength(visibleLength);
textBox.setValue(initialDate);
AbstractEntryPoint.addFocusUponKeyUpToggler(textBox.getTextBox());
textBox.getTextBox().addChangeHandler(new ChangeHandler() {
DateBox dateBox = new DateBox();
dateBox.getTextBox().setVisibleLength(visibleLength);
dateBox.setFireNullValues(true);
dateBox.setValue(initialDate);
AbstractEntryPoint.addFocusUponKeyUpToggler(dateBox.getTextBox());
dateBox.addValueChangeHandler(new ValueChangeHandler<Date>() {
@Override
public void onChange(ChangeEvent event) {
public void onValueChange(ValueChangeEvent<Date> event) {
validate();
}
});
AbstractEntryPoint.linkEnterToButton(getOkButton(), textBox.getTextBox());
AbstractEntryPoint.linkEscapeToButton(getCancelButton(), textBox.getTextBox());
return textBox;
AbstractEntryPoint.linkEnterToButton(getOkButton(), dateBox.getTextBox());
AbstractEntryPoint.linkEscapeToButton(getCancelButton(), dateBox.getTextBox());
return dateBox;
}
/**