2010-08-18 16 views
8

Bastante, lo que dice el título. Necesito hacer que el componente GWT DatePicker use el lunes como el primer día de la semana. Actualmente las etiquetas de día son S M T W T F S, quiero que sea M T W T F S S. ¿Alguna forma de lograrlo?¿Cómo hacer que GWT DatePicker se use el lunes como el primer día de la semana?

+1

Creo que este DatePicker está utilizando su configuración regional para personalizar automáticamente DatePicker por usted. http://code.google.com/p/gwt-datepicker/wiki/HowToUse –

Respuesta

5

Si la detección automática de la configuración regional no se ajusta a sus necesidades (y probablemente la edición de la firstDayOfTheWeek en com.google.gwt.i18n.client.constants.DateTimeConstantsImpl_xy.properties no habrá tampoco), la única opción sería modificar la aplicación del DatePicker:

  • Extend DatePicker, escriba un nuevo constructor que llame al constructor DatePicker(MonthSelector monthSelector, CalendarView view, CalendarModel model) protegido con su propia vista y modelo.

  • CalendarModel puede ampliarse, por lo que tendrá que anular getCurrentFirstDayOfFirstWeek.

  • La DefaultCalendarView es definitiva, por lo que tendría que copiarla a una nueva clase y modificar su método setup.

Es bastante desordenado, y esa es la pequeña desventaja de GWT - que hace un uso intensivo de Singleton en lugar de la inyección de dependencias ...

+0

Mmmm ... Voy a aceptar esto como una respuesta, porque estaba pensando lo mismo. Voy a intentarlo. – Strelok

2

Si nos fijamos en el código fuente de DefaultCalendarView (que puede ser proporcionada en el constructor protegido de DatePicker) usa CalendarUtil's getStartingDayOfWeek para establecer el día de inicio predeterminado. CalendarUtil obtiene la fecha de inicio de DateTimeConstants. Entonces, como dijo ju, está determinado por tu localidad.

La pregunta es, ¿cómo anula el valor de configuración regional predeterminado. Para ser honesto, no sé cómo hacer esto o si es posible. Esa sería obviamente la solución más fácil.

Sin embargo, si eso no es posible, lo que puedes hacer es crear una clase que se extienda a DatePicker. A continuación, cree otra clase que extienda DefaultCalendarView y anule el método setup. Copie sobre el mismo origen de método pero cambie la fecha de inicio a lunes en lugar de usar la fecha de inicio desde CalendarUtil. A continuación, cree su DatePicker personalizado usando su DefaultCalendarView personalizado. Es un truco, pero debería funcionar.

+0

Especificar una configuración regional diferente es fácil (está en [documentos de GWT] (http://code.google.com/webtoolkit/doc/latest/DevGuideI18nLocale.html#LocaleSpecifying)), pero luego se aplicaría a cada widget de GWT en la página ... Por cierto: ¿Básicamente básicamente copiaste mi respuesta? –

+0

Jajaja, comencé a escribir el mío cuando no hubo respuestas, pero no pude terminarlo de inmediato. Cuando terminé y lo envié, el tuyo estaba allí ... por alguna razón Stackoverflow no me advirtió como lo hizo antes. Lo siento: P –

+0

No se preocupe - Feliz de encontrar a alguien que piensa igual :-) –

Cuestiones relacionadas