package fr.lteconsulting.hexa.client.ui.widget;
import com.google.gwt.dom.client.Element;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.ui.Widget;
import fr.lteconsulting.hexa.client.tools.JQuery;
public class JQDatepicker extends Widget
{
public interface Callback
{
public void onDateSelected( String text );
}
boolean fInline;
Element input;
public JQDatepicker()
{
this( false );
}
public JQDatepicker( boolean fInline )
{
this.fInline = fInline;
if( fInline )
input = DOM.createDiv();
else
input = DOM.createInputText();
JQuery.get().jqDatepicker( input );
jqDatepickerOption( input, "dateFormat", "yy-mm-dd" );
setElement( input );
}
private static native void jqDatepickerOption( Element e, String option, String value )
/*-{
$wnd.$( e ).datepicker( "option", option, value );
}-*/;
private static native void jqDatepickerSetEventHandler( Element e, JQDatepicker.Callback datePicker )
/*-{
$wnd.$( e ).datepicker( "option", "onSelect", function(dateText, inst) { datePicker.@fr.lteconsulting.hexa.client.ui.widget.JQDatepicker.Callback::onDateSelected(Ljava/lang/String;)(dateText); } );
$wnd.$( e ).datepicker( "option", "onClose", function(dateText, inst) { datePicker.@fr.lteconsulting.hexa.client.ui.widget.JQDatepicker.Callback::onDateSelected(Ljava/lang/String;)(dateText); } );
}-*/;
private static native void jqDatepickerRefresh( Element e ) /*-{
$wnd.$( e ).datepicker( "refresh" );
}-*/;
public void setCallback( Callback callback )
{
jqDatepickerSetEventHandler( input, callback );
}
public void setValueString( String date )
{
if( date == null || date.isEmpty() )
return;
setValueString( input, date );
}
private native final void setValueString( Element element, String date )
/*-{
$wnd.$( element ).datepicker( "setDate", date );
}-*/;
// {
// if( ! fInline )
// input.setInnerText( date );
//
// // jqDatepickerRefresh( input );
// input.setPropertyString( "value", date );
// }
public String getValueAsString()
{
return input.getPropertyString( "value" );
}
}