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