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