accessible/src/xul/XULFormControlAccessible.h

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:610d089b5522
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5
6 #ifndef MOZILLA_A11Y_XULFormControlAccessible_H_
7 #define MOZILLA_A11Y_XULFormControlAccessible_H_
8
9 // NOTE: alphabetically ordered
10 #include "AccessibleWrap.h"
11 #include "FormControlAccessible.h"
12 #include "HyperTextAccessibleWrap.h"
13 #include "XULSelectControlAccessible.h"
14
15 namespace mozilla {
16 namespace a11y {
17
18 /**
19 * Used for XUL progressmeter element.
20 */
21 typedef ProgressMeterAccessible<100> XULProgressMeterAccessible;
22
23 /**
24 * Used for XUL button.
25 *
26 * @note Don't inherit from LeafAccessible - it doesn't allow children
27 * and a button can have a dropmarker child.
28 */
29 class XULButtonAccessible : public AccessibleWrap
30 {
31 public:
32 enum { eAction_Click = 0 };
33 XULButtonAccessible(nsIContent* aContent, DocAccessible* aDoc);
34
35 // nsISupports
36 NS_DECL_ISUPPORTS_INHERITED
37
38 // nsIAccessible
39 NS_IMETHOD GetActionName(uint8_t aIndex, nsAString& aName);
40 NS_IMETHOD DoAction(uint8_t index);
41
42 // Accessible
43 virtual mozilla::a11y::role NativeRole();
44 virtual uint64_t NativeState();
45
46 // ActionAccessible
47 virtual uint8_t ActionCount();
48
49 // Widgets
50 virtual bool IsWidget() const;
51 virtual bool IsActiveWidget() const;
52 virtual bool AreItemsOperable() const;
53 virtual Accessible* ContainerWidget() const;
54
55 virtual bool IsAcceptableChild(Accessible* aPossibleChild) const MOZ_OVERRIDE;
56
57 protected:
58 // XULButtonAccessible
59 bool ContainsMenu();
60 };
61
62
63 /**
64 * Used for XUL checkbox element.
65 */
66 class XULCheckboxAccessible : public LeafAccessible
67 {
68 public:
69 enum { eAction_Click = 0 };
70 XULCheckboxAccessible(nsIContent* aContent, DocAccessible* aDoc);
71
72 // nsIAccessible
73 NS_IMETHOD GetActionName(uint8_t aIndex, nsAString& aName);
74 NS_IMETHOD DoAction(uint8_t index);
75
76 // Accessible
77 virtual mozilla::a11y::role NativeRole();
78 virtual uint64_t NativeState();
79
80 // ActionAccessible
81 virtual uint8_t ActionCount();
82 };
83
84 /**
85 * Used for XUL dropmarker element.
86 */
87 class XULDropmarkerAccessible : public LeafAccessible
88 {
89 public:
90 enum { eAction_Click = 0 };
91 XULDropmarkerAccessible(nsIContent* aContent, DocAccessible* aDoc);
92
93 // nsIAccessible
94 NS_IMETHOD GetActionName(uint8_t aIndex, nsAString& aName);
95 NS_IMETHOD DoAction(uint8_t index);
96
97 // Accessible
98 virtual mozilla::a11y::role NativeRole();
99 virtual uint64_t NativeState();
100
101 // ActionAccessible
102 virtual uint8_t ActionCount();
103
104 private:
105 bool DropmarkerOpen(bool aToggleOpen);
106 };
107
108 /**
109 * Used for XUL groupbox element.
110 */
111 class XULGroupboxAccessible : public AccessibleWrap
112 {
113 public:
114 XULGroupboxAccessible(nsIContent* aContent, DocAccessible* aDoc);
115
116 // Accessible
117 virtual mozilla::a11y::role NativeRole();
118 virtual Relation RelationByType(RelationType aType) MOZ_OVERRIDE;
119
120 protected:
121 // Accessible
122 virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;
123 };
124
125 /**
126 * Used for XUL radio element (radio button).
127 */
128 class XULRadioButtonAccessible : public RadioButtonAccessible
129 {
130
131 public:
132 XULRadioButtonAccessible(nsIContent* aContent, DocAccessible* aDoc);
133
134 // Accessible
135 virtual uint64_t NativeState();
136 virtual uint64_t NativeInteractiveState() const;
137
138 // Widgets
139 virtual Accessible* ContainerWidget() const;
140 };
141
142 /**
143 * Used for XUL radiogroup element.
144 */
145 class XULRadioGroupAccessible : public XULSelectControlAccessible
146 {
147 public:
148 XULRadioGroupAccessible(nsIContent* aContent, DocAccessible* aDoc);
149
150 // Accessible
151 virtual mozilla::a11y::role NativeRole();
152 virtual uint64_t NativeInteractiveState() const;
153
154 // Widgets
155 virtual bool IsWidget() const;
156 virtual bool IsActiveWidget() const;
157 virtual bool AreItemsOperable() const;
158 };
159
160 /**
161 * Used for XUL statusbar element.
162 */
163 class XULStatusBarAccessible : public AccessibleWrap
164 {
165 public:
166 XULStatusBarAccessible(nsIContent* aContent, DocAccessible* aDoc);
167
168 // Accessible
169 virtual mozilla::a11y::role NativeRole();
170 };
171
172 /**
173 * Used for XUL toolbarbutton element.
174 */
175 class XULToolbarButtonAccessible : public XULButtonAccessible
176 {
177 public:
178 XULToolbarButtonAccessible(nsIContent* aContent, DocAccessible* aDoc);
179
180 // Accessible
181 virtual void GetPositionAndSizeInternal(int32_t *aPosInSet,
182 int32_t *aSetSize);
183
184 // nsXULToolbarButtonAccessible
185 static bool IsSeparator(Accessible* aAccessible);
186 };
187
188 /**
189 * Used for XUL toolbar element.
190 */
191 class XULToolbarAccessible : public AccessibleWrap
192 {
193 public:
194 XULToolbarAccessible(nsIContent* aContent, DocAccessible* aDoc);
195
196 // Accessible
197 virtual mozilla::a11y::role NativeRole();
198
199 protected:
200 // Accessible
201 virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;
202 };
203
204 /**
205 * Used for XUL toolbarseparator element.
206 */
207 class XULToolbarSeparatorAccessible : public LeafAccessible
208 {
209 public:
210 XULToolbarSeparatorAccessible(nsIContent* aContent,
211 DocAccessible* aDoc);
212
213 // Accessible
214 virtual mozilla::a11y::role NativeRole();
215 virtual uint64_t NativeState();
216 };
217
218 } // namespace a11y
219 } // namespace mozilla
220
221 #endif
222

mercurial