accessible/src/xul/XULListboxAccessible.h

branch
TOR_BUG_9701
changeset 15
b8a032363ba2
equal deleted inserted replaced
-1:000000000000 0:223e812d2b67
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

mercurial