LibreOffice Module accessibility (master) 1
AccessibleBrowseBox.hxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19
20
21#pragma once
22
27#include <mutex>
28
29namespace accessibility {
30
31 class AccessibleBrowseBoxHeaderBar;
32 class AccessibleBrowseBoxTable;
33
34
37{
39
40protected:
42 const css::uno::Reference< css::accessibility::XAccessible >& _rxParent,
43 const css::uno::Reference< css::accessibility::XAccessible >& _rxCreator,
45 );
46
47 virtual ~AccessibleBrowseBox() override;
48
53 void setCreator(
54 const css::uno::Reference< css::accessibility::XAccessible >& _rxCreator
55 );
56
59 virtual void SAL_CALL disposing() override;
60
61protected:
62 // XAccessibleContext
63
65 virtual sal_Int64 SAL_CALL getAccessibleChildCount() override;
66
68 virtual css::uno::Reference<
69 css::accessibility::XAccessible > SAL_CALL
70 getAccessibleChild( sal_Int64 nChildIndex ) override;
71
72 // XAccessibleComponent
73
77 virtual css::uno::Reference<
78 css::accessibility::XAccessible > SAL_CALL
79 getAccessibleAtPoint( const css::awt::Point& rPoint ) override;
80
82 virtual void SAL_CALL grabFocus() override;
83
84 // XServiceInfo
85
89 virtual OUString SAL_CALL getImplementationName() override;
90
91public:
92 // helper functions
103 void commitHeaderBarEvent(sal_Int16 nEventId,
104 const css::uno::Any& rNewValue,
105 const css::uno::Any& rOldValue, bool _bColumnHeaderBar);
106
107 // helper functions
116 void commitTableEvent(sal_Int16 nEventId,
117 const css::uno::Any& rNewValue,
118 const css::uno::Any& rOldValue);
119
122 css::uno::Reference<
123 css::accessibility::XAccessible >
125 {
126 return implGetHeaderBar(_eObjType);
127 }
128
131 css::uno::Reference<
132 css::accessibility::XAccessible >
134 {
135 return implGetTable();
136 }
137
138protected:
139 // internal virtual methods
140
143 virtual tools::Rectangle implGetBoundingBox() override;
147
148 // internal helper methods
149
153 css::uno::Reference<
154 css::accessibility::XAccessible > implGetTable();
155
159 css::uno::Reference<
160 css::accessibility::XAccessible >
162
167 css::uno::Reference<
168 css::accessibility::XAccessible >
169 implGetFixedChild( sal_Int64 nChildIndex );
170
174
175private:
177 css::uno::WeakReference< css::accessibility::XAccessible > m_aCreator;
178
181
184
187};
188
189
196 public cppu::WeakImplHelper<css::accessibility::XAccessible>,
198{
199private:
200 std::mutex m_aMutex;
201 css::uno::Reference< css::accessibility::XAccessible >
204
206
207public:
209 css::uno::Reference< css::accessibility::XAccessible > _xParent,
211 );
212
215
216private:
217 virtual ~AccessibleBrowseBoxAccess() override;
218
219 // XAccessible
220 virtual css::uno::Reference< css::accessibility::XAccessibleContext >
221 SAL_CALL getAccessibleContext() override;
222
223 // IAccessibleBrowseBox
224 virtual css::uno::Reference< css::accessibility::XAccessible >
225 getMyself() override
226 {
227 return this;
228 }
229 void dispose() override;
230 virtual bool isAlive() const override
231 {
232 return m_xContext.is() && m_xContext->isAlive();
233 }
234 virtual css::uno::Reference< css::accessibility::XAccessible >
236 {
237 css::uno::Reference< css::accessibility::XAccessible > xAccessible;
238 AccessibleBrowseBox* pContext( getContext() );
239 if ( pContext )
240 xAccessible = pContext->getHeaderBar( _eObjType );
241 return xAccessible;
242 }
243 virtual css::uno::Reference< css::accessibility::XAccessible >
244 getTable() override
245 {
246 css::uno::Reference< css::accessibility::XAccessible > xAccessible;
247 AccessibleBrowseBox* pContext( getContext() );
248 if ( pContext )
249 xAccessible = pContext->getTable();
250 return xAccessible;
251 }
252 virtual void commitHeaderBarEvent( sal_Int16 nEventId, const css::uno::Any& rNewValue,
253 const css::uno::Any& rOldValue, bool _bColumnHeaderBar ) override
254 {
255 AccessibleBrowseBox* pContext( getContext() );
256 if ( pContext )
257 pContext->commitHeaderBarEvent( nEventId, rNewValue, rOldValue, _bColumnHeaderBar );
258 }
259 virtual void commitTableEvent( sal_Int16 nEventId,
260 const css::uno::Any& rNewValue, const css::uno::Any& rOldValue ) override
261 {
262 AccessibleBrowseBox* pContext( getContext() );
263 if ( pContext )
264 pContext->commitTableEvent( nEventId, rNewValue, rOldValue );
265 }
266 virtual void commitEvent( sal_Int16 nEventId,
267 const css::uno::Any& rNewValue, const css::uno::Any& rOldValue ) override
268 {
269 AccessibleBrowseBox* pContext( getContext() );
270 if ( pContext )
271 pContext->commitEvent( nEventId, rNewValue, rOldValue );
272 }
273
274private:
277};
278
279
280} // namespace accessibility
281
282
283
284/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
AccessibleBrowseBoxObjType
the XAccessible which creates/returns an AccessibleBrowseBox
virtual void commitEvent(sal_Int16 nEventId, const css::uno::Any &rNewValue, const css::uno::Any &rOldValue) override
virtual css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext() override
virtual void commitHeaderBarEvent(sal_Int16 nEventId, const css::uno::Any &rNewValue, const css::uno::Any &rOldValue, bool _bColumnHeaderBar) override
AccessibleBrowseBoxAccess & operator=(const AccessibleBrowseBoxAccess &)=delete
AccessibleBrowseBoxAccess(css::uno::Reference< css::accessibility::XAccessible > _xParent, ::vcl::IAccessibleTableProvider &_rBrowseBox)
::vcl::IAccessibleTableProvider & m_rBrowseBox
AccessibleBrowseBox * getContext()
returns the AccessibleContext belonging to this Accessible
virtual css::uno::Reference< css::accessibility::XAccessible > getMyself() override
AccessibleBrowseBoxAccess(const AccessibleBrowseBoxAccess &)=delete
virtual css::uno::Reference< css::accessibility::XAccessible > getHeaderBar(AccessibleBrowseBoxObjType _eObjType) override
css::uno::Reference< css::accessibility::XAccessible > m_xParent
virtual css::uno::Reference< css::accessibility::XAccessible > getTable() override
rtl::Reference< AccessibleBrowseBox > m_xContext
virtual void commitTableEvent(sal_Int16 nEventId, const css::uno::Any &rNewValue, const css::uno::Any &rOldValue) override
The BrowseBox accessible objects inherit from this base class.
virtual void SAL_CALL disposing() override
Commits DeFunc event to listeners and cleans up members.
void commitEvent(sal_Int16 nEventId, const css::uno::Any &rNewValue, const css::uno::Any &rOldValue)
Commits an event to all listeners.
This class represents the complete accessible BrowseBox object.
css::uno::Reference< css::accessibility::XAccessible > getTable()
returns the accessible object for the table representation
virtual tools::Rectangle implGetBoundingBoxOnScreen() override
css::uno::Reference< css::accessibility::XAccessible > implGetTable()
This method creates (once) and returns the accessible data table child.
css::uno::WeakReference< css::accessibility::XAccessible > m_aCreator
the css::accessibility::XAccessible which created the AccessibleBrowseBox
virtual rtl::Reference< AccessibleBrowseBoxTable > createAccessibleTable()
This method creates and returns an accessible table.
AccessibleBrowseBox(const css::uno::Reference< css::accessibility::XAccessible > &_rxParent, const css::uno::Reference< css::accessibility::XAccessible > &_rxCreator, ::vcl::IAccessibleTableProvider &_rBrowseBox)
css::uno::Reference< css::accessibility::XAccessible > implGetFixedChild(sal_Int64 nChildIndex)
This method returns one of the children that are always present: Data table, row and column header ba...
void setCreator(const css::uno::Reference< css::accessibility::XAccessible > &_rxCreator)
sets the XAccessible which created the context
virtual tools::Rectangle implGetBoundingBox() override
rtl::Reference< AccessibleBrowseBoxHeaderBar > mxColumnHeaderBar
The header bar for columns (first row of the table).
css::uno::Reference< css::accessibility::XAccessible > getHeaderBar(AccessibleBrowseBoxObjType _eObjType)
returns the accessible object for the row or the column header bar
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleChild(sal_Int64 nChildIndex) override
rtl::Reference< AccessibleBrowseBoxTable > mxTable
The data table child.
void commitHeaderBarEvent(sal_Int16 nEventId, const css::uno::Any &rNewValue, const css::uno::Any &rOldValue, bool _bColumnHeaderBar)
commitHeaderBarEvent commit the event at all listeners of the column/row header bar
virtual void SAL_CALL disposing() override
Commits DeFunc event to listeners and cleans up members.
virtual void SAL_CALL grabFocus() override
Grabs the focus to the BrowseBox.
rtl::Reference< AccessibleBrowseBoxHeaderBar > mxRowHeaderBar
The header bar for rows ("handle column").
css::uno::Reference< css::accessibility::XAccessible > implGetHeaderBar(AccessibleBrowseBoxObjType eObjType)
This method creates (once) and returns the specified header bar.
virtual OUString SAL_CALL getImplementationName() override
virtual sal_Int64 SAL_CALL getAccessibleChildCount() override
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint(const css::awt::Point &rPoint) override
void commitTableEvent(sal_Int16 nEventId, const css::uno::Any &rNewValue, const css::uno::Any &rOldValue)
commitTableEvent commit the event at all listeners of the table