Как заставить GWT DatePicker использовать понедельник в качестве первого дня недели? - PullRequest
8 голосов
/ 18 августа 2010

В значительной степени, что говорит название.Мне нужно, чтобы компонент GWT DatePicker использовал понедельник в качестве первого дня недели.В настоящее время дневные метки S M T W T F S, я хочу, чтобы они были M T W T F S S.Есть ли способ сделать это?

Ответы [ 3 ]

5 голосов
/ 18 августа 2010

Если автоматическое определение локали не соответствует вашим потребностям (и, вероятно, редактирование firstDayOfTheWeek в com.google.gwt.i18n.client.constants.DateTimeConstantsImpl_xy.properties также не будет), единственным вариантом будет изменение реализации DatePicker:

  • Расширьте DatePicker, напишите новый конструктор, который вызывает защищенный конструктор DatePicker(MonthSelector monthSelector, CalendarView view, CalendarModel model) с вашим собственным видом и моделью.

  • CalendarModel может быть расширена, так что вы 'нужно переопределить getCurrentFirstDayOfFirstWeek.

  • DefaultCalendarView является окончательным, поэтому вам придется скопировать его в новый класс и изменить его метод setup.

Это довольно грязно, и это маленький недостаток GWT - он интенсивно использует Singletons вместо Dependency Injection ...

3 голосов
/ 04 ноября 2011

Не нужно создавать подкласс DatePicker.Пожалуйста, прочитайте документацию Google gwt, нажав ниже URL.http://code.google.com/webtoolkit/doc/latest/DevGuideI18nLocale.html#LocaleSpecifying

2 голосов
/ 18 августа 2010

Если вы посмотрите на исходный код DefaultCalendarView (который может предоставляться в защищенном конструкторе DatePicker ), он использует CalendarUtil getStartingDayOfWeek установить начальный день по умолчанию. CalendarUtil получает дату начала от DateTimeConstants. Итак, как сказал дзю, это определяется вашей локалью.

Вопрос в том, как переопределить значение локали по умолчанию. Честно говоря, я не знаю, как это сделать, или если это вообще возможно. Это, очевидно, было бы самым простым решением.

Однако, если это невозможно, вы можете создать класс, расширяющий DatePicker. Затем создайте другой класс, который расширяет DefaultCalendarView и переопределяет метод setup. Скопируйте тот же источник метода, но измените дату начала на понедельник вместо использования даты начала с CalendarUtil. Затем создайте свой пользовательский DatePicker, используя свой пользовательский DefaultCalendarView. Это взлом, но это должно сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...