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