I did it in my code without too much problems, but I agree with you
that's quite annoying.
Steps:
1.- Create a new package in your code:
com.google.gwt.user.datepicker.client
Copy the DefaultCalendarView.java from the GWT repository (I'm not
sure which version I used, but was the one from 2.0)
In the DateCell subclass
in the update method
change setEnabled(true) ->
setEnabled(getDatePicker().isDateEnabled(current));
In the DefaultCalendarView
Create 2 new variables:
private Date minDate = null;
private Date maxDate = null;
Create a new constructor (that's the one you'll use)
// FIXME: Overload Constructor and whole class just to configure the
first
// day of the week :(
/**
* Constructor.
*
* @param minDate Minimum allowed date.
* @param maxDate Maximum allowed date.
*/
public DefaultCalendarView(Date minDate, Date maxDate) {
this.minDate = minDate;
this.maxDate = maxDate;
}
Replace the method isDateEnabled by:
@Override
public boolean isDateEnabled(Date d) {
if (minDate != null && maxDate != null) {
if (d.after(minDate) && d.before(maxDate)) {
return true;
} else {
return false;
}
}
return getCell(d).isEnabled();
}
That's it.
Hope it helps.
On Aug 4, 4:06 pm, "[email protected]" <[email protected]> wrote:
> Folks, I'm trying to make a fairly basic improvement to the default
> GWT DatePicker. However, due to its design, I end up having to extend
> (and largely reimplement) a few classes (incl CellGridImpl and
> CalendarView).
>
> Everything works fine with my implementation when compiling, and when
> running as a webapp.
>
> However, when I try to debug using DevMode, I get this error:
>
> 01:27:53.944 [ERROR] [analysisgraph] Unable to load module entry point
> class com.masergy.ina.analysis.client.AnalysisEntryPoint (see
> associated exception for details)
> java.lang.IllegalAccessError: tried to access class
> com.google.gwt.user.datepicker.client.DatePickerComponent from class
> com.masergy.ina.analysis.client.widget.BoundedCalendarView
> at
> com.masergy.ina.analysis.client.widget.BoundedCalendarView.access
> $1(BoundedCalendarView.java:1)
> at com.masergy.ina.analysis.client.widget.BoundedCalendarView
> $CellGrid$DateCell.update(BoundedCalendarView.java:133)
> at
> com.masergy.ina.analysis.client.widget.BoundedCalendarView.refresh(BoundedCalendarView.java:
> 339)
> at
> com.google.gwt.user.datepicker.client.DatePicker.refreshAll(DatePicker.java:
> 622)
> at
> com.google.gwt.user.datepicker.client.DatePicker.setCurrentMonth(DatePicker.java:
> 513)
> at
> com.google.gwt.user.datepicker.client.DatePicker.<init>(DatePicker.java:
> 282)
> at
> com.masergy.ina.analysis.client.widget.BoundedDatePicker.<init>(BoundedDatePicker.java:
> 36)
> at
> com.masergy.ina.analysis.client.widget.BoundedDateTimePicker.doLayout(BoundedDateTimePicker.java:
> 103)
> at
> com.masergy.ina.analysis.client.widget.BoundedDateTimePicker.<init>(BoundedDateTimePicker.java:
> 89)
> [...]
>
> update() is from code I've had to reimplement from CalendarView:
> public void update(Date current) {
> setEnabled(true);
> getValue().setTime(current.getTime());
> String value = getModel().formatDayOfMonth(getValue());
> setText(value);
> dateStyle = cellStyle;
> if (isFiller()) {
> dateStyle += " " + css().dayIsFiller();
> } else {
> String extraStyle =
> getDatePicker().getStyleOfDate(current); // <-- line 133
> if (extraStyle != null) {
> dateStyle += " " + extraStyle;
> }
> }
> // We want to certify that all date styles have " " before and
> after
> // them for ease of adding to and replacing them.
> dateStyle += " ";
> updateStyle();
> }
>
> getDatePicker() is an inherited method in the public class
> CalendarView, but is from the package-protected DatePickerComponent
> class.
>
> Does this make any sense? Why is DatePicker so impossible to extend to
> add any decent functionality? In my case, all I wanted was to override
> the simple CalendarView.isDateEnabled() method to limit the range of
> selectable days. But due to the overly paranoid method and field
> access restrictions, I had to reimplement most of the entire package.
> I'd like to avoid reimplementing the entire package, including CSS,
> but I'm not sure that's even possible.
--
You received this message because you are subscribed to the Google Groups
"Google Web Toolkit" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-web-toolkit?hl=en.