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 24*b1cdbd2cSJim Jagielski #ifndef SD_ACCESSIBILITY_ACCESSIBLE_BASE_HXX 25*b1cdbd2cSJim Jagielski #define SD_ACCESSIBILITY_ACCESSIBLE_BASE_HXX 26*b1cdbd2cSJim Jagielski 27*b1cdbd2cSJim Jagielski #include "MutexOwner.hxx" 28*b1cdbd2cSJim Jagielski #include <cppuhelper/compbase5.hxx> 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/accessibility/XAccessibleEventBroadcaster.hpp> 33*b1cdbd2cSJim Jagielski #include <com/sun/star/accessibility/AccessibleRole.hpp> 34*b1cdbd2cSJim Jagielski #include <com/sun/star/accessibility/AccessibleStateType.hpp> 35*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XServiceInfo.hpp> 36*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/DisposedException.hpp> 37*b1cdbd2cSJim Jagielski #include <com/sun/star/awt/XFocusListener.hpp> 38*b1cdbd2cSJim Jagielski #include <com/sun/star/document/XEventListener.hpp> 39*b1cdbd2cSJim Jagielski #include <unotools/accessiblestatesethelper.hxx> 40*b1cdbd2cSJim Jagielski #include <tools/link.hxx> 41*b1cdbd2cSJim Jagielski #include <rtl/ref.hxx> 42*b1cdbd2cSJim Jagielski 43*b1cdbd2cSJim Jagielski class VclWindowEvent; 44*b1cdbd2cSJim Jagielski 45*b1cdbd2cSJim Jagielski namespace sd { namespace toolpanel { 46*b1cdbd2cSJim Jagielski class TreeNode; 47*b1cdbd2cSJim Jagielski class TreeNodeStateChangeEvent; 48*b1cdbd2cSJim Jagielski } } 49*b1cdbd2cSJim Jagielski 50*b1cdbd2cSJim Jagielski 51*b1cdbd2cSJim Jagielski namespace utl { 52*b1cdbd2cSJim Jagielski class AccessibleStateSetHelper; 53*b1cdbd2cSJim Jagielski } 54*b1cdbd2cSJim Jagielski 55*b1cdbd2cSJim Jagielski namespace accessibility { 56*b1cdbd2cSJim Jagielski 57*b1cdbd2cSJim Jagielski 58*b1cdbd2cSJim Jagielski class AccessibleSlideSorterObject; 59*b1cdbd2cSJim Jagielski 60*b1cdbd2cSJim Jagielski typedef ::cppu::WeakComponentImplHelper5< 61*b1cdbd2cSJim Jagielski ::com::sun::star::accessibility::XAccessible, 62*b1cdbd2cSJim Jagielski ::com::sun::star::accessibility::XAccessibleEventBroadcaster, 63*b1cdbd2cSJim Jagielski ::com::sun::star::accessibility::XAccessibleContext, 64*b1cdbd2cSJim Jagielski ::com::sun::star::accessibility::XAccessibleComponent, 65*b1cdbd2cSJim Jagielski ::com::sun::star::lang::XServiceInfo 66*b1cdbd2cSJim Jagielski > AccessibleTreeNodeBase; 67*b1cdbd2cSJim Jagielski 68*b1cdbd2cSJim Jagielski /** This class makes objects based on the sd::toolpanel::TreeNode 69*b1cdbd2cSJim Jagielski accessible. 70*b1cdbd2cSJim Jagielski */ 71*b1cdbd2cSJim Jagielski class AccessibleTreeNode 72*b1cdbd2cSJim Jagielski : public ::sd::MutexOwner, 73*b1cdbd2cSJim Jagielski public AccessibleTreeNodeBase 74*b1cdbd2cSJim Jagielski { 75*b1cdbd2cSJim Jagielski public: 76*b1cdbd2cSJim Jagielski /** Create a new object for the given tree node. The accessible parent 77*b1cdbd2cSJim Jagielski is taken from the window returned by GetAccessibleParent() when 78*b1cdbd2cSJim Jagielski called at the window of the node. 79*b1cdbd2cSJim Jagielski @param rNode 80*b1cdbd2cSJim Jagielski The TreeNode to make accessible. 81*b1cdbd2cSJim Jagielski @param rsName 82*b1cdbd2cSJim Jagielski The accessible name that will be returned by getAccessibleName(). 83*b1cdbd2cSJim Jagielski @param rsDescription 84*b1cdbd2cSJim Jagielski The accessible description that will be returned by 85*b1cdbd2cSJim Jagielski getAccessibleDescription(). 86*b1cdbd2cSJim Jagielski @param eRole 87*b1cdbd2cSJim Jagielski The role that will be returned by getAccessibleRole(). 88*b1cdbd2cSJim Jagielski */ 89*b1cdbd2cSJim Jagielski AccessibleTreeNode( 90*b1cdbd2cSJim Jagielski ::sd::toolpanel::TreeNode& rNode, 91*b1cdbd2cSJim Jagielski const ::rtl::OUString& rsName, 92*b1cdbd2cSJim Jagielski const ::rtl::OUString& rsDescription, 93*b1cdbd2cSJim Jagielski sal_Int16 eRole); 94*b1cdbd2cSJim Jagielski 95*b1cdbd2cSJim Jagielski void FireAccessibleEvent ( 96*b1cdbd2cSJim Jagielski short nEventId, 97*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Any& rOldValue, 98*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Any& rNewValue); 99*b1cdbd2cSJim Jagielski 100*b1cdbd2cSJim Jagielski virtual void SAL_CALL disposing (void); 101*b1cdbd2cSJim Jagielski 102*b1cdbd2cSJim Jagielski //===== XAccessible ======================================================= 103*b1cdbd2cSJim Jagielski 104*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Reference< 105*b1cdbd2cSJim Jagielski ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL 106*b1cdbd2cSJim Jagielski getAccessibleContext (void) 107*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 108*b1cdbd2cSJim Jagielski 109*b1cdbd2cSJim Jagielski 110*b1cdbd2cSJim Jagielski //===== XAccessibleEventBroadcaster ======================================= 111*b1cdbd2cSJim Jagielski 112*b1cdbd2cSJim Jagielski virtual void SAL_CALL 113*b1cdbd2cSJim Jagielski addEventListener( 114*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< 115*b1cdbd2cSJim Jagielski ::com::sun::star::accessibility::XAccessibleEventListener >& rxListener) 116*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 117*b1cdbd2cSJim Jagielski 118*b1cdbd2cSJim Jagielski virtual void SAL_CALL 119*b1cdbd2cSJim Jagielski removeEventListener( 120*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< 121*b1cdbd2cSJim Jagielski ::com::sun::star::accessibility::XAccessibleEventListener >& rxListener ) 122*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 123*b1cdbd2cSJim Jagielski 124*b1cdbd2cSJim Jagielski using cppu::WeakComponentImplHelperBase::addEventListener; 125*b1cdbd2cSJim Jagielski using cppu::WeakComponentImplHelperBase::removeEventListener; 126*b1cdbd2cSJim Jagielski 127*b1cdbd2cSJim Jagielski //===== XAccessibleContext ============================================== 128*b1cdbd2cSJim Jagielski 129*b1cdbd2cSJim Jagielski /// Return the number of currently visible children. 130*b1cdbd2cSJim Jagielski virtual sal_Int32 SAL_CALL 131*b1cdbd2cSJim Jagielski getAccessibleChildCount (void) throw (::com::sun::star::uno::RuntimeException); 132*b1cdbd2cSJim Jagielski 133*b1cdbd2cSJim Jagielski /// Return the specified child or throw exception. 134*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible> SAL_CALL 135*b1cdbd2cSJim Jagielski getAccessibleChild (sal_Int32 nIndex) 136*b1cdbd2cSJim Jagielski throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); 137*b1cdbd2cSJim Jagielski 138*b1cdbd2cSJim Jagielski /// Return a reference to the parent. 139*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible> SAL_CALL 140*b1cdbd2cSJim Jagielski getAccessibleParent (void) 141*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 142*b1cdbd2cSJim Jagielski 143*b1cdbd2cSJim Jagielski /// Return this objects index among the parents children. 144*b1cdbd2cSJim Jagielski virtual sal_Int32 SAL_CALL 145*b1cdbd2cSJim Jagielski getAccessibleIndexInParent (void) 146*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 147*b1cdbd2cSJim Jagielski 148*b1cdbd2cSJim Jagielski /// Return this object's role. 149*b1cdbd2cSJim Jagielski virtual sal_Int16 SAL_CALL 150*b1cdbd2cSJim Jagielski getAccessibleRole (void) 151*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 152*b1cdbd2cSJim Jagielski 153*b1cdbd2cSJim Jagielski /// Return this object's description. 154*b1cdbd2cSJim Jagielski virtual ::rtl::OUString SAL_CALL 155*b1cdbd2cSJim Jagielski getAccessibleDescription (void) 156*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 157*b1cdbd2cSJim Jagielski 158*b1cdbd2cSJim Jagielski /// Return the object's current name. 159*b1cdbd2cSJim Jagielski virtual ::rtl::OUString SAL_CALL 160*b1cdbd2cSJim Jagielski getAccessibleName (void) 161*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 162*b1cdbd2cSJim Jagielski 163*b1cdbd2cSJim Jagielski /// Return NULL to indicate that an empty relation set. 164*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Reference< 165*b1cdbd2cSJim Jagielski ::com::sun::star::accessibility::XAccessibleRelationSet> SAL_CALL 166*b1cdbd2cSJim Jagielski getAccessibleRelationSet (void) 167*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 168*b1cdbd2cSJim Jagielski 169*b1cdbd2cSJim Jagielski /// Return the set of current states. 170*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Reference< 171*b1cdbd2cSJim Jagielski ::com::sun::star::accessibility::XAccessibleStateSet> SAL_CALL 172*b1cdbd2cSJim Jagielski getAccessibleStateSet (void) 173*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 174*b1cdbd2cSJim Jagielski 175*b1cdbd2cSJim Jagielski /** Return the parents locale or throw exception if this object has no 176*b1cdbd2cSJim Jagielski parent yet/anymore. 177*b1cdbd2cSJim Jagielski */ 178*b1cdbd2cSJim Jagielski virtual ::com::sun::star::lang::Locale SAL_CALL 179*b1cdbd2cSJim Jagielski getLocale (void) 180*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException, 181*b1cdbd2cSJim Jagielski ::com::sun::star::accessibility::IllegalAccessibleComponentStateException); 182*b1cdbd2cSJim Jagielski 183*b1cdbd2cSJim Jagielski //===== XAccessibleComponent ================================================ 184*b1cdbd2cSJim Jagielski 185*b1cdbd2cSJim Jagielski virtual sal_Bool SAL_CALL containsPoint ( 186*b1cdbd2cSJim Jagielski const ::com::sun::star::awt::Point& aPoint) 187*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 188*b1cdbd2cSJim Jagielski 189*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Reference< 190*b1cdbd2cSJim Jagielski ::com::sun::star::accessibility::XAccessible > SAL_CALL 191*b1cdbd2cSJim Jagielski getAccessibleAtPoint ( 192*b1cdbd2cSJim Jagielski const ::com::sun::star::awt::Point& aPoint) 193*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 194*b1cdbd2cSJim Jagielski 195*b1cdbd2cSJim Jagielski virtual ::com::sun::star::awt::Rectangle SAL_CALL getBounds (void) 196*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 197*b1cdbd2cSJim Jagielski 198*b1cdbd2cSJim Jagielski virtual ::com::sun::star::awt::Point SAL_CALL getLocation (void) 199*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 200*b1cdbd2cSJim Jagielski 201*b1cdbd2cSJim Jagielski virtual ::com::sun::star::awt::Point SAL_CALL getLocationOnScreen (void) 202*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 203*b1cdbd2cSJim Jagielski 204*b1cdbd2cSJim Jagielski virtual ::com::sun::star::awt::Size SAL_CALL getSize (void) 205*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 206*b1cdbd2cSJim Jagielski 207*b1cdbd2cSJim Jagielski virtual void SAL_CALL grabFocus (void) 208*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 209*b1cdbd2cSJim Jagielski 210*b1cdbd2cSJim Jagielski virtual sal_Int32 SAL_CALL getForeground (void) 211*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 212*b1cdbd2cSJim Jagielski 213*b1cdbd2cSJim Jagielski virtual sal_Int32 SAL_CALL getBackground (void) 214*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 215*b1cdbd2cSJim Jagielski 216*b1cdbd2cSJim Jagielski 217*b1cdbd2cSJim Jagielski //===== XServiceInfo ==================================================== 218*b1cdbd2cSJim Jagielski 219*b1cdbd2cSJim Jagielski /** Returns an identifier for the implementation of this object. 220*b1cdbd2cSJim Jagielski */ 221*b1cdbd2cSJim Jagielski virtual ::rtl::OUString SAL_CALL 222*b1cdbd2cSJim Jagielski getImplementationName (void) 223*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 224*b1cdbd2cSJim Jagielski 225*b1cdbd2cSJim Jagielski /** Return whether the specified service is supported by this class. 226*b1cdbd2cSJim Jagielski */ 227*b1cdbd2cSJim Jagielski virtual sal_Bool SAL_CALL 228*b1cdbd2cSJim Jagielski supportsService (const ::rtl::OUString& sServiceName) 229*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 230*b1cdbd2cSJim Jagielski 231*b1cdbd2cSJim Jagielski /** Returns a list of all supported services. 232*b1cdbd2cSJim Jagielski */ 233*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL 234*b1cdbd2cSJim Jagielski getSupportedServiceNames (void) 235*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 236*b1cdbd2cSJim Jagielski 237*b1cdbd2cSJim Jagielski 238*b1cdbd2cSJim Jagielski protected: 239*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< 240*b1cdbd2cSJim Jagielski ::com::sun::star::accessibility::XAccessible> mxParent; 241*b1cdbd2cSJim Jagielski ::sd::toolpanel::TreeNode& mrTreeNode; 242*b1cdbd2cSJim Jagielski ::rtl::Reference< ::utl::AccessibleStateSetHelper> mrStateSet; 243*b1cdbd2cSJim Jagielski 244*b1cdbd2cSJim Jagielski const ::rtl::OUString msName; 245*b1cdbd2cSJim Jagielski const ::rtl::OUString msDescription; 246*b1cdbd2cSJim Jagielski const sal_Int16 meRole; 247*b1cdbd2cSJim Jagielski 248*b1cdbd2cSJim Jagielski virtual ~AccessibleTreeNode (void); 249*b1cdbd2cSJim Jagielski 250*b1cdbd2cSJim Jagielski /** Check whether or not the object has been disposed (or is in the 251*b1cdbd2cSJim Jagielski state of beeing disposed). If that is the case then 252*b1cdbd2cSJim Jagielski DisposedException is thrown to inform the (indirect) caller of the 253*b1cdbd2cSJim Jagielski foul deed. 254*b1cdbd2cSJim Jagielski */ 255*b1cdbd2cSJim Jagielski void ThrowIfDisposed (void) 256*b1cdbd2cSJim Jagielski throw (::com::sun::star::lang::DisposedException); 257*b1cdbd2cSJim Jagielski 258*b1cdbd2cSJim Jagielski /** Check whether or not the object has been disposed (or is in the 259*b1cdbd2cSJim Jagielski state of beeing disposed). 260*b1cdbd2cSJim Jagielski 261*b1cdbd2cSJim Jagielski @return sal_True, if the object is disposed or in the course 262*b1cdbd2cSJim Jagielski of being disposed. Otherwise, sal_False is returned. 263*b1cdbd2cSJim Jagielski */ 264*b1cdbd2cSJim Jagielski sal_Bool IsDisposed (void); 265*b1cdbd2cSJim Jagielski 266*b1cdbd2cSJim Jagielski /** Update the mpStateSet member to reflect the current state of the 267*b1cdbd2cSJim Jagielski TreeNode. When one of the states has changed since the last call 268*b1cdbd2cSJim Jagielski then an appropriate event is sent. 269*b1cdbd2cSJim Jagielski */ 270*b1cdbd2cSJim Jagielski virtual void UpdateStateSet (void); 271*b1cdbd2cSJim Jagielski 272*b1cdbd2cSJim Jagielski /** Update a single state and sent an event if its value changes. 273*b1cdbd2cSJim Jagielski */ 274*b1cdbd2cSJim Jagielski void UpdateState( 275*b1cdbd2cSJim Jagielski sal_Int16 aState, 276*b1cdbd2cSJim Jagielski bool bValue); 277*b1cdbd2cSJim Jagielski 278*b1cdbd2cSJim Jagielski DECL_LINK(StateChangeListener, ::sd::toolpanel::TreeNodeStateChangeEvent*); 279*b1cdbd2cSJim Jagielski DECL_LINK(WindowEventListener, VclWindowEvent*); 280*b1cdbd2cSJim Jagielski 281*b1cdbd2cSJim Jagielski private: 282*b1cdbd2cSJim Jagielski sal_uInt32 mnClientId; 283*b1cdbd2cSJim Jagielski 284*b1cdbd2cSJim Jagielski /// The common part of the constructor. 285*b1cdbd2cSJim Jagielski void CommonConstructor (void); 286*b1cdbd2cSJim Jagielski }; 287*b1cdbd2cSJim Jagielski 288*b1cdbd2cSJim Jagielski } // end of namespace ::accessibility 289*b1cdbd2cSJim Jagielski 290*b1cdbd2cSJim Jagielski #endif 291