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

前端 未结 3 1226
Happy的楠姐
Happy的楠姐 2020-12-30 12:16

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 F S

相关标签:
3条回答
  • 2020-12-30 12:28

    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...

    0 讨论(0)
  • 2020-12-30 12:37

    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

    0 讨论(0)
  • 2020-12-30 12:42

    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 讨论(0)
提交回复
热议问题