Add toggle button to Start/StopTracking Dialog

This commit is contained in:
Jan Broß committed 2016-03-21 15:09:15 +01:00
1 parent 6e21007474
commit fab845dd89
3 files changed
+76 -7

No files matched your search

@@ -69,6 +69,9 @@ interface AdminConsoleResources extends ClientBundle {
@Source("com/sap/sailing/gwt/ui/client/images/start_racelog_tracking.png")
ImageResource startRaceLogTracking();
@Source("com/sap/sailing/gwt/ui/client/images/stop_racelog_tracking.png")
ImageResource stopRaceLogTracking();
@Source("com/sap/sailing/gwt/ui/client/images/competitor_registrations.png")
ImageResource competitorRegistrations();
@@ -1,11 +1,15 @@
package com.sap.sailing.gwt.ui.adminconsole;
import java.util.Date;
import com.github.gwtbootstrap.datepicker.client.ui.DateBox;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.CaptionPanel;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.HasVerticalAlignment;
@@ -14,6 +18,7 @@ import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.PushButton;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.ToggleButton;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.ui.client.DataEntryDialogWithBootstrap;
@@ -46,6 +51,7 @@ public class SetTrackingTimesDialog extends DataEntryDialogWithBootstrap<RaceLog
private BetterDateTimeBox startTimeBox;
private BetterDateTimeBox endTimeBox;
private ToggleButton startStopButton;
private TextBox authorNameBox;
private com.sap.sse.gwt.client.controls.IntegerBox authorPriorityBox;
@@ -92,24 +98,51 @@ public class SetTrackingTimesDialog extends DataEntryDialogWithBootstrap<RaceLog
private void updateDateTimeLabelAndTimeBoxFromDate(final TimePoint timePoint, final Label label, final BetterDateTimeBox dateTimeBox) {
if (timePoint == null) {
label.setText(stringMessages.notAvailable());
dateTimeBox.setValue(null);
setupStartStopButton(/*startTimeSet*/ false);
} else {
label.setText(dateTimeFormat.format(timePoint == null ? null : timePoint.asDate()));
dateTimeBox.setValue(timePoint==null ? null : timePoint.asDate());
label.setText(dateTimeFormat.format(timePoint.asDate()));
dateTimeBox.setValue(timePoint.asDate());
setupStartStopButton(/*startTimeSet*/ true);
}
}
private void setupStartStopButton(boolean startTimeSet) {
startStopButton.setDown(!startTimeSet);
}
private Widget createInputPanel() {
Grid content = new Grid(4, 2);
Grid content = new Grid(4, 3);
Button startNow = new Button(stringMessages.now());
startNow.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
startTimeBox.setValue(new Date());
}
});
Button endNow = new Button(stringMessages.now());
endNow.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
endTimeBox.setValue(new Date());
}
});
startTimeBox = createDateTimeBox(null);
startTimeBox.setFormat("dd/mm/yyyy hh:ii:ss");
content.setWidget(0, 0, createLabel(stringMessages.startOfTracking()));
content.setWidget(0, 1, startTimeBox);
content.setWidget(0, 2, startNow);
endTimeBox = createDateTimeBox(null);
endTimeBox.setFormat("dd/mm/yyyy hh:ii:ss");
content.setWidget(1, 0, createLabel(stringMessages.endOfTracking()));
content.setWidget(1, 1, endTimeBox);
content.setWidget(1, 2, endNow);
authorNameBox = createTextBox("Shore");
content.setWidget(2, 0, createLabel(stringMessages.authorName()));
content.setWidget(2, 1, authorNameBox);
@@ -142,6 +175,35 @@ public class SetTrackingTimesDialog extends DataEntryDialogWithBootstrap<RaceLog
}
});
currentPanel.add(refreshButton);
Image startImage = new Image(resources.startRaceLogTracking());
Image stopImage = new Image(resources.stopRaceLogTracking());
startStopButton = new ToggleButton(startImage, stopImage, new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
RaceLogSetTrackingTimesDTO trackingTimesDTO;
if (startStopButton.isDown()){
trackingTimesDTO = generateRaceLogSetTrackingTimesDTOWith(new Date(), null);
} else {
trackingTimesDTO = generateRaceLogSetTrackingTimesDTOWith(startTimeBox.getValue(), new Date());
}
service.setTrackingTimes(trackingTimesDTO, new AsyncCallback<Void>(){
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError("Error while setting tracking times: " + caught.getMessage());
}
@Override
public void onSuccess(Void result) {
refreshTimes();
}
});
}
});
currentPanel.add(startStopButton);
current.add(currentPanel);
return current;
@@ -149,6 +211,10 @@ public class SetTrackingTimesDialog extends DataEntryDialogWithBootstrap<RaceLog
@Override
protected RaceLogSetTrackingTimesDTO getResult() {
return generateRaceLogSetTrackingTimesDTOWith(startTimeBox.getValue(), endTimeBox.getValue());
}
private RaceLogSetTrackingTimesDTO generateRaceLogSetTrackingTimesDTOWith(Date startTime, Date endTime) {
RaceLogSetTrackingTimesDTO dto = new RaceLogSetTrackingTimesDTO();
dto.leaderboardName = leaderboardName;
dto.raceColumnName = raceColumnName;
@@ -156,8 +222,8 @@ public class SetTrackingTimesDialog extends DataEntryDialogWithBootstrap<RaceLog
dto.authorName = authorNameBox.getValue();
dto.authorPriority = authorPriorityBox.getValue();
dto.logicalTimePoint = MillisecondsTimePoint.now();
dto.newStartOfTracking = startTimeBox.getValue() == null ? null : new MillisecondsTimePoint(startTimeBox.getValue());
dto.newEndOfTracking = endTimeBox.getValue() == null ? null : new MillisecondsTimePoint(endTimeBox.getValue());
dto.newStartOfTracking = startTime == null ? null : new MillisecondsTimePoint(startTime);
dto.newEndOfTracking = endTime == null ? null : new MillisecondsTimePoint(endTime);
dto.currentStartOfTracking = currentStart;
dto.currentEndOfTracking = currentEnd;
return dto;
Binary file not shown.

After

Width:  |  Height:  |  Size: 488 B