xref: /AOO41X/main/chart2/source/controller/inc/AccessibleBase.hxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir #ifndef _CHART2_ACCESSIBLEBASE_HXX_
28*cdf0e10cSrcweir #define _CHART2_ACCESSIBLEBASE_HXX_
29*cdf0e10cSrcweir 
30*cdf0e10cSrcweir #include "ObjectIdentifier.hxx"
31*cdf0e10cSrcweir 
32*cdf0e10cSrcweir #include <com/sun/star/chart2/XChartDocument.hpp>
33*cdf0e10cSrcweir #include <com/sun/star/accessibility/XAccessible.hpp>
34*cdf0e10cSrcweir #include <com/sun/star/accessibility/XAccessibleContext.hpp>
35*cdf0e10cSrcweir #include <com/sun/star/accessibility/XAccessibleComponent.hpp>
36*cdf0e10cSrcweir #include <com/sun/star/lang/XServiceInfo.hpp>
37*cdf0e10cSrcweir #include <com/sun/star/document/XEventListener.hpp>
38*cdf0e10cSrcweir #include <com/sun/star/lang/XEventListener.hpp>
39*cdf0e10cSrcweir #include <com/sun/star/lang/DisposedException.hpp>
40*cdf0e10cSrcweir #include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp>
41*cdf0e10cSrcweir #include <com/sun/star/view/XSelectionSupplier.hpp>
42*cdf0e10cSrcweir #include <comphelper/accessibleeventnotifier.hxx>
43*cdf0e10cSrcweir #include <cppuhelper/compbase6.hxx>
44*cdf0e10cSrcweir #include <cppuhelper/interfacecontainer.hxx>
45*cdf0e10cSrcweir #include <unotools/accessiblestatesethelper.hxx>
46*cdf0e10cSrcweir 
47*cdf0e10cSrcweir #include <vector>
48*cdf0e10cSrcweir #include <map>
49*cdf0e10cSrcweir #include <boost/shared_ptr.hpp>
50*cdf0e10cSrcweir 
51*cdf0e10cSrcweir #include "MutexContainer.hxx"
52*cdf0e10cSrcweir 
53*cdf0e10cSrcweir class SfxItemSet;
54*cdf0e10cSrcweir class SdrObject;
55*cdf0e10cSrcweir class SdrView;
56*cdf0e10cSrcweir 
57*cdf0e10cSrcweir namespace accessibility
58*cdf0e10cSrcweir {
59*cdf0e10cSrcweir class IAccessibleViewForwarder;
60*cdf0e10cSrcweir }
61*cdf0e10cSrcweir 
62*cdf0e10cSrcweir namespace chart
63*cdf0e10cSrcweir {
64*cdf0e10cSrcweir 
65*cdf0e10cSrcweir class AccessibleBase;
66*cdf0e10cSrcweir class ObjectHierarchy;
67*cdf0e10cSrcweir 
68*cdf0e10cSrcweir typedef ObjectIdentifier AccessibleUniqueId;
69*cdf0e10cSrcweir 
70*cdf0e10cSrcweir struct AccessibleElementInfo
71*cdf0e10cSrcweir {
72*cdf0e10cSrcweir     AccessibleUniqueId m_aOID;
73*cdf0e10cSrcweir 
74*cdf0e10cSrcweir     ::com::sun::star::uno::WeakReference<
75*cdf0e10cSrcweir             ::com::sun::star::chart2::XChartDocument > m_xChartDocument;
76*cdf0e10cSrcweir     ::com::sun::star::uno::WeakReference<
77*cdf0e10cSrcweir             ::com::sun::star::view::XSelectionSupplier > m_xSelectionSupplier;
78*cdf0e10cSrcweir     ::com::sun::star::uno::WeakReference<
79*cdf0e10cSrcweir             ::com::sun::star::uno::XInterface >   m_xView;
80*cdf0e10cSrcweir     ::com::sun::star::uno::WeakReference<
81*cdf0e10cSrcweir             ::com::sun::star::awt::XWindow >      m_xWindow;
82*cdf0e10cSrcweir 
83*cdf0e10cSrcweir     ::boost::shared_ptr< ObjectHierarchy > m_spObjectHierarchy;
84*cdf0e10cSrcweir 
85*cdf0e10cSrcweir     AccessibleBase * m_pParent;
86*cdf0e10cSrcweir     SdrView* m_pSdrView;
87*cdf0e10cSrcweir     ::accessibility::IAccessibleViewForwarder* m_pViewForwarder;
88*cdf0e10cSrcweir };
89*cdf0e10cSrcweir 
90*cdf0e10cSrcweir 
91*cdf0e10cSrcweir namespace impl
92*cdf0e10cSrcweir {
93*cdf0e10cSrcweir typedef ::cppu::WeakComponentImplHelper6<
94*cdf0e10cSrcweir         ::com::sun::star::accessibility::XAccessible,
95*cdf0e10cSrcweir         ::com::sun::star::accessibility::XAccessibleContext,
96*cdf0e10cSrcweir         ::com::sun::star::accessibility::XAccessibleComponent,
97*cdf0e10cSrcweir         ::com::sun::star::accessibility::XAccessibleEventBroadcaster,
98*cdf0e10cSrcweir         ::com::sun::star::lang::XServiceInfo,
99*cdf0e10cSrcweir         ::com::sun::star::lang::XEventListener
100*cdf0e10cSrcweir         > AccessibleBase_Base;
101*cdf0e10cSrcweir }
102*cdf0e10cSrcweir 
103*cdf0e10cSrcweir /** Base class for all Chart Accessibility objects
104*cdf0e10cSrcweir  */
105*cdf0e10cSrcweir class AccessibleBase :
106*cdf0e10cSrcweir     public MutexContainer,
107*cdf0e10cSrcweir     public impl::AccessibleBase_Base
108*cdf0e10cSrcweir {
109*cdf0e10cSrcweir public:
110*cdf0e10cSrcweir     enum EventType
111*cdf0e10cSrcweir     {
112*cdf0e10cSrcweir         OBJECT_CHANGE,
113*cdf0e10cSrcweir         GOT_SELECTION,
114*cdf0e10cSrcweir         LOST_SELECTION,
115*cdf0e10cSrcweir         PROPERTY_CHANGE
116*cdf0e10cSrcweir     };
117*cdf0e10cSrcweir 
118*cdf0e10cSrcweir     AccessibleBase( const AccessibleElementInfo & rAccInfo,
119*cdf0e10cSrcweir                     bool bMayHaveChildren,
120*cdf0e10cSrcweir                     bool bAlwaysTransparent = false );
121*cdf0e10cSrcweir     virtual ~AccessibleBase();
122*cdf0e10cSrcweir 
123*cdf0e10cSrcweir protected:
124*cdf0e10cSrcweir     // for all calls to protected methods it is assumed that the mutex is locked
125*cdf0e10cSrcweir     // unless calls outside via UNO, e.g. event notification, are done
126*cdf0e10cSrcweir 
127*cdf0e10cSrcweir     /** @param bThrowException if true, a DisposedException is thrown if the
128*cdf0e10cSrcweir                object is already disposed
129*cdf0e10cSrcweir         @return true, if the component is already disposed and bThrowException is false,
130*cdf0e10cSrcweir                 false otherwise
131*cdf0e10cSrcweir      */
132*cdf0e10cSrcweir     bool             CheckDisposeState( bool bThrowException = true ) const throw (::com::sun::star::lang::DisposedException);
133*cdf0e10cSrcweir 
134*cdf0e10cSrcweir     /** Events coming from the core have to be processed in this methods.  The
135*cdf0e10cSrcweir         default implementation returns false, which indicates that the object is
136*cdf0e10cSrcweir         not interested in the event.  To react on events you have to implement
137*cdf0e10cSrcweir         this method in derived classes.
138*cdf0e10cSrcweir 
139*cdf0e10cSrcweir         The default implementation iterates over all children and forwards the
140*cdf0e10cSrcweir         event until the first child returns true.
141*cdf0e10cSrcweir 
142*cdf0e10cSrcweir         @param nObjId contains the object id of chart objects.  If the object is
143*cdf0e10cSrcweir                 no chart object, the event is not broadcast.
144*cdf0e10cSrcweir         @return If an object is the addressee of the event it should return
145*cdf0e10cSrcweir                 true, false otherwise.
146*cdf0e10cSrcweir      */
147*cdf0e10cSrcweir     virtual bool     NotifyEvent( EventType eType, const AccessibleUniqueId & rId );
148*cdf0e10cSrcweir 
149*cdf0e10cSrcweir     /** Adds a state to the set.
150*cdf0e10cSrcweir     */
151*cdf0e10cSrcweir     void             AddState( sal_Int16 aState ) throw (::com::sun::star::uno::RuntimeException);
152*cdf0e10cSrcweir 
153*cdf0e10cSrcweir     /** Removes a state from the set if the set contains the state, otherwise
154*cdf0e10cSrcweir         nothing is done.
155*cdf0e10cSrcweir     */
156*cdf0e10cSrcweir     void             RemoveState( sal_Int16 aState ) throw (::com::sun::star::uno::RuntimeException);
157*cdf0e10cSrcweir 
158*cdf0e10cSrcweir     /** has to be overloaded by derived classes that support child elements.
159*cdf0e10cSrcweir         With this method a rescan is initiated that should result in a correct
160*cdf0e10cSrcweir         list of children.
161*cdf0e10cSrcweir 
162*cdf0e10cSrcweir         This method is called when access to any methods concerning children is
163*cdf0e10cSrcweir         invoked for the first time.
164*cdf0e10cSrcweir      */
165*cdf0e10cSrcweir     bool UpdateChildren();
166*cdf0e10cSrcweir 
167*cdf0e10cSrcweir     /** Is called by UpdateChildren.  This method is only called if an update is
168*cdf0e10cSrcweir         really necessary.
169*cdf0e10cSrcweir      */
170*cdf0e10cSrcweir     virtual bool ImplUpdateChildren();
171*cdf0e10cSrcweir 
172*cdf0e10cSrcweir     /** adds a child to the end of the internal vector of children.  As a
173*cdf0e10cSrcweir         result, the child-count increases by one, but all existing children keep
174*cdf0e10cSrcweir         their indices.
175*cdf0e10cSrcweir 
176*cdf0e10cSrcweir         Important: as the implementation is needed, this should remain the only
177*cdf0e10cSrcweir         method for adding children (i.e. there mustn't be an AddChild( Reference<
178*cdf0e10cSrcweir         XAccessible > ) or the like).
179*cdf0e10cSrcweir      */
180*cdf0e10cSrcweir     void         AddChild( AccessibleBase* pChild );
181*cdf0e10cSrcweir 
182*cdf0e10cSrcweir     /** removes a child from the internal vector.  All children with index
183*cdf0e10cSrcweir         greater than the index of the removed element get an index one less than
184*cdf0e10cSrcweir         before.
185*cdf0e10cSrcweir      */
186*cdf0e10cSrcweir     void         RemoveChildByOId( const ObjectIdentifier& rOId );
187*cdf0e10cSrcweir 
188*cdf0e10cSrcweir     /** Retrieve the pixel coordinates of logical coordinates (0,0) of the
189*cdf0e10cSrcweir         current logic coordinate system.  This can be used for
190*cdf0e10cSrcweir         getLocationOnScreen, if the coordinates of an object are not relative to
191*cdf0e10cSrcweir         its direct parent, but a parent higher up in hierarchy.
192*cdf0e10cSrcweir 
193*cdf0e10cSrcweir         @return the (x,y) pixel coordinates of the upper left corner
194*cdf0e10cSrcweir      */
195*cdf0e10cSrcweir     virtual ::com::sun::star::awt::Point   GetUpperLeftOnScreen() const;
196*cdf0e10cSrcweir 
197*cdf0e10cSrcweir     /** This method creates an AccessibleEventObject and sends it to all
198*cdf0e10cSrcweir         listeners that are currently listening to this object
199*cdf0e10cSrcweir 
200*cdf0e10cSrcweir         If bSendGlobally is true, the event is also broadcast via
201*cdf0e10cSrcweir         vcl::unohelper::NotifyAccessibleStateEventGlobally()
202*cdf0e10cSrcweir      */
203*cdf0e10cSrcweir     void         BroadcastAccEvent( sal_Int16 nId,
204*cdf0e10cSrcweir                                     const ::com::sun::star::uno::Any & rNew,
205*cdf0e10cSrcweir                                     const ::com::sun::star::uno::Any & rOld,
206*cdf0e10cSrcweir                                     bool bSendGlobally = false ) const;
207*cdf0e10cSrcweir 
208*cdf0e10cSrcweir     /** Removes all children from the internal lists and broadcasts child remove
209*cdf0e10cSrcweir         events.
210*cdf0e10cSrcweir 
211*cdf0e10cSrcweir         This method cares about mutex locking, and thus should be called without
212*cdf0e10cSrcweir         the mutex locked.
213*cdf0e10cSrcweir      */
214*cdf0e10cSrcweir     virtual void KillAllChildren();
215*cdf0e10cSrcweir 
216*cdf0e10cSrcweir     /** Is called from getAccessibleChild(). Before this method is called, an
217*cdf0e10cSrcweir         update of children is done if necessary.
218*cdf0e10cSrcweir      */
219*cdf0e10cSrcweir     virtual ::com::sun::star::uno::Reference<
220*cdf0e10cSrcweir             ::com::sun::star::accessibility::XAccessible >
221*cdf0e10cSrcweir         ImplGetAccessibleChildById( sal_Int32 i ) const
222*cdf0e10cSrcweir         throw (::com::sun::star::lang::IndexOutOfBoundsException,
223*cdf0e10cSrcweir                ::com::sun::star::uno::RuntimeException);
224*cdf0e10cSrcweir 
225*cdf0e10cSrcweir     /** Is called from getAccessibleChildCount(). Before this method is called,
226*cdf0e10cSrcweir         an update of children is done if necessary.
227*cdf0e10cSrcweir      */
228*cdf0e10cSrcweir     virtual sal_Int32 ImplGetAccessibleChildCount() const
229*cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
230*cdf0e10cSrcweir 
231*cdf0e10cSrcweir     AccessibleElementInfo GetInfo() const;
232*cdf0e10cSrcweir     void SetInfo( const AccessibleElementInfo & rNewInfo );
233*cdf0e10cSrcweir     AccessibleUniqueId GetId() const;
234*cdf0e10cSrcweir 
235*cdf0e10cSrcweir     // ________ WeakComponentImplHelper (XComponent::dispose) ________
236*cdf0e10cSrcweir     virtual void SAL_CALL disposing();
237*cdf0e10cSrcweir 
238*cdf0e10cSrcweir     // ________ XAccessible ________
239*cdf0e10cSrcweir     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext()
240*cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
241*cdf0e10cSrcweir 
242*cdf0e10cSrcweir     // ________ XAccessibleContext ________
243*cdf0e10cSrcweir     virtual sal_Int32 SAL_CALL getAccessibleChildCount()
244*cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
245*cdf0e10cSrcweir     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL
246*cdf0e10cSrcweir         getAccessibleChild( sal_Int32 i )
247*cdf0e10cSrcweir         throw (::com::sun::star::lang::IndexOutOfBoundsException,
248*cdf0e10cSrcweir                ::com::sun::star::uno::RuntimeException);
249*cdf0e10cSrcweir     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL
250*cdf0e10cSrcweir         getAccessibleParent()
251*cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
252*cdf0e10cSrcweir     virtual sal_Int32 SAL_CALL getAccessibleIndexInParent()
253*cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
254*cdf0e10cSrcweir     /// @return AccessibleRole.SHAPE
255*cdf0e10cSrcweir     virtual sal_Int16 SAL_CALL getAccessibleRole()
256*cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
257*cdf0e10cSrcweir     // has to be implemented by derived classes
258*cdf0e10cSrcweir //     virtual ::rtl::OUString SAL_CALL getAccessibleName()
259*cdf0e10cSrcweir //         throw (::com::sun::star::uno::RuntimeException);
260*cdf0e10cSrcweir     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL
261*cdf0e10cSrcweir         getAccessibleRelationSet()
262*cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
263*cdf0e10cSrcweir     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleStateSet > SAL_CALL
264*cdf0e10cSrcweir         getAccessibleStateSet()
265*cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
266*cdf0e10cSrcweir     virtual ::com::sun::star::lang::Locale SAL_CALL getLocale()
267*cdf0e10cSrcweir         throw (::com::sun::star::accessibility::IllegalAccessibleComponentStateException,
268*cdf0e10cSrcweir                ::com::sun::star::uno::RuntimeException);
269*cdf0e10cSrcweir     // has to be implemented by derived classes
270*cdf0e10cSrcweir //     virtual ::rtl::OUString SAL_CALL getAccessibleDescription()
271*cdf0e10cSrcweir //         throw (::com::sun::star::uno::RuntimeException);
272*cdf0e10cSrcweir 
273*cdf0e10cSrcweir     // ________ XAccessibleComponent ________
274*cdf0e10cSrcweir     virtual sal_Bool SAL_CALL containsPoint(
275*cdf0e10cSrcweir         const ::com::sun::star::awt::Point& aPoint )
276*cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
277*cdf0e10cSrcweir     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL
278*cdf0e10cSrcweir         getAccessibleAtPoint( const ::com::sun::star::awt::Point& aPoint )
279*cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
280*cdf0e10cSrcweir     // has to be defined in derived classes
281*cdf0e10cSrcweir     virtual ::com::sun::star::awt::Rectangle SAL_CALL getBounds()
282*cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
283*cdf0e10cSrcweir     virtual ::com::sun::star::awt::Point SAL_CALL getLocation()
284*cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
285*cdf0e10cSrcweir     virtual ::com::sun::star::awt::Point SAL_CALL getLocationOnScreen()
286*cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
287*cdf0e10cSrcweir     virtual ::com::sun::star::awt::Size SAL_CALL getSize()
288*cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
289*cdf0e10cSrcweir     virtual void SAL_CALL grabFocus()
290*cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
291*cdf0e10cSrcweir     virtual sal_Int32 SAL_CALL getForeground()
292*cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
293*cdf0e10cSrcweir     virtual sal_Int32 SAL_CALL getBackground()
294*cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
295*cdf0e10cSrcweir 
296*cdf0e10cSrcweir     // ________ XServiceInfo ________
297*cdf0e10cSrcweir     virtual ::rtl::OUString SAL_CALL getImplementationName()
298*cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
299*cdf0e10cSrcweir     virtual sal_Bool SAL_CALL supportsService(
300*cdf0e10cSrcweir         const ::rtl::OUString& ServiceName )
301*cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
302*cdf0e10cSrcweir     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
303*cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
304*cdf0e10cSrcweir 
305*cdf0e10cSrcweir     // ________ XEventListener ________
306*cdf0e10cSrcweir     virtual void SAL_CALL disposing(
307*cdf0e10cSrcweir         const ::com::sun::star::lang::EventObject& Source )
308*cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
309*cdf0e10cSrcweir 
310*cdf0e10cSrcweir     using ::cppu::WeakComponentImplHelperBase::addEventListener;
311*cdf0e10cSrcweir     using ::cppu::WeakComponentImplHelperBase::removeEventListener;
312*cdf0e10cSrcweir 
313*cdf0e10cSrcweir     // ________ XAccessibleEventBroadcaster ________
314*cdf0e10cSrcweir     virtual void SAL_CALL addEventListener(
315*cdf0e10cSrcweir         const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener )
316*cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
317*cdf0e10cSrcweir     virtual void SAL_CALL removeEventListener(
318*cdf0e10cSrcweir         const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener )
319*cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
320*cdf0e10cSrcweir 
321*cdf0e10cSrcweir private:
322*cdf0e10cSrcweir     enum eColorType
323*cdf0e10cSrcweir     {
324*cdf0e10cSrcweir         ACC_BASE_FOREGROUND,
325*cdf0e10cSrcweir         ACC_BASE_BACKGROUND
326*cdf0e10cSrcweir     };
327*cdf0e10cSrcweir     sal_Int32 getColor( eColorType eColType );
328*cdf0e10cSrcweir 
329*cdf0e10cSrcweir private:
330*cdf0e10cSrcweir     typedef ::com::sun::star::uno::Reference<
331*cdf0e10cSrcweir             ::com::sun::star::accessibility::XAccessible > tAccessible;
332*cdf0e10cSrcweir     /** type of the vector containing the accessible children
333*cdf0e10cSrcweir      */
334*cdf0e10cSrcweir     typedef ::std::vector< tAccessible > ChildListVectorType;
335*cdf0e10cSrcweir     /** type of the hash containing a vector index for every AccessibleUniqueId
336*cdf0e10cSrcweir         of the object in the child list
337*cdf0e10cSrcweir      */
338*cdf0e10cSrcweir     typedef ::std::map< ObjectIdentifier, tAccessible > ChildOIDMap;
339*cdf0e10cSrcweir 
340*cdf0e10cSrcweir     bool                                  m_bIsDisposed;
341*cdf0e10cSrcweir     const bool                            m_bMayHaveChildren;
342*cdf0e10cSrcweir     bool                                  m_bChildrenInitialized;
343*cdf0e10cSrcweir     ChildListVectorType                   m_aChildList;
344*cdf0e10cSrcweir 
345*cdf0e10cSrcweir     ChildOIDMap                           m_aChildOIDMap;
346*cdf0e10cSrcweir 
347*cdf0e10cSrcweir     ::comphelper::AccessibleEventNotifier::TClientId      m_nEventNotifierId;
348*cdf0e10cSrcweir 
349*cdf0e10cSrcweir     /** Implementation helper for getAccessibleStateSet()
350*cdf0e10cSrcweir 
351*cdf0e10cSrcweir         Note: This member must come before m_aStateSet!
352*cdf0e10cSrcweir      */
353*cdf0e10cSrcweir     ::utl::AccessibleStateSetHelper *     m_pStateSetHelper;
354*cdf0e10cSrcweir     /** this is returned in getAccessibleStateSet().
355*cdf0e10cSrcweir 
356*cdf0e10cSrcweir         The implementation is an ::utl::AccessibleStateSetHelper.  To access
357*cdf0e10cSrcweir         implementation methods use m_pStateSetHelper.
358*cdf0e10cSrcweir 
359*cdf0e10cSrcweir         Note: Keeping this reference ensures, that the helper object is only
360*cdf0e10cSrcweir               destroyed after this object has been disposed().
361*cdf0e10cSrcweir      */
362*cdf0e10cSrcweir     ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleStateSet >
363*cdf0e10cSrcweir         m_aStateSet;
364*cdf0e10cSrcweir 
365*cdf0e10cSrcweir     AccessibleElementInfo  m_aAccInfo;
366*cdf0e10cSrcweir     const bool             m_bAlwaysTransparent;
367*cdf0e10cSrcweir     /** denotes if the state-set is initialized.  On initialization the selected
368*cdf0e10cSrcweir         state is checked.
369*cdf0e10cSrcweir 
370*cdf0e10cSrcweir         This variable is monitored by the solar mutex!
371*cdf0e10cSrcweir 
372*cdf0e10cSrcweir         Note: declared volatile to enable double-check-locking
373*cdf0e10cSrcweir      */
374*cdf0e10cSrcweir     volatile bool          m_bStateSetInitialized;
375*cdf0e10cSrcweir };
376*cdf0e10cSrcweir 
377*cdf0e10cSrcweir }  // namespace chart
378*cdf0e10cSrcweir 
379*cdf0e10cSrcweir #endif
380