Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.gwtbootstrap3.extras.datepicker.client.ui.base;
  
  /*
   * #%L
   * GwtBootstrap3
   * %%
   * Copyright (C) 2013 GwtBootstrap3
   * %%
   * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  * 
  *      http://www.apache.org/licenses/LICENSE-2.0
  * 
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  * #L%
  */
 
 
 import java.util.Date;
 import java.util.Map;

Author(s):
Joshua Godi
 
 public class DatePickerBase extends Widget
 
     // Check http://www.gwtproject.org/javadoc/latest/com/google/gwt/i18n/client/DateTimeFormat.html
     // for more information on syntax
     private static final Map<CharacterCharacterDATE_TIME_FORMAT_MAP = new HashMap<CharacterCharacter>();
 
     static {
         .put('m''M'); // months
     }
 
     private final TextBox textBox;
     private DateTimeFormat dateTimeFormat;
     private final DateTimeFormat startEndDateFormat = DateTimeFormat.getFormat("MM-dd-yyyy");
     private LeafValueEditor<Dateeditor;

    
DEFAULT values
 
     private String format = "mm/dd/yyyy";
     private DatePickerDayOfWeek[] daysOfWeekDisabled = {};
     private boolean autoClose = false;
 
     private boolean showTodayButton = false;
     private boolean highlightToday = false;
     private boolean keyboardNavigation = true;
     private boolean forceParse = true;
 
 
     private Widget container = null;
 
     public DatePickerBase() {
          = new TextBox();
         setElement((Element.getElement());
         setFormat();
     }
    public void setContainer(final Widget container) {
        this. = container;
    }
    public Widget getContainer() {
        return ;
    }
    public TextBox getTextBox() {
        return ;
    }
    public void setAlignment(final ValueBoxBase.TextAlignment align) {
        .setAlignment(align);
    }
    @Override
    public void setPlaceholder(final String placeHolder) {
        .setPlaceholder(placeHolder);
    }
    @Override
    public String getPlaceholder() {
        return .getPlaceholder();
    }
    public void setReadOnly(final boolean readOnly) {
        .setReadOnly(readOnly);
    }
    public boolean isReadOnly() {
        return .isReadOnly();
    }
    @Override
    public boolean isEnabled() {
        return .isEnabled();
    }
    @Override
    public void setEnabled(final boolean enabled) {
        .setEnabled(enabled);
    }
    @Override
    public void setId(final String id) {
        .setId(id);
    }
    @Override
    public String getId() {
        return .getId();
    }
    @Override
    public void setName(final String name) {
        .setName(name);
    }
    @Override
    public String getName() {
        return .getName();
    }
    @Override
    public void setVisibleOn(final DeviceSize deviceSize) {
        StyleHelper.setVisibleOn(thisdeviceSize);
    }
    @Override
    public void setHiddenOn(final DeviceSize deviceSize) {
        StyleHelper.setHiddenOn(thisdeviceSize);
    }
    @Override
    public void setLanguage(final DatePickerLanguage language) {
        this. = language;
        // Inject the JS for the language
        if (language.getJs() != null) {
            ScriptInjector.fromString(language.getJs().getText()).setWindow(.).inject();
        }
    }
    @Override
    public DatePickerLanguage getLanguage() {
        return ;
    }
    @Override
    public void setPosition(final DatePickerPosition position) {
        this. = position;
    }
    @Override
    public DatePickerPosition getPosition() {
        return ;
    }

    
Call this whenever changing any settings: minView, startView, format, etc. If you are changing format and date value, the updates must take in such order:

locales.cache.1.4.0. DateTimePicker.reload() 2. DateTimePicker.setValue(newDate); // Date newDate.

Otherwise date value is not updated.

    public void reload() {
        configure();
    }
    public void show() {
        show(getElement());
    }
    public void hide() {
        hide(getElement());
    }
    @Override
    public void setAutoClose(final boolean autoClose) {
        this. = autoClose;
    }
    @Override
    public void onShow(final Event e) {
        // On show we put focus on the textbox
        .setFocus(true);
        fireEvent(new ShowEvent(e));
    }
    @Override
    public HandlerRegistration addShowHandler(final ShowHandler showHandler) {
        return addHandler(showHandler, ShowEvent.getType());
    }
    @Override
    public void onHide(final Event e) {
        // On hide we remove focus from the textbox
        .setFocus(false);
        fireEvent(new HideEvent(e));
    }
    @Override
    public HandlerRegistration addHideHandler(final HideHandler hideHandler) {
        return addHandler(hideHandler, HideEvent.getType());
    }
    @Override
    public void onChangeDate(final Event e) {
        fireEvent(new ChangeDateEvent(e));
    }
    @Override
    public HandlerRegistration addChangeDateHandler(final ChangeDateHandler changeDateHandler) {
        return addHandler(changeDateHandler, ChangeDateEvent.getType());
    }
    @Override
    public void onChangeYear(final Event e) {
        fireEvent(new ChangeYearEvent(e));
    }
    @Override
    public HandlerRegistration addChangeYearHandler(final ChangeYearHandler changeYearHandler) {
        return addHandler(changeYearHandler, ChangeYearEvent.getType());
    }
    @Override
    public void onChangeMonth(final Event e) {
        fireEvent(new ChangeMonthEvent(e));
    }
    @Override
    public HandlerRegistration addChangeMonthHandler(final ChangeMonthHandler changeMonthHandler) {
        return addHandler(changeMonthHandler, ChangeMonthEvent.getType());
    }
    @Override
    public void onClearDate(final Event e) {
        fireEvent(new ClearDateEvent(e));
    }
    @Override
    public HandlerRegistration addClearDateHandler(final ClearDateHandler clearDateHandler) {
        return addHandler(clearDateHandler, ClearDateEvent.getType());
    }
    @Override
    public void setDaysOfWeekDisabled(final DatePickerDayOfWeek... daysOfWeekDisabled) {
        setDaysOfWeekDisabled(getElement(), toDaysOfWeekDisabledString(daysOfWeekDisabled));
    }
    @Override
    public void setEndDate(final Date endDate) {
        // Has to be in the format YYYY-MM-DD
        setEndDate(.format(endDate));
    }
    @Override
    public void setEndDate(final String endDate) {
        // Has to be in the format YYYY-MM-DD
        setEndDate(getElement(), endDate);
    }
    @Override
    public void clearEndDate() {
        setStartDate(getElement(), null);
    }
    @Override
    public void setForceParse(final boolean forceParse) {
        this. = forceParse;
    }
    @Override
    public void setHighlightToday(final boolean highlightToday) {
        this. = highlightToday;
    }
    @Override
    public void setHasKeyboardNavigation(final boolean hasKeyboardNavigation) {
        this. = hasKeyboardNavigation;
    }
    @Override
    public void setMinView(final DatePickerMinView datePickerMinView) {
        this. = datePickerMinView;
        // We keep the view select the same as the min view
        if ( != ) {
            setViewSelect(datePickerMinView);
        }
    }
    @Override
    public void setShowTodayButton(final boolean showTodayButton) {
        this. = showTodayButton;
    }
    @Override
    public void setStartDate(final Date startDate) {
        // Has to be in the format DD-MM-YYYY
        setStartDate(.format(startDate));
    }
    @Override
    public void setStartDate(final String startDate) {
        // Has to be in the format DD-MM-YYYY
        setStartDate(getElement(), startDate);
    }
    @Override
    public void clearStartDate() {
        setStartDate(getElement(), null);
    }
    @Override
    public void setStartView(final DatePickerMinView datePickerMinView) {
        this. = datePickerMinView;
    }
    @Override
    public void setViewSelect(final DatePickerMinView datePickerMinView) {
        this. = datePickerMinView;
        // We keep the min view the same as the view select
        if ( != ) {
            setMinView(datePickerMinView);
        }
    }
    @Override
    public void setWeekStart(final DatePickerDayOfWeek weekStart) {
        this. = weekStart;
    }
    @Override
    public void setFormat(final String format) {
        this. = format;
        // Get the old value
        final Date oldValue = getValue();
        // Make the new DateTimeFormat
        setDateTimeFormat(format);
        if (oldValue != null) {
            setValue(oldValue);
        }
    }
    private void setDateTimeFormat(final String format) {
        final StringBuilder fb = new StringBuilder(format);
        for (int i = 0; i < fb.length(); i++) {
            if (.containsKey(fb.charAt(i))) {
                fb.setCharAt(i.get(fb.charAt(i)));
            }
        }
        this. = DateTimeFormat.getFormat(fb.toString());
    }
    @Override
    public Date getValue() {
        try {
            return  != null && .getValue() != null ? .parse(.getValue()) : null;
        } catch (final Exception e) {
            return null;
        }
    }
    public String getBaseValue() {
        return .getValue();
    }
    @Override
    public HandlerRegistration addValueChangeHandler(final ValueChangeHandler<DatedateValueChangeHandler) {
        return addHandler(dateValueChangeHandler, ValueChangeEvent.getType());
    }
    @Override
    public void setValue(final Date value) {
        setValue(valuefalse);
    }
    @Override
    public void setValue(final Date valuefinal boolean fireEvents) {
        .setValue(value != null ? .format(value) : null);
        update(.getElement());
        if (fireEvents) {
            ValueChangeEvent.fire(DatePickerBase.thisvalue);
        }
    }
    @Override
    public LeafValueEditor<DateasEditor() {
        if ( == null) {
             = TakesValueEditor.of(this);
        }
        return ;
    }

    
    @Override
    protected void onLoad() {
        super.onLoad();
        configure();
        // With the new update the parent must have position: relative for positioning to work
        if (getElement().getParentElement() != null) {
        }
    }
    @Override
    protected void onUnload() {
        super.onUnload();
        remove(getElement());
    }
    protected void configure() {
        // If the user hasn't specified the container, default to the widget's parent
        // This makes sure the modal scroll with the content correctly
        if ( == null) {
            configure(thisthis.getParent());
        } else {
            configure(this);
        }
    }
    protected void configure(final Widget wfinal Widget container) {
        w.getElement().setAttribute("data-date-format");
        // If configuring not for the first time, datepicker must be removed first.
        this.remove(w.getElement());
                .getCode(), .getPosition());
    }
    protected void execute(final String cmd) {
        execute(getElement(), cmd);
    }
    private native void execute(Element eString cmd/*-{
        $wnd.jQuery(e).datepicker(cmd);
    }-*/;
    private native void remove(Element e/*-{
        $wnd.jQuery(e).datepicker('remove');
        $wnd.jQuery(e).off('show');
        $wnd.jQuery(e).off('hide');
        $wnd.jQuery(e).off('changeDate');
        $wnd.jQuery(e).off('changeYear');
        $wnd.jQuery(e).off('changeMonth');
        $wnd.jQuery(e).off('clearDate');
    }-*/;
    private native void show(Element e/*-{
        $wnd.jQuery(e).datepicker('show');
    }-*/;
    private native void hide(Element e/*-{
        $wnd.jQuery(e).datepicker('hide');
    }-*/;
    private native void update(Element e/*-{
        $wnd.jQuery(e).datepicker('update');
    }-*/;
    private native void setStartDate(Element eString startDate/*-{
        $wnd.jQuery(e).datepicker('setStartDate', startDate);
    }-*/;
    private native void setEndDate(Element eString endDate/*-{
        $wnd.jQuery(e).datepicker('setEndDate', endDate);
    }-*/;
    private native void setDaysOfWeekDisabled(Element eString daysOfWeekDisabled/*-{
        $wnd.jQuery(e).datepicker('setDaysOfWeekDisabled', daysOfWeekDisabled);
    }-*/;
    protected native void configure(Element eElement pString formatint weekStartString daysOfWeekDisabledboolean autoCloseint startView,
                                    int minViewModeboolean todayBtnboolean highlightTodayboolean keyboardNavigationboolean forceParseint viewSelectString language,
                                    String orientation/*-{
        if (todayBtn) {
            todayBtn = "linked";
        }
        var that = this;
        $wnd.jQuery(e).datepicker({
            format: format,
            language: language,
            weekStart: weekStart,
            daysOfWeekDisabled: daysOfWeekDisabled,
            autoclose: autoClose,
            startView: startView,
            minViewMode: minViewMode,
            todayBtn: todayBtn,
            todayHighlight: highlightToday,
            keyboardNavigation: keyboardNavigation,
            forceParse: forceParse,
            orientation: orientation,
            container: p
        })
            .on('show', function (e) {
                that.@org.gwtbootstrap3.extras.datepicker.client.ui.base.DatePickerBase::onShow(Lcom/google/gwt/user/client/Event;)(e);
            })
            .on("hide", function (e) {
                that.@org.gwtbootstrap3.extras.datepicker.client.ui.base.DatePickerBase::onHide(Lcom/google/gwt/user/client/Event;)(e);
            })
            .on("changeDate", function (e) {
                that.@org.gwtbootstrap3.extras.datepicker.client.ui.base.DatePickerBase::onChangeDate(Lcom/google/gwt/user/client/Event;)(e);
            })
            .on("changeYear", function (e) {
                that.@org.gwtbootstrap3.extras.datepicker.client.ui.base.DatePickerBase::onChangeYear(Lcom/google/gwt/user/client/Event;)(e);
            })
            .on("changeMonth", function (e) {
                that.@org.gwtbootstrap3.extras.datepicker.client.ui.base.DatePickerBase::onChangeMonth(Lcom/google/gwt/user/client/Event;)(e);
            })
            .on("clearDate", function (e) {
                that.@org.gwtbootstrap3.extras.datepicker.client.ui.base.DatePickerBase::onClearDate(Lcom/google/gwt/user/client/Event;)(e);
            });
    }-*/;
    protected String toDaysOfWeekDisabledString(final DatePickerDayOfWeek... datePickerDayOfWeeks) {
        this. = datePickerDayOfWeeks;
        final StringBuilder builder = new StringBuilder();
        if (datePickerDayOfWeeks != null) {
            int i = 0;
            for (final DatePickerDayOfWeek dayOfWeek : datePickerDayOfWeeks) {
                builder.append(dayOfWeek.getValue());
                i++;
                if (i < datePickerDayOfWeeks.length) {
                    builder.append(",");
                }
            }
        }
        return builder.toString();
    }
New to GrepCode? Check out our FAQ X