package com.smartgwt.client.widgets.calendar;
import java.util.Date;
import com.smartgwt.client.widgets.calendar.*;
/**
* Called to determine whether the passed date should be considered disabled in the passed view
*/
public abstract class DisableDateCustomizer {
private Calendar calendar;
public void setCalendar(Calendar calendar) {
this.calendar = calendar;
}
/**
* Returns the Calendar being customized
* @return Calendar being customized
*/
public Calendar getCalendar() {
return this.calendar;
}
/**
* Call executeDefault() to run the original method for default behavior
*/
public native boolean executeDefault(Date date, CalendarView calendarView) /*-{
var calendarViewJS = calendarView == null ? null : calendarView.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
var dateJS = date == null ? null : @com.smartgwt.client.util.JSOHelper::convertToJavaScriptDate(Ljava/util/Date;)(date);
var calendarJ = this.@com.smartgwt.client.widgets.calendar.DisableDateCustomizer::getCalendar()();
var calendarJS = calendarJ.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
if (calendarJS == null) {
$wnd.isc.logWarn('no calendar');
return null;
}
var ret = calendarJS._shouldDisableDate(dateJS, calendarViewJS);
return ret;
}-*/;
/**
* shouldDisableDate() should be implemented and return true if the passed date should be considered disabled in the passed view
* Use executeDefault() to run the original method to fall back on default behavior.
* @param date the date in question
* @param calendarView the view in which the date cell exists
* @return true if the date should be considered disabled, or false otherwise
*/
public abstract boolean shouldDisableDate(Date date, CalendarView calendarView);
}