bug4210 Integration of new date and time inputs in all dialogs, removed

old, no longer need implementation
This commit is contained in:
Benjamin Barth committed 2017-11-21 16:30:49 +01:00
1 parent bda426e4b0
commit ea33bcf595
12 files changed
+66 -284

No files matched your search

@@ -24,10 +24,11 @@ import com.sap.sailing.gwt.ui.leaderboard.RankingMetricTypeFormatter;
import com.sap.sailing.gwt.ui.leaderboard.ScoringSchemeTypeFormatter;
import com.sap.sailing.gwt.ui.shared.CourseAreaDTO;
import com.sap.sailing.gwt.ui.shared.EventDTO;
import com.sap.sailing.gwt.ui.shared.HTML5DateTimeBox;
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
import com.sap.sailing.gwt.ui.shared.SeriesDTO;
import com.sap.sse.common.Util;
import com.sap.sse.gwt.client.controls.datetime.DateAndTimeInput;
import com.sap.sse.gwt.client.controls.datetime.DateTimeInput.Accuracy;
import com.sap.sse.gwt.client.controls.listedit.ListEditorComposite;
/**
@@ -44,8 +45,8 @@ public abstract class AbstractRegattaWithSeriesAndFleetsDialog<T> extends DataEn
protected StringMessages stringMessages;
private final RegattaDTO regatta;
protected final HTML5DateTimeBox startDateBox;
protected final HTML5DateTimeBox endDateBox;
protected final DateAndTimeInput startDateBox;
protected final DateAndTimeInput endDateBox;
protected final ListBox scoringSchemeListBox;
protected final ListBox courseAreaListBox;
protected final ListBox sailingEventsListBox;
@@ -72,9 +73,9 @@ public abstract class AbstractRegattaWithSeriesAndFleetsDialog<T> extends DataEn
final NodeList<OptionElement> options = selectElement.getOptions();
options.getItem(options.getLength()-1).setTitle(RankingMetricTypeFormatter.getDescription(rankingMetricType, stringMessages));
}
startDateBox = createDateTimeBox(regatta.startDate, HTML5DateTimeBox.Format.YEAR_TO_MINUTE);
startDateBox = createDateTimeBox(regatta.startDate, Accuracy.MINUTES);
startDateBox.ensureDebugId("StartDateTimeBox");
endDateBox = createDateTimeBox(regatta.endDate, HTML5DateTimeBox.Format.YEAR_TO_MINUTE);
endDateBox = createDateTimeBox(regatta.endDate, Accuracy.MINUTES);
endDateBox.ensureDebugId("EndDateTimeBox");
scoringSchemeListBox = createListBox(false);
scoringSchemeListBox.ensureDebugId("ScoringSchemeListBox");
@@ -5,6 +5,7 @@ import java.util.Collections;
import java.util.Date;
import java.util.List;
import com.google.gwt.core.client.GWT;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.CourseAreaDTO;
@@ -34,8 +35,10 @@ public class EventCreateDialog extends EventDialog {
final Date now = new Date();
startDateBox = createDateTimeBox(now, Accuracy.MINUTES);
startDateBox.ensureDebugId("StartDateTimeBox");
startDateBox.addValueChangeHandler(e -> GWT.log("Start date: " + e.getValue()));
endDateBox = createDateTimeBox(now, Accuracy.MINUTES);
endDateBox.ensureDebugId("EndDateTimeBox");
endDateBox.addValueChangeHandler(e -> GWT.log("End date : " + e.getValue()));
isPublicCheckBox = createCheckbox("");
isPublicCheckBox.setValue(false);
isPublicCheckBox.ensureDebugId("IsPublicCheckBox");
@@ -7,16 +7,16 @@ import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.domain.common.Position;
import com.sap.sailing.domain.common.impl.DegreePosition;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.HTML5DateTimeBox;
import com.sap.sse.common.TimePoint;
import com.sap.sse.common.Util.Pair;
import com.sap.sse.common.impl.MillisecondsTimePoint;
import com.sap.sse.gwt.client.controls.datetime.DateInput;
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
public class PositionEntryDialog extends DataEntryDialog<Pair<Position, TimePoint>> {
private final DoubleBox lat;
private final DoubleBox lng;
private final HTML5DateTimeBox timePointBox;
private final DateInput timePointBox;
private final StringMessages stringMessages;
private static final double ERROR_VAL = Double.MIN_VALUE;
@@ -44,7 +44,7 @@ public class PositionEntryDialog extends DataEntryDialog<Pair<Position, TimePoin
this.stringMessages = stringMessages;
lat = createDoubleBox(10);
lng = createDoubleBox(10);
timePointBox = new HTML5DateTimeBox(HTML5DateTimeBox.Format.YEAR_TO_DAY);
timePointBox = new DateInput();
}
@Override
@@ -27,19 +27,19 @@ import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.DeviceIdentifierDTO;
import com.sap.sailing.gwt.ui.shared.DeviceMappingDTO;
import com.sap.sailing.gwt.ui.shared.EventDTO;
import com.sap.sailing.gwt.ui.shared.HTML5DateTimeBox;
import com.sap.sailing.gwt.ui.shared.MarkDTO;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.controls.GenericListBox;
import com.sap.sse.gwt.client.controls.GenericListBox.ValueBuilder;
import com.sap.sse.gwt.client.controls.datetime.DateInput;
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
public class RegattaLogAddDeviceMappingDialog extends DataEntryDialogWithDateTimeBox<DeviceMappingDTO> {
private final String leaderboardName;
private final GenericListBox<EventDTO> events;
protected final HTML5DateTimeBox from;
protected final HTML5DateTimeBox to;
protected final DateInput from;
protected final DateInput to;
protected final ListBox deviceType;
protected final TextBox deviceId;
protected final DeviceMappingQRCodeWidget qrWidget;
@@ -83,9 +83,9 @@ public class RegattaLogAddDeviceMappingDialog extends DataEntryDialogWithDateTim
this.stringMessages = stringMessages;
this.sailingService = sailingService;
from = createDateTimeBox(new Date(), HTML5DateTimeBox.Format.YEAR_TO_DAY);
from = createDateBox(new Date());
from.setValue(null);
to = createDateTimeBox(new Date(), HTML5DateTimeBox.Format.YEAR_TO_DAY);
to = createDateBox(new Date());
to.setValue(null);
deviceType = createListBox(false);
@@ -23,9 +23,10 @@ import com.sap.sailing.domain.common.racelog.RacingProcedureType;
import com.sap.sailing.gwt.ui.client.DataEntryDialogWithDateTimeBox;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.HTML5DateTimeBox;
import com.sap.sailing.gwt.ui.shared.RaceLogSetStartTimeAndProcedureDTO;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.controls.datetime.DateAndTimeInput;
import com.sap.sse.gwt.client.controls.datetime.DateTimeInput.Accuracy;
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
public class SetStartTimeDialog extends DataEntryDialogWithDateTimeBox<RaceLogSetStartTimeAndProcedureDTO> {
@@ -42,7 +43,7 @@ public class SetStartTimeDialog extends DataEntryDialogWithDateTimeBox<RaceLogSe
private int currentPassId = -1;
private Label currentStartTimeLabel;
private Label currentPassIdBox;
private HTML5DateTimeBox timeBox;
private DateAndTimeInput timeBox;
private TextBox authorNameBox;
private com.sap.sse.gwt.client.controls.IntegerBox authorPriorityBox;
private ListBox racingProcedureSelection;
@@ -100,7 +101,7 @@ public class SetStartTimeDialog extends DataEntryDialogWithDateTimeBox<RaceLogSe
private Widget createInputPanel() {
Grid content = new Grid(5, 2);
timeBox = createDateTimeBox(new Date(), HTML5DateTimeBox.Format.YEAR_TO_SECOND);
timeBox = createDateTimeBox(new Date(), Accuracy.SECONDS);
timeBox.ensureDebugId("StartTimeTimeBox");
content.setWidget(0, 0, createLabel(stringMessages.startTime()));
content.setWidget(0, 1, timeBox);
@@ -7,14 +7,15 @@ import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.ui.client.DataEntryDialogWithDateTimeBox;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.HTML5DateTimeBox;
import com.sap.sse.gwt.client.controls.datetime.DateAndTimeInput;
import com.sap.sse.gwt.client.controls.datetime.DateTimeInput.Accuracy;
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
public class SetStartTimeReceivedDialog extends DataEntryDialogWithDateTimeBox<Date> {
private final StringMessages stringMessages;
private HTML5DateTimeBox timeBox;
private DateAndTimeInput timeBox;
public SetStartTimeReceivedDialog(StringMessages stringMessages, DataEntryDialog.DialogCallback<Date> callback) {
super(stringMessages.setStartTimeReceived(), stringMessages.setStartTimeReceivedDescription(), stringMessages.ok(), stringMessages.cancel(), new ReceivedStartTimeDialog(stringMessages), callback);
@@ -27,7 +28,7 @@ public class SetStartTimeReceivedDialog extends DataEntryDialogWithDateTimeBox<D
Label timeBoxLabel = new Label(stringMessages.startTime() + ":");
content.setWidget(0, 0, timeBoxLabel);
timeBox = createDateTimeBox(new Date(),HTML5DateTimeBox.Format.YEAR_TO_SECOND);
timeBox = createDateTimeBox(new Date(), Accuracy.SECONDS);
content.setWidget(0, 1, timeBox);
return content;
@@ -7,11 +7,12 @@ import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.ui.client.DataEntryDialogWithDateTimeBox;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.HTML5DateTimeBox;
import com.sap.sse.gwt.client.controls.datetime.DateAndTimeInput;
import com.sap.sse.gwt.client.controls.datetime.DateTimeInput.Accuracy;
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
public class SetTimePointDialog extends DataEntryDialogWithDateTimeBox<Date> {
private final HTML5DateTimeBox time;
private final DateAndTimeInput time;
private final StringMessages stringMessages;
public SetTimePointDialog(final StringMessages stringMessages, String title, DialogCallback<Date> callback) {
@@ -25,7 +26,7 @@ public class SetTimePointDialog extends DataEntryDialogWithDateTimeBox<Date> {
this.stringMessages = stringMessages;
time = createDateTimeBox(new Date(), HTML5DateTimeBox.Format.YEAR_TO_SECOND);
time = createDateTimeBox(new Date(), Accuracy.SECONDS);
}
@Override
@@ -12,6 +12,7 @@ import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.CaptionPanel;
import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.HasValue;
import com.google.gwt.user.client.ui.HasVerticalAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
@@ -25,11 +26,12 @@ import com.sap.sailing.domain.common.abstractlog.TimePointSpecificationFoundInLo
import com.sap.sailing.gwt.ui.client.DataEntryDialogWithDateTimeBox;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.HTML5DateTimeBox;
import com.sap.sse.common.Util;
import com.sap.sse.common.Util.Pair;
import com.sap.sse.common.impl.MillisecondsTimePoint;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.controls.datetime.DateAndTimeInput;
import com.sap.sse.gwt.client.controls.datetime.DateTimeInput.Accuracy;
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
public class SetTrackingTimesDialog extends DataEntryDialogWithDateTimeBox<RaceLogSetTrackingTimesDTO> {
@@ -49,7 +51,7 @@ public class SetTrackingTimesDialog extends DataEntryDialogWithDateTimeBox<RaceL
private Label currentEndLabel;
private TimePointSpecificationFoundInLog currentEnd;
private HTML5DateTimeBox startTimeBox;
private DateAndTimeInput startTimeBox;
/**
* Decides whether the start time value shall be set; if checked, even an empty value (translated
* to {@code null} will be stored as an event with the author's priority in the log; if unchecked,
@@ -58,7 +60,7 @@ public class SetTrackingTimesDialog extends DataEntryDialogWithDateTimeBox<RaceL
* make the revoke succeed.
*/
private CheckBox startTimeSetCheckbox;
private HTML5DateTimeBox endTimeBox;
private DateAndTimeInput endTimeBox;
/**
* Decides whether the end time value shall be set; if checked, even an empty value (translated
* to {@code null} will be stored as an event with the author's priority in the log; if unchecked,
@@ -110,7 +112,8 @@ public class SetTrackingTimesDialog extends DataEntryDialogWithDateTimeBox<RaceL
});
}
private void updateDateTimeLabelAndTimeBoxFromDate(final TimePointSpecificationFoundInLog timePoint, final Label label, final HTML5DateTimeBox dateTimeBox, CheckBox setCheckBox) {
private void updateDateTimeLabelAndTimeBoxFromDate(final TimePointSpecificationFoundInLog timePoint,
final Label label, final HasValue<Date> dateTimeBox, CheckBox setCheckBox) {
if (timePoint == null) {
label.setText(stringMessages.notAvailable());
dateTimeBox.setValue(null);
@@ -142,7 +145,7 @@ public class SetTrackingTimesDialog extends DataEntryDialogWithDateTimeBox<RaceL
}
});
startTimeBox = createDateTimeBox(null, HTML5DateTimeBox.Format.YEAR_TO_SECOND);
startTimeBox = createDateTimeBox(null, Accuracy.SECONDS);
startTimeBox.addValueChangeHandler(e->startTimeSetCheckbox.setValue(true)); // when the start time is manipulated, assume the user wants to really set it
content.setWidget(0, 0, createLabel(stringMessages.startOfTracking()));
content.setWidget(0, 1, startTimeBox);
@@ -150,7 +153,7 @@ public class SetTrackingTimesDialog extends DataEntryDialogWithDateTimeBox<RaceL
content.setWidget(0, 2, startTimeSetCheckbox);
content.setWidget(0, 3, startNow);
endTimeBox = createDateTimeBox(null, HTML5DateTimeBox.Format.YEAR_TO_SECOND);
endTimeBox = createDateTimeBox(null, Accuracy.SECONDS);
endTimeBox.addValueChangeHandler(e->endTimeSetCheckbox.setValue(true)); // when the end time is manipulated, assume the user wants to really set it
content.setWidget(1, 0, createLabel(stringMessages.endOfTracking()));
content.setWidget(1, 1, endTimeBox);
@@ -2,12 +2,10 @@ package com.sap.sailing.gwt.ui.client;
import java.util.Date;
import com.sap.sailing.gwt.ui.shared.HTML5DateTimeBox;
import com.sap.sailing.gwt.ui.shared.HTML5DateTimeBox.Format;
import com.sap.sse.gwt.client.controls.datetime.DateAndTimeInput;
import com.sap.sse.gwt.client.controls.datetime.DateInput;
import com.sap.sse.gwt.client.controls.datetime.DateTimeInput.Accuracy;
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
import com.sap.sse.gwt.client.dialog.DialogUtils;
public abstract class DataEntryDialogWithDateTimeBox<T> extends DataEntryDialog<T> {
@@ -22,23 +20,17 @@ public abstract class DataEntryDialogWithDateTimeBox<T> extends DataEntryDialog<
}
/**
* Creates a new {@link HTML5DateTimeBox} instance, where the requested {@link Format format} will be honored by the
* underlying implementation, if the native components can support it.
* Creates a new {@link DateAndTimeInput} instance using the provided {@link Accuracy accuracy} and initial
* {@link Date date value}.
*
* @param initialValue
* the initial {@link Date value} to set to the created {@link HTML5DateTimeBox}
* @param format
* the {@link Format format} to set to the created {@link HTML5DateTimeBox}
* the {@link Date date value} to show by default
* @param accuracy
* the {@link Accuracy accuracy} of the input
* @return the newly created {@link DateAndTimeInput} instance
*
* @see DateAndTimeInput#DateAndTimeInput(Accuracy)
*/
protected HTML5DateTimeBox createDateTimeBox(Date initialValue, Format format) {
final HTML5DateTimeBox result = new HTML5DateTimeBox(format);
result.setValue(initialValue);
result.addValueChangeHandler(event -> validateAndUpdate());
DialogUtils.linkEnterToButton(getOkButton(), result);
DialogUtils.linkEscapeToButton(getCancelButton(), result);
return result;
}
protected DateAndTimeInput createDateTimeBox(Date initialValue, Accuracy accuracy) {
final DateAndTimeInput result = new DateAndTimeInput(accuracy);
result.setValue(initialValue);
@@ -49,4 +41,23 @@ public abstract class DataEntryDialogWithDateTimeBox<T> extends DataEntryDialog<
return result;
}
/**
* Creates a new {@link DateInput} instance using the provided initial {@link Date date value}.
*
* @param initialValue
* the {@link Date date value} to show by default
* @return the newly created {@link DateAndTimeInput} instance
*
* @see DateAndTimeInput#DateAndTimeInput(Accuracy)
*/
protected DateInput createDateBox(Date initialValue) {
final DateInput result = new DateInput();
result.setValue(initialValue);
result.addValueChangeHandler(event -> validateAndUpdate());
// TODO: Enable DateAndTimeInput for enter and escape linking
// DialogUtils.linkEnterToButton(getOkButton(), result);
// DialogUtils.linkEscapeToButton(getCancelButton(), result);
return result;
}
}
@@ -1,104 +0,0 @@
package com.sap.sailing.gwt.ui.shared;
import java.util.Date;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.InputElement;
import com.google.gwt.dom.client.Style.Display;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.UIObject;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.user.datepicker.client.DateBox;
import com.google.gwt.user.datepicker.client.DateBox.DefaultFormat;
import com.sap.sailing.gwt.ui.shared.HTML5DateTimeBox.DateTimeBoxStrategy;
import com.sap.sailing.gwt.ui.shared.HTML5DateTimeBox.Format;
public class DateTimeBoxFallbackStrategie extends Composite implements DateTimeBoxStrategy {
private static DateTimeBoxFallbackUiBinder uiBinder = GWT.create(DateTimeBoxFallbackUiBinder.class);
interface DateTimeBoxFallbackUiBinder extends UiBinder<Widget, DateTimeBoxFallbackStrategie> {
}
private final DateTimeFormat dateFormat;
private final DateTimeFormat timeFormat;
private final DateTimeFormat combiFormat;
@UiField
InputElement timebox;
@UiField
DateBox datebox;
public DateTimeBoxFallbackStrategie(Format format) {
initWidget(uiBinder.createAndBindUi(this));
// parser for low level, RFC compatible format
dateFormat = DateTimeFormat.getFormat("yyyy-MM-dd");
datebox.setFormat(new DefaultFormat(dateFormat));
datebox.getElement().setAttribute("placeholder", dateFormat.getPattern());
datebox.ensureDebugId("datebox");
UIObject.ensureDebugId(timebox, "timebox");
if (format != Format.YEAR_TO_DAY) {
timeFormat = DateTimeFormat.getFormat(format == Format.YEAR_TO_MINUTE ? "HH:mm" : "HH:mm:ss");
timebox.setAttribute("placeholder", timeFormat.getPattern());
if (format == Format.YEAR_TO_SECOND) {
timebox.setAttribute("step", "1");
} else {
timebox.setAttribute("step", "60");
}
// used to parse time and date in one pass, to workaround parsing time only formats containing the current
// day
combiFormat = DateTimeFormat
.getFormat("yyyy-MM-dd " + (format == Format.YEAR_TO_MINUTE ? "HH:mm" : "HH:mm:ss"));
} else {
timebox.getStyle().setDisplay(Display.NONE);
timeFormat = null;
combiFormat = null;
}
}
public Widget getWidget() {
return this;
}
public Date getValue() {
Date result = null;
try {
String rawDateValue = dateFormat.format(datebox.getValue());
String rawTimeValue = timebox.getValue();
if (timeFormat != null) {
// it is not possible to parse the timeFormat, as it will add the current day, so we will parse a
// combined format with the correct day and time
result = combiFormat.parse(rawDateValue + " " + rawTimeValue);
} else {
result = dateFormat.parse(rawDateValue);
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
public void setValue(Date newValue) {
if(newValue != null){
// remove the time part from the datepart, to reduce issus with browser compability
Date dateFormated = dateFormat.parse(dateFormat.format(newValue));
datebox.setValue(dateFormated);
if (timeFormat != null) {
String timeFormated = timeFormat.format(newValue);
timebox.setValue(timeFormated);
}
}else{
datebox.setValue(null);
if(timeFormat != null){
timebox.setValue(null);
}
}
}
}
@@ -1,76 +0,0 @@
package com.sap.sailing.gwt.ui.shared;
import java.util.Date;
import com.google.gwt.core.shared.GWT;
import com.google.gwt.dom.client.InputElement;
import com.google.gwt.dom.client.Style.BorderStyle;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.ui.shared.HTML5DateTimeBox.DateTimeBoxStrategy;
import com.sap.sailing.gwt.ui.shared.HTML5DateTimeBox.Format;
public class DateTimeLocalStrategy implements DateTimeBoxStrategy {
private FlowPanel div;
private InputElement input;
private DateTimeFormat combiFormat;
public DateTimeLocalStrategy(Format format) {
// if (format == Format.YEAR_TO_DAY) {
// combiFormat = DateTimeFormat.getFormat("yyyy-MM-dd");
// } else if (format == Format.YEAR_TO_MINUTE) {
// combiFormat = DateTimeFormat.getFormat("yyyy-MM-dd'T'HH:mm");
// } else {
combiFormat = DateTimeFormat.getFormat("yyyy-MM-dd'T'HH:mm:ss");
// }
div = new FlowPanel();
input = DOM.createElement("input").cast();
input.setAttribute("type", "datetime-local");
// use a style that looks similar to the DateBox
input.getStyle().setPadding(3, Unit.PX);
input.getStyle().setPaddingBottom(2, Unit.PX);
input.getStyle().setBorderColor("#ccc");
input.getStyle().setBorderWidth(1, Unit.PX);
input.getStyle().setBorderStyle(BorderStyle.SOLID);
input.getStyle().setFontSize(100, Unit.PCT);
if (format == Format.YEAR_TO_SECOND) {
input.setAttribute("step", "1");
} else {
input.setAttribute("step", "60");
}
// used to parse time and date in one pass, to workaround parsing time only formats containing the current
// day
div.getElement().appendChild(input);
}
@Override
public Widget getWidget() {
return div;
}
@Override
public void setValue(Date newValue) {
String stringNewValue = combiFormat.format(newValue);
GWT.log("Raw value " + stringNewValue);
input.setValue(stringNewValue);
}
@Override
public Date getValue() {
Date result = null;
try {
String stringValue = input.getValue();
GWT.log("DateTime is " + stringValue);
result = combiFormat.parse(stringValue);
} catch (IllegalArgumentException e) {
e.printStackTrace();
}
return result;
}
}
@@ -1,59 +0,0 @@
package com.sap.sailing.gwt.ui.shared;
import java.util.Date;
import com.google.gwt.event.dom.client.HasAllKeyHandlers;
import com.google.gwt.event.logical.shared.HasValueChangeHandlers;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.ui.FocusPanel;
import com.google.gwt.user.client.ui.Widget;
public class HTML5DateTimeBox extends FocusPanel implements HasAllKeyHandlers, HasValueChangeHandlers<Date> {
public static enum ViewMode {
HOUR, DAY, MONTH, YEAR, DECADE
};
public static enum Format {
YEAR_TO_MINUTE, YEAR_TO_DAY, YEAR_TO_SECOND
};
interface DateTimeBoxStrategy {
Widget getWidget();
void setValue(Date newValue);
Date getValue();
}
private final DateTimeBoxStrategy delegate;
public HTML5DateTimeBox(Format format) {
delegate = new DateTimeBoxFallbackStrategie(format);
setWidget(delegate.getWidget());
sinkEvents(Event.ONCHANGE | Event.ONBLUR | Event.ONKEYUP);
}
@Override
public void onBrowserEvent(Event event) {
ValueChangeEvent.fire(HTML5DateTimeBox.this, getValue());
}
public void setValue(Date newValue) {
delegate.setValue(newValue);
}
public Date getValue() {
return delegate.getValue();
}
@Override
public HandlerRegistration addValueChangeHandler(ValueChangeHandler<Date> handler) {
return addHandler(handler, ValueChangeEvent.getType());
}
}