2010-08-18 10 views
8

Praticamente, quello che dice il titolo. Devo rendere il componente GWT DatePicker utilizzato lunedì come primo giorno della settimana. Attualmente le etichette del giorno sono S M T W T F S, voglio che sia M T W T F S S. Qualche modo per realizzarlo?Come utilizzare GWT DatePicker come lunedì come primo giorno della settimana?

+1

Penso che questo DatePicker stia usando le impostazioni locali per personalizzare automaticamente DatePicker. http://code.google.com/p/gwt-datepicker/wiki/HowToUse –

risposta

5

Se il rilevamento automatico locale non si adatta alle vostre esigenze (e probabilmente la modifica del firstDayOfTheWeek in com.google.gwt.i18n.client.constants.DateTimeConstantsImpl_xy.properties non ci sarà neanche), l'unica opzione sarebbe quella di modificare l'implementazione di DatePicker:

  • Extend DatePicker, scrivi un nuovo costruttore che chiama il costruttore protetto DatePicker(MonthSelector monthSelector, CalendarView view, CalendarModel model) con la tua vista e modello.

  • CalendarModel può essere esteso, quindi è necessario eseguire l'override di getCurrentFirstDayOfFirstWeek.

  • Lo è definitivo, quindi è necessario copiarlo in una nuova classe e modificarne il metodo setup.

E 'piuttosto confusa, e questo è il piccolo svantaggio di GWT - si fa un uso pesante di Singletons invece di Dependency Injection ...

+0

Mmmm ... Lo accetterò come risposta, perché stavo pensando la stessa cosa. Ci proverò. – Strelok

2

Se si guarda il codice sorgente di DefaultCalendarView (che può essere fornito nel costruttore protetto di un DatePicker) utilizza's getStartingDayOfWeek per impostare il giorno iniziale predefinito. CalendarUtil ottiene la data di inizio da DateTimeConstants. Quindi, come ha detto ju, è determinato dal tuo locale.

La domanda è, come si sostituisce il valore locale predefinito. Ad essere onesti, non so come farlo o se è possibile. Questa sarebbe ovviamente la soluzione più semplice.

Tuttavia, se ciò non è possibile, è possibile creare una classe che si estende DatePicker. Quindi creare un'altra classe che si estende e sovrascrive il metodo setup. Copiare sullo stesso metodo sorgente ma modificare la data di inizio a lunedì invece di utilizzare la data di inizio da CalendarUtil. Quindi crea la tua DatePicker personalizzata usando il tuo personalizzato. È un hack, ma dovrebbe funzionare.

+0

Specificare una diversa localizzazione è facile (si trova nei [documenti GWT] (http://code.google.com/webtoolkit/doc/latest/DevGuideI18nLocale.html#LocaleSpecifying)), ma poi si applicherebbe a ogni widget GWT in la pagina ... BTW: in pratica hai praticamente copiato la mia risposta ?! –

+0

Hahaha, ho iniziato a scrivere il mio quando non c'erano risposte, ma non ero in grado di finirlo subito. Quando ho finito e l'ho presentato, il tuo era lì ... per qualche ragione Stackoverflow non mi ha avvisato come è stato fatto prima. Scusa: P –

+0

Nessun problema - Felice di trovare qualcuno che la pensi allo stesso modo :-) –

Problemi correlati