bug4210 Extracted common input wrapper logic to AbstractInput class

This commit is contained in:
Benjamin Barth committed 2017-11-20 15:01:54 +01:00
1 parent e074a216d9
commit cb17545150
4 files changed
+52 -88

No files matched your search

@@ -0,0 +1,35 @@
package com.sap.sailing.gwt.common.client.datetime;
import java.util.Date;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HasValue;
import com.google.gwt.user.client.ui.IsWidget;
abstract class AbstractInput extends Composite implements DateTimeInput {
private HasValue<Date> delegate;
protected <T extends HasValue<Date> & IsWidget> AbstractInput(T delegate) {
this.delegate = delegate;
initWidget(delegate.asWidget());
}
@Override
public final Date getValue() {
return delegate.getValue();
}
@Override
public final void setValue(Date value) {
this.delegate.setValue(value);
}
@Override
public final HandlerRegistration addValueChangeHandler(ValueChangeHandler<Date> handler) {
return delegate.addValueChangeHandler(handler);
}
}
@@ -8,35 +8,16 @@ 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.i18n.client.DateTimeFormat;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlowPanel;
public class DateAndTimeInput extends Composite implements DateTimeInput {
private final DateTimeInput delegate;
public class DateAndTimeInput extends AbstractInput {
public DateAndTimeInput(Accuracy accuracy) {
this.delegate = DateTimeInputType.DATETIME_LOCAL.isSupported() ? NativeDateTimeInput.datetimeLocale(accuracy)
: new DateAndTimePanel(accuracy);
initWidget(delegate.asWidget());
super(DateTimeInputType.DATETIME_LOCAL.isSupported() ? NativeDateTimeInput.datetimeLocale(accuracy)
: new DateAndTimePanel(accuracy));
}
@Override
public Date getValue() {
return delegate.getValue();
}
@Override
public void setValue(Date value) {
this.delegate.setValue(value);
}
@Override
public HandlerRegistration addValueChangeHandler(ValueChangeHandler<Date> handler) {
return delegate.addValueChangeHandler(handler);
}
private class DateAndTimePanel extends FlowPanel implements DateTimeInput {
private static class DateAndTimePanel extends FlowPanel implements DateTimeInput {
private final DateInput dateInput;
private final TimeInput timeInput;
@@ -1,46 +1,22 @@
package com.sap.sailing.gwt.common.client.datetime;
import java.util.Date;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HasValue;
import com.google.gwt.user.datepicker.client.DateBox;
import com.google.gwt.user.datepicker.client.DateBox.DefaultFormat;
import com.google.gwt.user.datepicker.client.DatePicker;
public class DateInput extends Composite implements DateTimeInput {
private final HasValue<Date> delegate;
public class DateInput extends AbstractInput {
public DateInput() {
if (DateTimeInputType.TIME.isSupported()) {
final DateTimeInput input = NativeDateTimeInput.date();
initWidget(input.asWidget());
this.delegate = input;
} else {
final DateBox input = new DateBox();
input.setFormat(new DefaultFormat(DateTimeFormat.getFormat(PredefinedFormat.DATE_MEDIUM)));
initWidget(input);
this.delegate = input;
super(DateTimeInputType.TIME.isSupported() ? NativeDateTimeInput.date() : new CustomDateBox());
}
private static class CustomDateBox extends DateBox {
private CustomDateBox() {
super(new DatePicker(), null, new DefaultFormat(DateTimeFormat.getFormat(PredefinedFormat.DATE_MEDIUM)));
}
}
@Override
public Date getValue() {
return delegate.getValue();
}
@Override
public void setValue(Date value) {
this.delegate.setValue(value);
}
@Override
public HandlerRegistration addValueChangeHandler(ValueChangeHandler<Date> handler) {
return delegate.addValueChangeHandler(handler);
}
}
@@ -5,47 +5,19 @@ import java.util.Date;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.InputElement;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.text.shared.AbstractRenderer;
import com.google.gwt.text.shared.Parser;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HasValue;
import com.google.gwt.user.client.ui.ValueBox;
public class TimeInput extends Composite implements DateTimeInput {
private final HasValue<Date> delegate;
public class TimeInput extends AbstractInput {
public TimeInput(Accuracy accuracy) {
if (DateTimeInputType.TIME.isSupported()) {
final DateTimeInput input = NativeDateTimeInput.time(accuracy);
initWidget(input.asWidget());
this.delegate = input;
} else {
final ValueBox<Date> input = new TimeBox(new TimeConverter(accuracy));
initWidget(input);
this.delegate = input;
}
super(DateTimeInputType.TIME.isSupported() ? NativeDateTimeInput.time(accuracy)
: new TimeBox(new TimeConverter(accuracy)));
}
@Override
public Date getValue() {
return delegate.getValue();
}
@Override
public void setValue(Date value) {
this.delegate.setValue(value);
}
@Override
public HandlerRegistration addValueChangeHandler(ValueChangeHandler<Date> handler) {
return delegate.addValueChangeHandler(handler);
}
private class TimeBox extends ValueBox<Date> {
private static class TimeBox extends ValueBox<Date> {
private TimeBox(TimeConverter converter) {
super(Document.get().createElement(InputElement.TAG), converter, converter);