|
1 /* -*- Mode: C++; tab-width: 4; 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_XULListboxAccessible_h__ |
|
7 #define mozilla_a11y_XULListboxAccessible_h__ |
|
8 |
|
9 #include "BaseAccessibles.h" |
|
10 #include "nsIAccessibleTable.h" |
|
11 #include "TableAccessible.h" |
|
12 #include "TableCellAccessible.h" |
|
13 #include "xpcAccessibleTable.h" |
|
14 #include "xpcAccessibleTableCell.h" |
|
15 #include "XULMenuAccessible.h" |
|
16 #include "XULSelectControlAccessible.h" |
|
17 |
|
18 class nsIWeakReference; |
|
19 |
|
20 namespace mozilla { |
|
21 namespace a11y { |
|
22 |
|
23 /** |
|
24 * XULColumAccessible are accessible for list and tree columns elements |
|
25 * (xul:treecols and xul:listcols). |
|
26 */ |
|
27 class XULColumAccessible : public AccessibleWrap |
|
28 { |
|
29 public: |
|
30 XULColumAccessible(nsIContent* aContent, DocAccessible* aDoc); |
|
31 |
|
32 // Accessible |
|
33 virtual a11y::role NativeRole(); |
|
34 virtual uint64_t NativeState(); |
|
35 }; |
|
36 |
|
37 /** |
|
38 * XULColumnItemAccessible are accessibles for list and tree column elements |
|
39 * (xul:listcol and xul:treecol). |
|
40 */ |
|
41 class XULColumnItemAccessible : public LeafAccessible |
|
42 { |
|
43 public: |
|
44 XULColumnItemAccessible(nsIContent* aContent, DocAccessible* aDoc); |
|
45 |
|
46 // nsIAccessible |
|
47 NS_IMETHOD GetActionName(uint8_t aIndex, nsAString& aName); |
|
48 NS_IMETHOD DoAction(uint8_t aIndex); |
|
49 |
|
50 // Accessible |
|
51 virtual a11y::role NativeRole(); |
|
52 virtual uint64_t NativeState(); |
|
53 |
|
54 // ActionAccessible |
|
55 virtual uint8_t ActionCount(); |
|
56 |
|
57 enum { eAction_Click = 0 }; |
|
58 }; |
|
59 |
|
60 /* |
|
61 * A class the represents the XUL Listbox widget. |
|
62 */ |
|
63 class XULListboxAccessible : public XULSelectControlAccessible, |
|
64 public xpcAccessibleTable, |
|
65 public nsIAccessibleTable, |
|
66 public TableAccessible |
|
67 { |
|
68 public: |
|
69 XULListboxAccessible(nsIContent* aContent, DocAccessible* aDoc); |
|
70 virtual ~XULListboxAccessible() {} |
|
71 |
|
72 NS_DECL_ISUPPORTS_INHERITED |
|
73 |
|
74 // nsIAccessibleTable |
|
75 NS_FORWARD_NSIACCESSIBLETABLE(xpcAccessibleTable::) |
|
76 |
|
77 // TableAccessible |
|
78 virtual uint32_t ColCount(); |
|
79 virtual uint32_t RowCount(); |
|
80 virtual Accessible* CellAt(uint32_t aRowIndex, uint32_t aColumnIndex); |
|
81 virtual bool IsColSelected(uint32_t aColIdx); |
|
82 virtual bool IsRowSelected(uint32_t aRowIdx); |
|
83 virtual bool IsCellSelected(uint32_t aRowIdx, uint32_t aColIdx); |
|
84 virtual uint32_t SelectedCellCount(); |
|
85 virtual uint32_t SelectedColCount(); |
|
86 virtual uint32_t SelectedRowCount(); |
|
87 virtual void SelectedCells(nsTArray<Accessible*>* aCells); |
|
88 virtual void SelectedCellIndices(nsTArray<uint32_t>* aCells); |
|
89 virtual void SelectedColIndices(nsTArray<uint32_t>* aCols); |
|
90 virtual void SelectedRowIndices(nsTArray<uint32_t>* aRows); |
|
91 virtual void SelectRow(uint32_t aRowIdx); |
|
92 virtual void UnselectRow(uint32_t aRowIdx); |
|
93 virtual Accessible* AsAccessible() { return this; } |
|
94 |
|
95 // Accessible |
|
96 virtual void Shutdown(); |
|
97 virtual void Value(nsString& aValue); |
|
98 virtual TableAccessible* AsTable() { return this; } |
|
99 virtual a11y::role NativeRole(); |
|
100 virtual uint64_t NativeState(); |
|
101 |
|
102 // Widgets |
|
103 virtual bool IsWidget() const; |
|
104 virtual bool IsActiveWidget() const; |
|
105 virtual bool AreItemsOperable() const; |
|
106 |
|
107 virtual Accessible* ContainerWidget() const; |
|
108 |
|
109 protected: |
|
110 bool IsMulticolumn(); |
|
111 }; |
|
112 |
|
113 /** |
|
114 * Listitems -- used in listboxes |
|
115 */ |
|
116 class XULListitemAccessible : public XULMenuitemAccessible |
|
117 { |
|
118 public: |
|
119 enum { eAction_Click = 0 }; |
|
120 |
|
121 NS_DECL_ISUPPORTS_INHERITED |
|
122 |
|
123 XULListitemAccessible(nsIContent* aContent, DocAccessible* aDoc); |
|
124 virtual ~XULListitemAccessible() {} |
|
125 |
|
126 // nsIAccessible |
|
127 NS_IMETHOD GetActionName(uint8_t index, nsAString& aName); |
|
128 // Don't use XUL menuitems's description attribute |
|
129 |
|
130 // Accessible |
|
131 virtual void Description(nsString& aDesc); |
|
132 virtual a11y::role NativeRole(); |
|
133 virtual uint64_t NativeState(); |
|
134 virtual uint64_t NativeInteractiveState() const; |
|
135 virtual bool CanHaveAnonChildren(); |
|
136 |
|
137 // Widgets |
|
138 virtual Accessible* ContainerWidget() const; |
|
139 |
|
140 protected: |
|
141 // Accessible |
|
142 virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE; |
|
143 |
|
144 // XULListitemAccessible |
|
145 |
|
146 /** |
|
147 * Return listbox accessible for the listitem. |
|
148 */ |
|
149 Accessible* GetListAccessible(); |
|
150 |
|
151 private: |
|
152 bool mIsCheckbox; |
|
153 }; |
|
154 |
|
155 /** |
|
156 * Class represents xul:listcell. |
|
157 */ |
|
158 class XULListCellAccessible : public HyperTextAccessibleWrap, |
|
159 public nsIAccessibleTableCell, |
|
160 public TableCellAccessible, |
|
161 public xpcAccessibleTableCell |
|
162 { |
|
163 public: |
|
164 XULListCellAccessible(nsIContent* aContent, DocAccessible* aDoc); |
|
165 |
|
166 // nsISupports |
|
167 NS_DECL_ISUPPORTS_INHERITED |
|
168 |
|
169 // nsIAccessibleTableCell |
|
170 NS_FORWARD_NSIACCESSIBLETABLECELL(xpcAccessibleTableCell::) |
|
171 |
|
172 // Accessible |
|
173 virtual TableCellAccessible* AsTableCell() { return this; } |
|
174 virtual void Shutdown(); |
|
175 virtual already_AddRefed<nsIPersistentProperties> NativeAttributes() MOZ_OVERRIDE; |
|
176 virtual a11y::role NativeRole(); |
|
177 |
|
178 // TableCellAccessible |
|
179 virtual TableAccessible* Table() const MOZ_OVERRIDE; |
|
180 virtual uint32_t ColIdx() const MOZ_OVERRIDE; |
|
181 virtual uint32_t RowIdx() const MOZ_OVERRIDE; |
|
182 virtual void ColHeaderCells(nsTArray<Accessible*>* aHeaderCells) MOZ_OVERRIDE; |
|
183 virtual bool Selected() MOZ_OVERRIDE; |
|
184 }; |
|
185 |
|
186 } // namespace a11y |
|
187 } // namespace mozilla |
|
188 |
|
189 #endif |