LibreOffice Module accessibility (master) 1
AccessibleGridControlBase.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
24#include <rtl/ustring.hxx>
25#include <rtl/ref.hxx>
26#include <tools/gen.hxx>
30#include <com/sun/star/lang/XServiceInfo.hpp>
31#include <com/sun/star/accessibility/XAccessible.hpp>
32#include <com/sun/star/accessibility/XAccessibleContext.hpp>
33#include <com/sun/star/accessibility/XAccessibleComponent.hpp>
34#include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp>
36#include <comphelper/uno3.hxx>
37
38
39namespace vcl { class Window; }
40
41
42namespace accessibility {
43
44typedef ::cppu::WeakComponentImplHelper<
45 css::accessibility::XAccessibleContext,
46 css::accessibility::XAccessibleComponent,
47 css::accessibility::XAccessibleEventBroadcaster,
48 css::lang::XServiceInfo >
50
55 public ::cppu::BaseMutex,
57{
58public:
64 css::uno::Reference< css::accessibility::XAccessible > xParent,
67
68protected:
69 virtual ~AccessibleGridControlBase() override;
70
72 virtual void SAL_CALL disposing() override;
73
74public:
75 // XAccessibleContext
76
78 virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL
79 getAccessibleParent() override;
80
82 virtual sal_Int64 SAL_CALL getAccessibleIndexInParent() override;
83
87 virtual OUString SAL_CALL getAccessibleDescription() override;
88
92 virtual OUString SAL_CALL getAccessibleName() override;
93
97 virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL
98 getAccessibleRelationSet() override;
99
101 virtual sal_Int64 SAL_CALL getAccessibleStateSet() override;
102
104 virtual css::lang::Locale SAL_CALL getLocale() override;
105
109 virtual sal_Int16 SAL_CALL getAccessibleRole() override;
110
111 /* Derived classes have to implement:
112 - getAccessibleChildCount,
113 - getAccessibleChild,
114 - getAccessibleRole.
115 Derived classes may overwrite getAccessibleIndexInParent to increase
116 performance. */
117
118 // XAccessibleComponent
119
122 virtual sal_Bool SAL_CALL containsPoint( const css::awt::Point& rPoint ) override;
123
125 virtual css::awt::Rectangle SAL_CALL getBounds() override;
126
129 virtual css::awt::Point SAL_CALL getLocation() override;
130
133 virtual css::awt::Point SAL_CALL getLocationOnScreen() override;
134
136 virtual css::awt::Size SAL_CALL getSize() override;
137
138 virtual sal_Int32 SAL_CALL getForeground( ) override;
139 virtual sal_Int32 SAL_CALL getBackground( ) override;
140
141
142 /* Derived classes have to implement:
143 - getAccessibleAt,
144 - grabFocus. */
145
149 virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL
150 getAccessibleAtPoint( const css::awt::Point& rPoint ) override;
151
152 // XAccessibleEventBroadcaster
153
155 virtual void SAL_CALL addAccessibleEventListener(
156 const css::uno::Reference< css::accessibility::XAccessibleEventListener>& rxListener ) override;
157
159 virtual void SAL_CALL removeAccessibleEventListener(
160 const css::uno::Reference< css::accessibility::XAccessibleEventListener>& rxListener ) override;
161
162 // XTypeProvider
163
165 virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() override;
166
167 // XServiceInfo
168
170 virtual sal_Bool SAL_CALL supportsService( const OUString& rServiceName ) override;
171
173 virtual css::uno::Sequence< OUString > SAL_CALL
174 getSupportedServiceNames() override;
175
176 /* Derived classes have to implement:
177 - getImplementationName. */
178
179 // helper methods
180
182 inline ::vcl::table::AccessibleTableControlObjType getType() const;
183
185 virtual void commitEvent(sal_Int16 nEventId, const css::uno::Any& rNewValue,
186 const css::uno::Any& rOldValue);
188 bool isAlive() const;
189
190protected:
191 // internal virtual methods
192
198 bool implIsShowing();
199
205 // @attention This method requires locked mutex's and a living object.
206 // @return The bounding box (VCL rect.) in screen coordinates. */
208
215 virtual sal_Int64 implCreateStateSet();
216
217 // internal helper methods
218
220 void ensureIsAlive() const;
221
229 // coordinates.
230 // @return The bounding box (VCL rect.) in screen coordinates. */
233
236
237protected:
238 // members
239
241 css::uno::Reference< css::accessibility::XAccessible > m_xParent;
246
247private:
249};
250
251
252// a version of AccessibleGridControlBase which implements not only the XAccessibleContext,
253// but also the XAccessible
254
255typedef ::cppu::ImplHelper1 < css::accessibility::XAccessible
257
261{
262protected:
270 const css::uno::Reference< css::accessibility::XAccessible >& rxParent,
273
274public:
275 // XInterface
277 // XTypeProvider
279
280protected:
281 virtual ~GridControlAccessibleElement() override;
282
283protected:
284 // XAccessible
285
287 virtual css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL
288 getAccessibleContext() override;
289
290private:
293};
294
295// inlines
296
297inline ::vcl::table::AccessibleTableControlObjType AccessibleGridControlBase::getType() const
298{
299 return m_eObjType;
300}
301
302
303} // namespace accessibility
304
305
306
307/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
The GridControl accessible objects inherit from this base class.
css::uno::Reference< css::accessibility::XAccessible > m_xParent
The parent accessible object.
::vcl::table::IAccessibleTable & m_aTable
The SVT Table control.
virtual OUString SAL_CALL getAccessibleDescription() override
virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() override
virtual sal_Int64 SAL_CALL getAccessibleIndexInParent() override
virtual void commitEvent(sal_Int16 nEventId, const css::uno::Any &rNewValue, const css::uno::Any &rOldValue)
Commits an event to all listeners.
tools::Rectangle getBoundingBoxOnScreen()
‍** Locks all mutex's and calculates the bounding box in screen
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleParent() override
virtual void SAL_CALL removeAccessibleEventListener(const css::uno::Reference< css::accessibility::XAccessibleEventListener > &rxListener) override
Removes an event listener.
virtual css::awt::Rectangle SAL_CALL getBounds() override
virtual css::lang::Locale SAL_CALL getLocale() override
virtual css::awt::Point SAL_CALL getLocation() override
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
bool implIsShowing()
Determines whether the Grid control is really showing inside of its parent accessible window.
virtual tools::Rectangle implGetBoundingBoxOnScreen()=0
‍** Derived classes return the bounding box in screen coordinates.
AccessibleGridControlBase(css::uno::Reference< css::accessibility::XAccessible > xParent, ::vcl::table::IAccessibleTable &rTable, ::vcl::table::AccessibleTableControlObjType eObjType)
Constructor.
virtual OUString SAL_CALL getAccessibleName() override
virtual sal_Int64 implCreateStateSet()
Creates a bitset of states of the current object.
virtual css::awt::Size SAL_CALL getSize() override
::comphelper::AccessibleEventNotifier::TClientId m_aClientId
virtual void SAL_CALL disposing() override
Commits DeFunc event to listeners and cleans up members.
void setClientId(::comphelper::AccessibleEventNotifier::TClientId _aNewClientId)
inline ::vcl::table::AccessibleTableControlObjType getType() const
virtual sal_Int32 SAL_CALL getForeground() override
virtual sal_Int64 SAL_CALL getAccessibleStateSet() override
virtual void SAL_CALL addAccessibleEventListener(const css::uno::Reference< css::accessibility::XAccessibleEventListener > &rxListener) override
Adds a new event listener.
::comphelper::AccessibleEventNotifier::TClientId getClientId() const
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint(const css::awt::Point &rPoint) override
virtual sal_Bool SAL_CALL containsPoint(const css::awt::Point &rPoint) override
virtual css::awt::Point SAL_CALL getLocationOnScreen() override
tools::Rectangle getBoundingBox()
Locks all mutex's and calculates the bounding box relative to the parent window.
virtual sal_Bool SAL_CALL supportsService(const OUString &rServiceName) override
virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet() override
virtual tools::Rectangle implGetBoundingBox()=0
Derived classes return the bounding box relative to the parent window.
::vcl::table::AccessibleTableControlObjType m_eObjType
The type of this object (for names, descriptions, state sets, ...).
virtual sal_Int16 SAL_CALL getAccessibleRole() override
virtual sal_Int32 SAL_CALL getBackground() override
GridControlAccessibleElement & operator=(const GridControlAccessibleElement &)=delete
GridControlAccessibleElement(const css::uno::Reference< css::accessibility::XAccessible > &rxParent, ::vcl::table::IAccessibleTable &rTable, ::vcl::table::AccessibleTableControlObjType eObjType)
Constructor sets specified name and description.
virtual css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext() override
GridControlAccessibleElement(const GridControlAccessibleElement &)=delete
::cppu::WeakComponentImplHelper< css::accessibility::XAccessibleContext, css::accessibility::XAccessibleComponent, css::accessibility::XAccessibleEventBroadcaster, css::lang::XServiceInfo > AccessibleGridControlImplHelper
::cppu::ImplHelper1< css::accessibility::XAccessible > GridControlAccessibleElement_Base
AccessibleTableControlObjType
unsigned char sal_Bool
#define DECLARE_XTYPEPROVIDER()
#define DECLARE_XINTERFACE()