package org.ovirt.engine.ui.common.widget.editor;
import java.util.Date;
import org.gwtbootstrap3.extras.datetimepicker.client.ui.DateTimePicker;
import org.gwtbootstrap3.extras.datetimepicker.client.ui.base.constants.DateTimePickerView;
import com.google.gwt.event.dom.client.KeyDownEvent;
import com.google.gwt.event.dom.client.KeyDownHandler;
import com.google.gwt.event.dom.client.KeyPressEvent;
import com.google.gwt.event.dom.client.KeyPressHandler;
import com.google.gwt.event.dom.client.KeyUpEvent;
import com.google.gwt.event.dom.client.KeyUpHandler;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.TakesValue;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Widget;
public class GwtBootstrapDateTimePicker implements IsWidget, TakesValue<Date> {
public static final String DEFAULT_DATE_TIME_FORMAT = "mm/dd/yyyy hh:ii";//$NON-NLS-1$
public static final String DEFAULT_TIME_FORMAT = "hh:ii P";//$NON-NLS-1$
public static final String DEFAULT_DATE_FORMAT = "mm/dd/yyyy";//$NON-NLS-1$
private final DateTimePicker dateTimePicker = new DateTimePicker();
private String dateTimeFormat;
public GwtBootstrapDateTimePicker() {
this(DEFAULT_DATE_TIME_FORMAT, true);
}
public GwtBootstrapDateTimePicker(String format, boolean autoClose) {
dateTimePicker.setFormat(format);
dateTimePicker.setAutoClose(autoClose);
dateTimePicker.setShowTodayButton(true);
this.dateTimeFormat = format;
this.dateTimePicker.addChangeDateHandler(evt -> ValueChangeEvent.fire(dateTimePicker, dateTimePicker.getValue()));
}
public String getDateTimeFormat() {
return dateTimeFormat;
}
public void setDateTimeFormat(String dateTimeFormat) {
this.dateTimeFormat = dateTimeFormat;
dateTimePicker.setFormat(dateTimeFormat);
dateTimePicker.reload();
}
public HandlerRegistration addValueChangeHandler(ValueChangeHandler<Date> handler) {
return dateTimePicker.addValueChangeHandler(handler);
}
public void setValue(Date value, boolean fireEvents) {
dateTimePicker.setValue(value, fireEvents);
}
public void showDateOnly() {
show(DateTimePickerView.MONTH, DateTimePickerView.MONTH, DateTimePickerView.MONTH);
}
public void showTimeOnly() {
show(DateTimePickerView.DAY, DateTimePickerView.HOUR, DateTimePickerView.DAY);
}
public void showDateAndTime() {
show(DateTimePickerView.MONTH, DateTimePickerView.HOUR, DateTimePickerView.MONTH);
}
public void show(DateTimePickerView startView, DateTimePickerView minView, DateTimePickerView maxView) {
dateTimePicker.setStartView(maxView);
dateTimePicker.setMinView(minView);
dateTimePicker.setMaxView(maxView);
dateTimePicker.reload();
}
@Override
public void setValue(Date value) {
dateTimePicker.setValue(value);
}
public Widget asWidget() {
return dateTimePicker.asWidget();
}
public HandlerRegistration addKeyUpHandler(KeyUpHandler handler) {
return dateTimePicker.addDomHandler(handler, KeyUpEvent.getType());
}
public HandlerRegistration addKeyDownHandler(KeyDownHandler handler) {
return dateTimePicker.addDomHandler(handler, KeyDownEvent.getType());
}
public HandlerRegistration addKeyPressHandler(KeyPressHandler handler) {
return dateTimePicker.addDomHandler(handler, KeyPressEvent.getType());
}
public void fireEvent(GwtEvent<?> event) {
dateTimePicker.fireEvent(event);
}
@Override
public Date getValue() {
return dateTimePicker.getValue();
}
public void setFocus(boolean focused) {
dateTimePicker.getTextBox().setFocus(focused);
}
public void setDateRange(Date startDate, Date stopDate) {
dateTimePicker.setStartDate(startDate);
dateTimePicker.setEndDate(stopDate);
}
}