mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-15 16:51:07 +00:00
bug4210 Integration of new date and time inputs in all dialogs, removed
old, no longer need implementation
This commit is contained in:
1 parent
bda426e4b0
commit
ea33bcf595
12 files changed
+66
-284
No files matched your search
+6
-5
@@ -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");
|
||||
|
||||
+3
@@ -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");
|
||||
|
||||
+3
-3
@@ -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
|
||||
|
||||
+5
-5
@@ -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);
|
||||
|
||||
+4
-3
@@ -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);
|
||||
|
||||
+4
-3
@@ -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;
|
||||
|
||||
+4
-3
@@ -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
|
||||
|
||||
+9
-6
@@ -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);
|
||||
|
||||
+28
-17
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
-104
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
-76
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
-59
@@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user