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