1c45d927aSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3c45d927aSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4c45d927aSAndrew Rist * or more contributor license agreements. See the NOTICE file 5c45d927aSAndrew Rist * distributed with this work for additional information 6c45d927aSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7c45d927aSAndrew Rist * to you under the Apache License, Version 2.0 (the 8c45d927aSAndrew Rist * "License"); you may not use this file except in compliance 9c45d927aSAndrew Rist * with the License. You may obtain a copy of the License at 10c45d927aSAndrew Rist * 11c45d927aSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12c45d927aSAndrew Rist * 13c45d927aSAndrew Rist * Unless required by applicable law or agreed to in writing, 14c45d927aSAndrew Rist * software distributed under the License is distributed on an 15c45d927aSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16c45d927aSAndrew Rist * KIND, either express or implied. See the License for the 17c45d927aSAndrew Rist * specific language governing permissions and limitations 18c45d927aSAndrew Rist * under the License. 19c45d927aSAndrew Rist * 20c45d927aSAndrew Rist *************************************************************/ 21c45d927aSAndrew Rist 22c45d927aSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir #ifndef SD_ACCESSIBILITY_ACCESSIBLE_SLIDE_SORTER_VIEW_HXX 25cdf0e10cSrcweir #define SD_ACCESSIBILITY_ACCESSIBLE_SLIDE_SORTER_VIEW_HXX 26cdf0e10cSrcweir 27cdf0e10cSrcweir #include "MutexOwner.hxx" 28cdf0e10cSrcweir #include <cppuhelper/compbase6.hxx> 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/accessibility/XAccessibleSelection.hpp> 33cdf0e10cSrcweir #include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp> 34cdf0e10cSrcweir #include <com/sun/star/lang/XServiceInfo.hpp> 35cdf0e10cSrcweir #include <com/sun/star/lang/DisposedException.hpp> 36cdf0e10cSrcweir #include <com/sun/star/awt/XFocusListener.hpp> 37cdf0e10cSrcweir #include <com/sun/star/document/XEventListener.hpp> 38cdf0e10cSrcweir 39cdf0e10cSrcweir 40cdf0e10cSrcweir #include <memory> 41cdf0e10cSrcweir 42cdf0e10cSrcweir class Window; 43cdf0e10cSrcweir 44cdf0e10cSrcweir namespace sd { namespace slidesorter { 45cdf0e10cSrcweir class SlideSorter; 46cdf0e10cSrcweir } } 47cdf0e10cSrcweir 48cdf0e10cSrcweir namespace accessibility { 49cdf0e10cSrcweir 50cdf0e10cSrcweir 51cdf0e10cSrcweir class AccessibleSlideSorterObject; 52cdf0e10cSrcweir 53cdf0e10cSrcweir typedef ::cppu::WeakComponentImplHelper6< 54cdf0e10cSrcweir ::com::sun::star::accessibility::XAccessible, 55cdf0e10cSrcweir ::com::sun::star::accessibility::XAccessibleEventBroadcaster, 56cdf0e10cSrcweir ::com::sun::star::accessibility::XAccessibleContext, 57cdf0e10cSrcweir ::com::sun::star::accessibility::XAccessibleComponent, 58cdf0e10cSrcweir ::com::sun::star::accessibility::XAccessibleSelection, 59cdf0e10cSrcweir ::com::sun::star::lang::XServiceInfo 60cdf0e10cSrcweir > AccessibleSlideSorterViewBase; 61cdf0e10cSrcweir 62cdf0e10cSrcweir /** This class makes the SlideSorterViewShell accessible. It uses objects 63cdf0e10cSrcweir of the AccessibleSlideSorterObject class to the make the page objects 64cdf0e10cSrcweir accessible. 65cdf0e10cSrcweir */ 66cdf0e10cSrcweir class AccessibleSlideSorterView 67cdf0e10cSrcweir : public ::sd::MutexOwner, 68cdf0e10cSrcweir public AccessibleSlideSorterViewBase 69cdf0e10cSrcweir { 70cdf0e10cSrcweir public: 71cdf0e10cSrcweir AccessibleSlideSorterView( 72cdf0e10cSrcweir ::sd::slidesorter::SlideSorter& rSlideSorter, 73cdf0e10cSrcweir const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible> & rxParent, 74cdf0e10cSrcweir ::Window* pParentWindow); 75cdf0e10cSrcweir 76cdf0e10cSrcweir virtual ~AccessibleSlideSorterView (void); 77cdf0e10cSrcweir 78cdf0e10cSrcweir /** This method acts like a dispose call. It sends a disposing to all 79cdf0e10cSrcweir of its listeners. It may be called twice. 80cdf0e10cSrcweir */ 81cdf0e10cSrcweir void Destroyed (void); 82cdf0e10cSrcweir 83cdf0e10cSrcweir void FireAccessibleEvent ( 84cdf0e10cSrcweir short nEventId, 85cdf0e10cSrcweir const ::com::sun::star::uno::Any& rOldValue, 86cdf0e10cSrcweir const ::com::sun::star::uno::Any& rNewValue); 87cdf0e10cSrcweir 88cdf0e10cSrcweir virtual void SAL_CALL disposing (void); 89cdf0e10cSrcweir 90cdf0e10cSrcweir /** Return the implementation object of the specified child. 91cdf0e10cSrcweir @param nIndex 92cdf0e10cSrcweir Index of the child for which to return the implementation object. 93cdf0e10cSrcweir */ 94cdf0e10cSrcweir AccessibleSlideSorterObject* GetAccessibleChildImplementation (sal_Int32 nIndex); 95cdf0e10cSrcweir 96cdf0e10cSrcweir //===== XAccessible ======================================================= 97cdf0e10cSrcweir 98cdf0e10cSrcweir virtual ::com::sun::star::uno::Reference< 99cdf0e10cSrcweir ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL 100cdf0e10cSrcweir getAccessibleContext (void) 101cdf0e10cSrcweir throw (::com::sun::star::uno::RuntimeException); 102cdf0e10cSrcweir 103cdf0e10cSrcweir 104cdf0e10cSrcweir //===== XAccessibleEventBroadcaster ======================================= 105cdf0e10cSrcweir virtual void SAL_CALL 106cdf0e10cSrcweir addEventListener( 107cdf0e10cSrcweir const ::com::sun::star::uno::Reference< 108cdf0e10cSrcweir ::com::sun::star::accessibility::XAccessibleEventListener >& rxListener) 109cdf0e10cSrcweir throw (::com::sun::star::uno::RuntimeException); 110cdf0e10cSrcweir 111cdf0e10cSrcweir virtual void SAL_CALL 112cdf0e10cSrcweir removeEventListener( 113cdf0e10cSrcweir const ::com::sun::star::uno::Reference< 114cdf0e10cSrcweir ::com::sun::star::accessibility::XAccessibleEventListener >& rxListener ) 115cdf0e10cSrcweir throw (::com::sun::star::uno::RuntimeException); 116cdf0e10cSrcweir 117cdf0e10cSrcweir using cppu::WeakComponentImplHelperBase::addEventListener; 118cdf0e10cSrcweir using cppu::WeakComponentImplHelperBase::removeEventListener; 119cdf0e10cSrcweir 120cdf0e10cSrcweir //===== XAccessibleContext ============================================== 121cdf0e10cSrcweir 122cdf0e10cSrcweir /// Return the number of currently visible children. 123cdf0e10cSrcweir virtual sal_Int32 SAL_CALL 124cdf0e10cSrcweir getAccessibleChildCount (void) throw (::com::sun::star::uno::RuntimeException); 125cdf0e10cSrcweir 126cdf0e10cSrcweir /// Return the specified child or throw exception. 127cdf0e10cSrcweir virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible> SAL_CALL 128cdf0e10cSrcweir getAccessibleChild (sal_Int32 nIndex) 129cdf0e10cSrcweir throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); 130cdf0e10cSrcweir 131cdf0e10cSrcweir /// Return a reference to the parent. 132cdf0e10cSrcweir virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible> SAL_CALL 133cdf0e10cSrcweir getAccessibleParent (void) 134cdf0e10cSrcweir throw (::com::sun::star::uno::RuntimeException); 135cdf0e10cSrcweir 136cdf0e10cSrcweir /// Return this objects index among the parents children. 137cdf0e10cSrcweir virtual sal_Int32 SAL_CALL 138cdf0e10cSrcweir getAccessibleIndexInParent (void) 139cdf0e10cSrcweir throw (::com::sun::star::uno::RuntimeException); 140cdf0e10cSrcweir 141cdf0e10cSrcweir /// Return this object's role. 142cdf0e10cSrcweir virtual sal_Int16 SAL_CALL 143cdf0e10cSrcweir getAccessibleRole (void) 144cdf0e10cSrcweir throw (::com::sun::star::uno::RuntimeException); 145cdf0e10cSrcweir 146cdf0e10cSrcweir /// Return this object's description. 147cdf0e10cSrcweir virtual ::rtl::OUString SAL_CALL 148cdf0e10cSrcweir getAccessibleDescription (void) 149cdf0e10cSrcweir throw (::com::sun::star::uno::RuntimeException); 150cdf0e10cSrcweir 151cdf0e10cSrcweir /// Return the object's current name. 152cdf0e10cSrcweir virtual ::rtl::OUString SAL_CALL 153cdf0e10cSrcweir getAccessibleName (void) 154cdf0e10cSrcweir throw (::com::sun::star::uno::RuntimeException); 155cdf0e10cSrcweir 156cdf0e10cSrcweir /// Return NULL to indicate that an empty relation set. 157cdf0e10cSrcweir virtual ::com::sun::star::uno::Reference< 158cdf0e10cSrcweir ::com::sun::star::accessibility::XAccessibleRelationSet> SAL_CALL 159cdf0e10cSrcweir getAccessibleRelationSet (void) 160cdf0e10cSrcweir throw (::com::sun::star::uno::RuntimeException); 161cdf0e10cSrcweir 162cdf0e10cSrcweir /// Return the set of current states. 163cdf0e10cSrcweir virtual ::com::sun::star::uno::Reference< 164cdf0e10cSrcweir ::com::sun::star::accessibility::XAccessibleStateSet> SAL_CALL 165cdf0e10cSrcweir getAccessibleStateSet (void) 166cdf0e10cSrcweir throw (::com::sun::star::uno::RuntimeException); 167cdf0e10cSrcweir 168cdf0e10cSrcweir /** Return the parents locale or throw exception if this object has no 169cdf0e10cSrcweir parent yet/anymore. 170cdf0e10cSrcweir */ 171cdf0e10cSrcweir virtual ::com::sun::star::lang::Locale SAL_CALL 172cdf0e10cSrcweir getLocale (void) 173cdf0e10cSrcweir throw (::com::sun::star::uno::RuntimeException, 174cdf0e10cSrcweir ::com::sun::star::accessibility::IllegalAccessibleComponentStateException); 175cdf0e10cSrcweir 176cdf0e10cSrcweir //===== XAccessibleComponent ================================================ 177cdf0e10cSrcweir 178cdf0e10cSrcweir /** The default implementation uses the result of 179cdf0e10cSrcweir <member>getBounds</member> to determine whether the given point lies 180cdf0e10cSrcweir inside this object. 181cdf0e10cSrcweir */ 182cdf0e10cSrcweir virtual sal_Bool SAL_CALL containsPoint ( 183cdf0e10cSrcweir const ::com::sun::star::awt::Point& aPoint) 184cdf0e10cSrcweir throw (::com::sun::star::uno::RuntimeException); 185cdf0e10cSrcweir 186cdf0e10cSrcweir /** The default implementation returns an empty reference. 187cdf0e10cSrcweir */ 188cdf0e10cSrcweir virtual ::com::sun::star::uno::Reference< 189cdf0e10cSrcweir ::com::sun::star::accessibility::XAccessible > SAL_CALL 190cdf0e10cSrcweir getAccessibleAtPoint ( 191cdf0e10cSrcweir const ::com::sun::star::awt::Point& aPoint) 192cdf0e10cSrcweir throw (::com::sun::star::uno::RuntimeException); 193cdf0e10cSrcweir 194cdf0e10cSrcweir /** The default implementation returns an empty rectangle. 195cdf0e10cSrcweir */ 196cdf0e10cSrcweir virtual ::com::sun::star::awt::Rectangle SAL_CALL getBounds (void) 197cdf0e10cSrcweir throw (::com::sun::star::uno::RuntimeException); 198cdf0e10cSrcweir 199cdf0e10cSrcweir /** The default implementation uses the result of 200cdf0e10cSrcweir <member>getBounds</member> to determine the location. 201cdf0e10cSrcweir */ 202cdf0e10cSrcweir virtual ::com::sun::star::awt::Point SAL_CALL getLocation (void) 203cdf0e10cSrcweir throw (::com::sun::star::uno::RuntimeException); 204cdf0e10cSrcweir 205cdf0e10cSrcweir /** The default implementation returns an empty position, i.e. the 206cdf0e10cSrcweir * result of the default constructor of <type>com::sun::star::awt::Point</type>. 207cdf0e10cSrcweir */ 208cdf0e10cSrcweir virtual ::com::sun::star::awt::Point SAL_CALL getLocationOnScreen (void) 209cdf0e10cSrcweir throw (::com::sun::star::uno::RuntimeException); 210cdf0e10cSrcweir 211cdf0e10cSrcweir /** The default implementation uses the result of 212cdf0e10cSrcweir <member>getBounds</member> to determine the size. 213cdf0e10cSrcweir */ 214cdf0e10cSrcweir virtual ::com::sun::star::awt::Size SAL_CALL getSize (void) 215cdf0e10cSrcweir throw (::com::sun::star::uno::RuntimeException); 216cdf0e10cSrcweir 217cdf0e10cSrcweir /** The default implementation does nothing. 218cdf0e10cSrcweir */ 219cdf0e10cSrcweir virtual void SAL_CALL grabFocus (void) 220cdf0e10cSrcweir throw (::com::sun::star::uno::RuntimeException); 221cdf0e10cSrcweir 222cdf0e10cSrcweir /** Returns black as the default foreground color. 223cdf0e10cSrcweir */ 224cdf0e10cSrcweir virtual sal_Int32 SAL_CALL getForeground (void) 225cdf0e10cSrcweir throw (::com::sun::star::uno::RuntimeException); 226cdf0e10cSrcweir 227cdf0e10cSrcweir /** Returns white as the default background color. 228cdf0e10cSrcweir */ 229cdf0e10cSrcweir virtual sal_Int32 SAL_CALL getBackground (void) 230cdf0e10cSrcweir throw (::com::sun::star::uno::RuntimeException); 231cdf0e10cSrcweir 232cdf0e10cSrcweir 233cdf0e10cSrcweir //===== XAccessibleSelection ============================================== 234cdf0e10cSrcweir 235cdf0e10cSrcweir virtual void SAL_CALL 236cdf0e10cSrcweir selectAccessibleChild (sal_Int32 nChildIndex) 237cdf0e10cSrcweir throw (::com::sun::star::lang::IndexOutOfBoundsException, 238cdf0e10cSrcweir ::com::sun::star::uno::RuntimeException); 239cdf0e10cSrcweir 240cdf0e10cSrcweir virtual sal_Bool SAL_CALL 241cdf0e10cSrcweir isAccessibleChildSelected( sal_Int32 nChildIndex ) 242cdf0e10cSrcweir throw (::com::sun::star::lang::IndexOutOfBoundsException, 243cdf0e10cSrcweir ::com::sun::star::uno::RuntimeException); 244cdf0e10cSrcweir 245cdf0e10cSrcweir virtual void SAL_CALL 246cdf0e10cSrcweir clearAccessibleSelection( ) 247cdf0e10cSrcweir throw (::com::sun::star::uno::RuntimeException); 248cdf0e10cSrcweir 249cdf0e10cSrcweir virtual void SAL_CALL 250cdf0e10cSrcweir selectAllAccessibleChildren( ) 251cdf0e10cSrcweir throw (::com::sun::star::uno::RuntimeException); 252cdf0e10cSrcweir 253cdf0e10cSrcweir virtual sal_Int32 SAL_CALL 254cdf0e10cSrcweir getSelectedAccessibleChildCount( ) 255cdf0e10cSrcweir throw (::com::sun::star::uno::RuntimeException); 256cdf0e10cSrcweir 257cdf0e10cSrcweir virtual ::com::sun::star::uno::Reference< 258cdf0e10cSrcweir ::com::sun::star::accessibility::XAccessible > SAL_CALL 259cdf0e10cSrcweir getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) 260cdf0e10cSrcweir throw (::com::sun::star::lang::IndexOutOfBoundsException, 261cdf0e10cSrcweir ::com::sun::star::uno::RuntimeException); 262cdf0e10cSrcweir 263cdf0e10cSrcweir virtual void SAL_CALL 264cdf0e10cSrcweir deselectAccessibleChild( sal_Int32 nSelectedChildIndex ) 265cdf0e10cSrcweir throw (::com::sun::star::lang::IndexOutOfBoundsException, 266cdf0e10cSrcweir ::com::sun::star::uno::RuntimeException); 267cdf0e10cSrcweir 268cdf0e10cSrcweir 269cdf0e10cSrcweir //===== XServiceInfo ==================================================== 270cdf0e10cSrcweir 271cdf0e10cSrcweir /** Returns an identifier for the implementation of this object. 272cdf0e10cSrcweir */ 273cdf0e10cSrcweir virtual ::rtl::OUString SAL_CALL 274cdf0e10cSrcweir getImplementationName (void) 275cdf0e10cSrcweir throw (::com::sun::star::uno::RuntimeException); 276cdf0e10cSrcweir 277cdf0e10cSrcweir /** Return whether the specified service is supported by this class. 278cdf0e10cSrcweir */ 279cdf0e10cSrcweir virtual sal_Bool SAL_CALL 280cdf0e10cSrcweir supportsService (const ::rtl::OUString& sServiceName) 281cdf0e10cSrcweir throw (::com::sun::star::uno::RuntimeException); 282cdf0e10cSrcweir 283cdf0e10cSrcweir /** Returns a list of all supported services. 284cdf0e10cSrcweir */ 285cdf0e10cSrcweir virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL 286cdf0e10cSrcweir getSupportedServiceNames (void) 287cdf0e10cSrcweir throw (::com::sun::star::uno::RuntimeException); 288cdf0e10cSrcweir 289*0deba7fbSSteve Yin virtual void SwitchViewActivated (void); 290cdf0e10cSrcweir private: 291cdf0e10cSrcweir class Implementation; 292cdf0e10cSrcweir ::std::auto_ptr<Implementation> mpImpl; 293cdf0e10cSrcweir 294cdf0e10cSrcweir ::sd::slidesorter::SlideSorter& mrSlideSorter; 295cdf0e10cSrcweir 296cdf0e10cSrcweir ::com::sun::star::uno::Reference< 297cdf0e10cSrcweir ::com::sun::star::accessibility::XAccessible> mxParent; 298cdf0e10cSrcweir 299cdf0e10cSrcweir sal_uInt32 mnClientId; 300cdf0e10cSrcweir 301cdf0e10cSrcweir ::Window* mpContentWindow; 302cdf0e10cSrcweir 303cdf0e10cSrcweir /** Check whether or not the object has been disposed (or is in the 304cdf0e10cSrcweir state of beeing disposed). If that is the case then 305cdf0e10cSrcweir DisposedException is thrown to inform the (indirect) caller of the 306cdf0e10cSrcweir foul deed. 307cdf0e10cSrcweir */ 308cdf0e10cSrcweir void ThrowIfDisposed (void) 309cdf0e10cSrcweir throw (::com::sun::star::lang::DisposedException); 310cdf0e10cSrcweir 311cdf0e10cSrcweir /** Check whether or not the object has been disposed (or is in the 312cdf0e10cSrcweir state of beeing disposed). 313cdf0e10cSrcweir 314cdf0e10cSrcweir @return sal_True, if the object is disposed or in the course 315cdf0e10cSrcweir of being disposed. Otherwise, sal_False is returned. 316cdf0e10cSrcweir */ 317cdf0e10cSrcweir sal_Bool IsDisposed (void); 318cdf0e10cSrcweir }; 319cdf0e10cSrcweir 320cdf0e10cSrcweir } // end of namespace ::accessibility 321cdf0e10cSrcweir 322cdf0e10cSrcweir #endif 323