2 * Copyright (C) 2012 Google Inc. All rights reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
14 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16 * ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE
17 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
20 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26 #ifndef DateTimeFieldElements_h
27 #define DateTimeFieldElements_h
29 #if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
30 #include "core/html/shadow/DateTimeNumericFieldElement.h"
31 #include "core/html/shadow/DateTimeSymbolicFieldElement.h"
35 class DateTimeAMPMFieldElement FINAL : public DateTimeSymbolicFieldElement {
36 WTF_MAKE_NONCOPYABLE(DateTimeAMPMFieldElement);
39 static PassRefPtrWillBeRawPtr<DateTimeAMPMFieldElement> create(Document&, FieldOwner&, const Vector<String>&);
42 DateTimeAMPMFieldElement(Document&, FieldOwner&, const Vector<String>&);
44 // DateTimeFieldElement functions.
45 virtual void populateDateTimeFieldsState(DateTimeFieldsState&) OVERRIDE;
46 virtual void setValueAsDate(const DateComponents&) OVERRIDE;
47 virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) OVERRIDE;
50 class DateTimeDayFieldElement FINAL : public DateTimeNumericFieldElement {
51 WTF_MAKE_NONCOPYABLE(DateTimeDayFieldElement);
54 static PassRefPtrWillBeRawPtr<DateTimeDayFieldElement> create(Document&, FieldOwner&, const String& placeholder, const Range&);
57 DateTimeDayFieldElement(Document&, FieldOwner&, const String& placeholder, const Range&);
59 // DateTimeFieldElement functions.
60 virtual void populateDateTimeFieldsState(DateTimeFieldsState&) OVERRIDE;
61 virtual void setValueAsDate(const DateComponents&) OVERRIDE;
62 virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) OVERRIDE;
65 class DateTimeHourFieldElementBase : public DateTimeNumericFieldElement {
66 WTF_MAKE_NONCOPYABLE(DateTimeHourFieldElementBase);
69 DateTimeHourFieldElementBase(Document&, FieldOwner&, const Range&, const Range& hardLimits, const Step&);
73 // DateTimeFieldElement functions.
74 virtual void setValueAsDate(const DateComponents&) OVERRIDE;
75 virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) OVERRIDE;
78 class DateTimeHour11FieldElement FINAL : public DateTimeHourFieldElementBase {
79 WTF_MAKE_NONCOPYABLE(DateTimeHour11FieldElement);
82 static PassRefPtrWillBeRawPtr<DateTimeHour11FieldElement> create(Document&, FieldOwner&, const Range&, const Step&);
85 DateTimeHour11FieldElement(Document&, FieldOwner&, const Range& hour23Range, const Step&);
87 // DateTimeFieldElement functions.
88 virtual void populateDateTimeFieldsState(DateTimeFieldsState&) OVERRIDE;
89 virtual void setValueAsInteger(int, EventBehavior = DispatchNoEvent) OVERRIDE;
92 class DateTimeHour12FieldElement FINAL : public DateTimeHourFieldElementBase {
93 WTF_MAKE_NONCOPYABLE(DateTimeHour12FieldElement);
96 static PassRefPtrWillBeRawPtr<DateTimeHour12FieldElement> create(Document&, FieldOwner&, const Range&, const Step&);
99 DateTimeHour12FieldElement(Document&, FieldOwner&, const Range& hour23Range, const Step&);
101 // DateTimeFieldElement functions.
102 virtual void populateDateTimeFieldsState(DateTimeFieldsState&) OVERRIDE;
103 virtual void setValueAsInteger(int, EventBehavior = DispatchNoEvent) OVERRIDE;
106 class DateTimeHour23FieldElement FINAL : public DateTimeHourFieldElementBase {
107 WTF_MAKE_NONCOPYABLE(DateTimeHour23FieldElement);
110 static PassRefPtrWillBeRawPtr<DateTimeHour23FieldElement> create(Document&, FieldOwner&, const Range&, const Step&);
113 DateTimeHour23FieldElement(Document&, FieldOwner&, const Range& hour23Range, const Step&);
115 // DateTimeFieldElement functions.
116 virtual void populateDateTimeFieldsState(DateTimeFieldsState&) OVERRIDE;
117 virtual void setValueAsInteger(int, EventBehavior = DispatchNoEvent) OVERRIDE;
120 class DateTimeHour24FieldElement FINAL : public DateTimeHourFieldElementBase {
121 WTF_MAKE_NONCOPYABLE(DateTimeHour24FieldElement);
124 static PassRefPtrWillBeRawPtr<DateTimeHour24FieldElement> create(Document&, FieldOwner&, const Range&, const Step&);
127 DateTimeHour24FieldElement(Document&, FieldOwner&, const Range& hour23Range, const Step&);
129 // DateTimeFieldElement functions.
130 virtual void populateDateTimeFieldsState(DateTimeFieldsState&) OVERRIDE;
131 virtual void setValueAsInteger(int, EventBehavior = DispatchNoEvent) OVERRIDE;
134 class DateTimeMillisecondFieldElement FINAL : public DateTimeNumericFieldElement {
135 WTF_MAKE_NONCOPYABLE(DateTimeMillisecondFieldElement);
138 static PassRefPtrWillBeRawPtr<DateTimeMillisecondFieldElement> create(Document&, FieldOwner&, const Range&, const Step&);
141 DateTimeMillisecondFieldElement(Document&, FieldOwner&, const Range&, const Step&);
143 // DateTimeFieldElement functions.
144 virtual void populateDateTimeFieldsState(DateTimeFieldsState&) OVERRIDE;
145 virtual void setValueAsDate(const DateComponents&) OVERRIDE;
146 virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) OVERRIDE;
149 class DateTimeMinuteFieldElement FINAL : public DateTimeNumericFieldElement {
150 WTF_MAKE_NONCOPYABLE(DateTimeMinuteFieldElement);
153 static PassRefPtrWillBeRawPtr<DateTimeMinuteFieldElement> create(Document&, FieldOwner&, const Range&, const Step&);
156 DateTimeMinuteFieldElement(Document&, FieldOwner&, const Range&, const Step&);
158 // DateTimeFieldElement functions.
159 virtual void populateDateTimeFieldsState(DateTimeFieldsState&) OVERRIDE;
160 virtual void setValueAsDate(const DateComponents&) OVERRIDE;
161 virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) OVERRIDE;
164 class DateTimeMonthFieldElement FINAL : public DateTimeNumericFieldElement {
165 WTF_MAKE_NONCOPYABLE(DateTimeMonthFieldElement);
168 static PassRefPtrWillBeRawPtr<DateTimeMonthFieldElement> create(Document&, FieldOwner&, const String& placeholder, const Range&);
171 DateTimeMonthFieldElement(Document&, FieldOwner&, const String& placeholder, const Range&);
173 // DateTimeFieldElement functions.
174 virtual void populateDateTimeFieldsState(DateTimeFieldsState&) OVERRIDE;
175 virtual void setValueAsDate(const DateComponents&) OVERRIDE;
176 virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) OVERRIDE;
179 class DateTimeSecondFieldElement FINAL : public DateTimeNumericFieldElement {
180 WTF_MAKE_NONCOPYABLE(DateTimeSecondFieldElement);
183 static PassRefPtrWillBeRawPtr<DateTimeSecondFieldElement> create(Document&, FieldOwner&, const Range&, const Step&);
186 DateTimeSecondFieldElement(Document&, FieldOwner&, const Range&, const Step&);
188 // DateTimeFieldElement functions.
189 virtual void populateDateTimeFieldsState(DateTimeFieldsState&) OVERRIDE;
190 virtual void setValueAsDate(const DateComponents&) OVERRIDE;
191 virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) OVERRIDE;
194 class DateTimeSymbolicMonthFieldElement FINAL : public DateTimeSymbolicFieldElement {
195 WTF_MAKE_NONCOPYABLE(DateTimeSymbolicMonthFieldElement);
198 static PassRefPtrWillBeRawPtr<DateTimeSymbolicMonthFieldElement> create(Document&, FieldOwner&, const Vector<String>&, int minimum, int maximum);
201 DateTimeSymbolicMonthFieldElement(Document&, FieldOwner&, const Vector<String>&, int minimum, int maximum);
203 // DateTimeFieldElement functions.
204 virtual void populateDateTimeFieldsState(DateTimeFieldsState&) OVERRIDE;
205 virtual void setValueAsDate(const DateComponents&) OVERRIDE;
206 virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) OVERRIDE;
209 class DateTimeWeekFieldElement FINAL : public DateTimeNumericFieldElement {
210 WTF_MAKE_NONCOPYABLE(DateTimeWeekFieldElement);
213 static PassRefPtrWillBeRawPtr<DateTimeWeekFieldElement> create(Document&, FieldOwner&, const Range&);
216 DateTimeWeekFieldElement(Document&, FieldOwner&, const Range&);
218 // DateTimeFieldElement functions.
219 virtual void populateDateTimeFieldsState(DateTimeFieldsState&) OVERRIDE;
220 virtual void setValueAsDate(const DateComponents&) OVERRIDE;
221 virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) OVERRIDE;
224 class DateTimeYearFieldElement FINAL : public DateTimeNumericFieldElement {
225 WTF_MAKE_NONCOPYABLE(DateTimeYearFieldElement);
238 , minIsSpecified(false)
239 , maxIsSpecified(false)
244 static PassRefPtrWillBeRawPtr<DateTimeYearFieldElement> create(Document&, FieldOwner&, const Parameters&);
247 DateTimeYearFieldElement(Document&, FieldOwner&, const Parameters&);
249 // DateTimeFieldElement functions.
250 virtual void populateDateTimeFieldsState(DateTimeFieldsState&) OVERRIDE;
251 virtual void setValueAsDate(const DateComponents&) OVERRIDE;
252 virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) OVERRIDE;
254 // DateTimeNumericFieldElement functions.
255 virtual int defaultValueForStepDown() const OVERRIDE;
256 virtual int defaultValueForStepUp() const OVERRIDE;
258 bool m_minIsSpecified;
259 bool m_maxIsSpecified;
262 } // namespace WebCore