开发者

How to make GWT DatePicker to use Monday as the first day of the week?

Pretty much, what the title says. I need to make the GWT DatePicker component use Monday as the first day of the week. Currently the day labels are S M T W T开发者_StackOverflow社区 F S, I want it to be M T W T F S S. Any way to accomplish it?


If the automatic locale detection doesn't fit your needs (and probably editing the firstDayOfTheWeek in com.google.gwt.i18n.client.constants.DateTimeConstantsImpl_xy.properties won't be either), the only option would be to modify the implementation of DatePicker:

  • Extend DatePicker, write a new constructor which calls the protected DatePicker(MonthSelector monthSelector, CalendarView view, CalendarModel model) constructor with your own view and model.

  • The CalendarModel can be extended, so you'd have to override getCurrentFirstDayOfFirstWeek.

  • The DefaultCalendarView is final, so you'd have to copy it to a new class and modify its setup method.

It's quite messy, and that's the little downside of GWT - it makes heavy use of Singletons instead of Dependency Injection...


Don't need to subclass the DatePicker. Please read the google gwt documentation by clicking below url. http://code.google.com/webtoolkit/doc/latest/DevGuideI18nLocale.html#LocaleSpecifying


If you look at the source code of DefaultCalendarView (which can be provided in the protected constructor of a DatePicker) it uses CalendarUtil's getStartingDayOfWeek to set the default starting day. CalendarUtil gets the start date from DateTimeConstants. So, as ju said, it's determined by your locale.

The question is, how do you override the default locale value. To be honest, I don't know how to do this or if it's even possible. That would obviously be the easiest solution.

However, if that's not possible, what you can do is create a class that extends DatePicker. Then create another class that extends DefaultCalendarView and overrides the setup method. Copy over the same method source but change the start date to Monday instead of using the start date from CalendarUtil. Then create your custom DatePicker using your custom DefaultCalendarView. It's a hack, but it should work.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜