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