1 : /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 : /* ***** BEGIN LICENSE BLOCK *****
3 : * Version: MPL 1.1/GPL 2.0/LGPL 2.1
4 : *
5 : * The contents of this file are subject to the Mozilla Public License Version
6 : * 1.1 (the "License"); you may not use this file except in compliance with
7 : * the License. You may obtain a copy of the License at
8 : * http://www.mozilla.org/MPL/
9 : *
10 : * Software distributed under the License is distributed on an "AS IS" basis,
11 : * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12 : * for the specific language governing rights and limitations under the
13 : * License.
14 : *
15 : * The Original Code is mozilla.org code.
16 : *
17 : * The Initial Developer of the Original Code is
18 : * Mozilla Foundation.
19 : * Portions created by the Initial Developer are Copyright (C) 2006
20 : * the Initial Developer. All Rights Reserved.
21 : *
22 : * Contributor(s):
23 : * Alexander Surkov <surkov.alexander@gmail.com> (original author)
24 : *
25 : * Alternatively, the contents of this file may be used under the terms of
26 : * either of the GNU General Public License Version 2 or later (the "GPL"),
27 : * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
28 : * in which case the provisions of the GPL or the LGPL are applicable instead
29 : * of those above. If you wish to allow use of your version of this file only
30 : * under the terms of either the GPL or the LGPL, and not to allow others to
31 : * use your version of this file under the terms of the MPL, indicate your
32 : * decision by deleting the provisions above and replace them with the notice
33 : * and other provisions required by the GPL or the LGPL. If you do not delete
34 : * the provisions above, a recipient may use your version of this file under
35 : * the terms of any one of the MPL, the GPL or the LGPL.
36 : *
37 : * ***** END LICENSE BLOCK ***** */
38 :
39 : #ifndef _nsXFormsFormControlsAccessible_H_
40 : #define _nsXFormsFormControlsAccessible_H_
41 :
42 : #include "nsXFormsAccessible.h"
43 :
44 : /**
45 : * Accessible object for xforms:label.
46 : */
47 :
48 : class nsXFormsLabelAccessible : public nsXFormsAccessible
49 0 : {
50 : public:
51 : nsXFormsLabelAccessible(nsIContent* aContent, nsDocAccessible* aDoc);
52 :
53 : // nsAccessible
54 : virtual void Description(nsString& aDescription);
55 : virtual nsresult GetNameInternal(nsAString& aName);
56 : virtual mozilla::a11y::role NativeRole();
57 : };
58 :
59 : /**
60 : * Accessible object for xforms:output.
61 : */
62 :
63 : class nsXFormsOutputAccessible : public nsXFormsAccessible
64 0 : {
65 : public:
66 : nsXFormsOutputAccessible(nsIContent* aContent, nsDocAccessible* aDoc);
67 :
68 : // nsAccessible
69 : virtual mozilla::a11y::role NativeRole();
70 : };
71 :
72 : /**
73 : * Accessible object for xforms:trigger and xforms:submit.
74 : */
75 :
76 : class nsXFormsTriggerAccessible : public nsXFormsAccessible
77 0 : {
78 : public:
79 : nsXFormsTriggerAccessible(nsIContent* aContent, nsDocAccessible* aDoc);
80 :
81 : // nsIAccessible
82 : NS_IMETHOD GetValue(nsAString& aValue);
83 :
84 : NS_IMETHOD GetActionName(PRUint8 aIndex, nsAString& aName);
85 : NS_IMETHOD DoAction(PRUint8 aIndex);
86 :
87 : // nsAccessible
88 : virtual mozilla::a11y::role NativeRole();
89 :
90 : // ActionAccessible
91 : virtual PRUint8 ActionCount();
92 : };
93 :
94 : /**
95 : * Accessible object for xforms:input and xforms:textarea.
96 : */
97 :
98 : class nsXFormsInputAccessible : public nsXFormsEditableAccessible
99 0 : {
100 : public:
101 : nsXFormsInputAccessible(nsIContent* aContent, nsDocAccessible* aDoc);
102 :
103 : NS_DECL_ISUPPORTS_INHERITED
104 :
105 : // nsIAccessible
106 : NS_IMETHOD GetActionName(PRUint8 aIndex, nsAString& aName);
107 : NS_IMETHOD DoAction(PRUint8 aIndex);
108 :
109 : // nsAccessible
110 : virtual mozilla::a11y::role NativeRole();
111 :
112 : // ActionAccessible
113 : virtual PRUint8 ActionCount();
114 : };
115 :
116 : /**
117 : * Accessible object for xforms:input[type="xsd:boolean"].
118 : */
119 :
120 : class nsXFormsInputBooleanAccessible : public nsXFormsAccessible
121 0 : {
122 : public:
123 : nsXFormsInputBooleanAccessible(nsIContent* aContent, nsDocAccessible* aDoc);
124 :
125 : // nsIAccessible
126 : NS_IMETHOD GetActionName(PRUint8 aIndex, nsAString& aName);
127 : NS_IMETHOD DoAction(PRUint8 aIndex);
128 :
129 : // nsAccessible
130 : virtual mozilla::a11y::role NativeRole();
131 : virtual PRUint64 NativeState();
132 :
133 : // ActionAccessible
134 : virtual PRUint8 ActionCount();
135 : };
136 :
137 : /**
138 : * Accessible object for xforms:input[type="xsd:date"].
139 : */
140 :
141 : class nsXFormsInputDateAccessible : public nsXFormsContainerAccessible
142 0 : {
143 : public:
144 : nsXFormsInputDateAccessible(nsIContent* aContent, nsDocAccessible* aDoc);
145 :
146 : // nsAccessible
147 : virtual mozilla::a11y::role NativeRole();
148 : };
149 :
150 : /**
151 : * Accessible object for xforms:secret.
152 : */
153 :
154 : class nsXFormsSecretAccessible : public nsXFormsInputAccessible
155 0 : {
156 : public:
157 : nsXFormsSecretAccessible(nsIContent* aContent, nsDocAccessible* aDoc);
158 :
159 : // nsIAccessible
160 : NS_IMETHOD GetValue(nsAString& aValue);
161 :
162 : // nsAccessible
163 : virtual mozilla::a11y::role NativeRole();
164 : virtual PRUint64 NativeState();
165 : };
166 :
167 :
168 : /**
169 : * Accessible object for xforms:range.
170 : */
171 :
172 : class nsXFormsRangeAccessible : public nsXFormsAccessible
173 0 : {
174 : public:
175 : nsXFormsRangeAccessible(nsIContent* aContent, nsDocAccessible* aDoc);
176 :
177 : // nsIAccessibleValue
178 : NS_IMETHOD GetMaximumValue(double *aMaximumValue);
179 : NS_IMETHOD GetMinimumValue(double *aMinimumValue);
180 : NS_IMETHOD GetMinimumIncrement(double *aMinimumIncrement);
181 : NS_IMETHOD GetCurrentValue(double *aCurrentValue);
182 :
183 : // nsAccessible
184 : virtual mozilla::a11y::role NativeRole();
185 : virtual PRUint64 NativeState();
186 : };
187 :
188 :
189 : /**
190 : * Accessible object for xforms:select and xforms:select1 that are implemented
191 : * using host document's native widget.
192 : */
193 :
194 : class nsXFormsSelectAccessible : public nsXFormsContainerAccessible
195 0 : {
196 : public:
197 : nsXFormsSelectAccessible(nsIContent* aContent, nsDocAccessible* aDoc);
198 :
199 : // nsAccessible
200 : virtual PRUint64 NativeState();
201 : };
202 :
203 :
204 : /**
205 : * Accessible object for xforms:choices.
206 : */
207 :
208 : class nsXFormsChoicesAccessible : public nsXFormsAccessible
209 0 : {
210 : public:
211 : nsXFormsChoicesAccessible(nsIContent* aContent, nsDocAccessible* aDoc);
212 :
213 : // nsIAccessible
214 : NS_IMETHOD GetValue(nsAString& aValue);
215 :
216 : // nsAccessible
217 : virtual mozilla::a11y::role NativeRole();
218 :
219 : protected:
220 : // nsAccessible
221 : virtual void CacheChildren();
222 : };
223 :
224 :
225 : /**
226 : * Accessible object for xforms:select/xforms:select1 of full appearance that
227 : * may be represented by group of checkboxes or radiogroup.
228 : */
229 :
230 : class nsXFormsSelectFullAccessible : public nsXFormsSelectableAccessible
231 0 : {
232 : public:
233 : nsXFormsSelectFullAccessible(nsIContent* aContent, nsDocAccessible* aDoc);
234 :
235 : // nsAccessible
236 : virtual mozilla::a11y::role NativeRole();
237 :
238 : protected:
239 : // nsAccessible
240 : virtual void CacheChildren();
241 : };
242 :
243 :
244 : /**
245 : * Accessible object for a xforms:item when it is represented by a checkbox.
246 : * This occurs when the item is contained in a xforms:select with full
247 : * appearance. Such a xforms:select is represented by a checkgroup.
248 : */
249 :
250 : class nsXFormsItemCheckgroupAccessible : public nsXFormsSelectableItemAccessible
251 0 : {
252 : public:
253 : nsXFormsItemCheckgroupAccessible(nsIContent* aContent,
254 : nsDocAccessible* aDoc);
255 :
256 : // nsIAccessible
257 : NS_IMETHOD GetActionName(PRUint8 aIndex, nsAString& aName);
258 :
259 : // nsAccessible
260 : virtual mozilla::a11y::role NativeRole();
261 : virtual PRUint64 NativeState();
262 : };
263 :
264 :
265 : /**
266 : * Accessible object for a xforms:item when it is represented by a radiobutton.
267 : * This occurs when the item is contained in a xforms:select1 with full
268 : * appearance. Such a xforms:select1 is represented as a radiogroup.
269 : */
270 :
271 : class nsXFormsItemRadiogroupAccessible : public nsXFormsSelectableItemAccessible
272 0 : {
273 : public:
274 : nsXFormsItemRadiogroupAccessible(nsIContent* aContent,
275 : nsDocAccessible* aDoc);
276 :
277 : // nsIAccessible
278 : NS_IMETHOD GetActionName(PRUint8 aIndex, nsAString& aName);
279 :
280 : // nsAccessible
281 : virtual mozilla::a11y::role NativeRole();
282 : virtual PRUint64 NativeState();
283 : };
284 :
285 :
286 : /**
287 : * Accessible object for xforms:select1 of minimal appearance that is
288 : * represented by combobox.
289 : */
290 :
291 : class nsXFormsSelectComboboxAccessible : public nsXFormsSelectableAccessible
292 0 : {
293 : public:
294 : nsXFormsSelectComboboxAccessible(nsIContent* aContent,
295 : nsDocAccessible* aDoc);
296 :
297 : // nsAccessible
298 : virtual mozilla::a11y::role NativeRole();
299 : virtual PRUint64 NativeState();
300 : virtual bool CanHaveAnonChildren();
301 : };
302 :
303 :
304 : /**
305 : * Accessible object for xforms:item element when it is represented by a
306 : * listitem. This occurs when the item is contained in a xforms:select with
307 : * minimal appearance. Such a xforms:select is represented by a combobox.
308 : */
309 :
310 : class nsXFormsItemComboboxAccessible : public nsXFormsSelectableItemAccessible
311 0 : {
312 : public:
313 : nsXFormsItemComboboxAccessible(nsIContent* aContent,
314 : nsDocAccessible* aDoc);
315 :
316 : // nsIAccessible
317 : NS_IMETHOD GetActionName(PRUint8 aIndex, nsAString& aName);
318 :
319 : // nsAccessible
320 : virtual mozilla::a11y::role NativeRole();
321 : virtual PRUint64 NativeState();
322 : };
323 :
324 : #endif
325 :
|