2010-08-18 16 views
8

बहुत ज्यादा, शीर्षक क्या कहता है। मुझे सप्ताह के पहले दिन के रूप में सोमवार को जीडब्ल्यूटी डेटपीकर घटक का उपयोग करने की आवश्यकता है। वर्तमान में दिन लेबल S M T W T F S हैं, मैं चाहता हूं कि यह M T W T F S S हो। इसे पूरा करने का कोई तरीका?सोमवार को सप्ताह के पहले दिन के रूप में उपयोग करने के लिए जीडब्ल्यूटी डेटपीकर कैसे बनाया जाए?

+1

मुझे लगता है कि यह डेटपिकर आपके लिए डेटपिकर को स्वचालित रूप से अनुकूलित करने के लिए लोकेल का उपयोग कर रहा है। http://code.google.com/p/gwt-datepicker/wiki/HowToUse –

उत्तर

5

, तो स्वचालित स्थान का पता लगाने को अपनी आवश्यकताओं फिट नहीं करता है (और शायद संपादन com.google.gwt.i18n.client.constants.DateTimeConstantsImpl_xy.properties में firstDayOfTheWeek या तो नहीं होगा), एकमात्र विकल्प DatePicker के कार्यान्वयन को संशोधित करने के होगा:

  • बढ़ाएँ डेटपिकर, एक नया कन्स्ट्रक्टर लिखें जो आपके स्वयं के दृश्य और मॉडल के साथ संरक्षित DatePicker(MonthSelector monthSelector, CalendarView view, CalendarModel model) कन्स्ट्रक्टर को कॉल करता है।

  • कैलेंडर मॉडल बढ़ाया जा सकता है, इसलिए आपको getCurrentFirstDayOfFirstWeek ओवरराइड करना होगा।

  • DefaultCalendarView अंतिम है, इसलिए आपको इसे एक नई कक्षा में कॉपी करना होगा और इसकी setup विधि संशोधित करना होगा।

यह काफी गंदा है, और है कि GWT के छोटे नकारात्मक पक्ष यह है - यह निर्भरता इंजेक्शन के बजाय Singletons का गहन उपयोग करता ...

+0

एमएमएमएम ... मैं इसे एक उत्तर के रूप में स्वीकार कर रहा हूं, क्योंकि मैं वही बात सोच रहा था। मैं कोशिश कर रहा हूँ। – Strelok

2

आप (DefaultCalendarView के स्रोत कोड है जो प्रदान किया जा सकता को देखें, तो DatePicker के संरक्षित कन्स्ट्रक्टर में) यह डिफ़ॉल्ट प्रारंभिक दिन सेट करने के लिए CalendarUtil की getStartingDayOfWeek का उपयोग करता है। CalendarUtilDateTimeConstants से प्रारंभ तिथि प्राप्त करता है। तो, जैसा कि जू ने कहा, यह आपके लोकेल द्वारा निर्धारित किया जाता है।

सवाल यह है कि, आप डिफ़ॉल्ट लोकेल मान को ओवरराइड कैसे करते हैं। ईमानदार होने के लिए, मुझे नहीं पता कि यह कैसे करें या यदि यह भी संभव है। यह स्पष्ट रूप से सबसे आसान समाधान होगा।

हालांकि, यदि यह संभव नहीं है, तो आप जो कर सकते हैं वह एक वर्ग है जो DatePicker बढ़ाता है। फिर DefaultCalendarView तक फैली एक और कक्षा बनाएं और setup विधि को ओवरराइड करें। उसी विधि स्रोत पर प्रतिलिपि बनाएँ लेकिन CalendarUtil से प्रारंभ तिथि का उपयोग करने के बजाय प्रारंभ तिथि को सोमवार को बदलें। फिर अपने कस्टम को अपने कस्टम DefaultCalendarView का उपयोग करके बनाएं। यह एक हैक है, लेकिन यह काम करना चाहिए।

+0

एक अलग लोकेल निर्दिष्ट करना आसान है (यह [जीडब्ल्यूटी डॉक्स] में है (http://code.google.com/webtoolkit/doc/latest/DevGuideI18nLocale.html#LocaleSpecifying)) - लेकिन फिर यह प्रत्येक जीडब्ल्यूटी विजेट पर लागू होगा पृष्ठ ... बीटीडब्लू: क्या आपने वास्तव में मूल रूप से मेरा जवाब कॉपी किया था ?! –

+0

हाहाहा, मैंने जवाब लिखना शुरू किया जब कोई जवाब नहीं था लेकिन मैं इसे अभी खत्म नहीं कर पाया। जब तक मैंने इसे समाप्त कर दिया और सबमिट किया, तब तक तुम्हारा था ... किसी कारण से स्टैक ओवरफ्लो ने मुझे चेतावनी नहीं दी थी जैसा कि पहले किया गया था। क्षमा करें: पी –

+0

कोई चिंता नहीं - किसी ऐसे व्यक्ति को ढूंढने में खुशी है जो समान सोचता है :-) –

संबंधित मुद्दे