1*d3553c6bSHerbert Dürr /************************************************************** 2a7f6452cSSteve Yin * 3*d3553c6bSHerbert Dürr * Licensed to the Apache Software Foundation (ASF) under one 4*d3553c6bSHerbert Dürr * or more contributor license agreements. See the NOTICE file 5*d3553c6bSHerbert Dürr * distributed with this work for additional information 6*d3553c6bSHerbert Dürr * regarding copyright ownership. The ASF licenses this file 7*d3553c6bSHerbert Dürr * to you under the Apache License, Version 2.0 (the 8*d3553c6bSHerbert Dürr * "License"); you may not use this file except in compliance 9*d3553c6bSHerbert Dürr * with the License. You may obtain a copy of the License at 10a7f6452cSSteve Yin * 11*d3553c6bSHerbert Dürr * http://www.apache.org/licenses/LICENSE-2.0 12a7f6452cSSteve Yin * 13*d3553c6bSHerbert Dürr * Unless required by applicable law or agreed to in writing, 14*d3553c6bSHerbert Dürr * software distributed under the License is distributed on an 15*d3553c6bSHerbert Dürr * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*d3553c6bSHerbert Dürr * KIND, either express or implied. See the License for the 17*d3553c6bSHerbert Dürr * specific language governing permissions and limitations 18*d3553c6bSHerbert Dürr * under the License. 19a7f6452cSSteve Yin * 20*d3553c6bSHerbert Dürr *************************************************************/ 21a7f6452cSSteve Yin 22a7f6452cSSteve Yin #ifndef _SVXPIXELACCESSIBLECONTEXT_HXX 23a7f6452cSSteve Yin #define _SVXPIXELACCESSIBLECONTEXT_HXX 24a7f6452cSSteve Yin 25a7f6452cSSteve Yin #ifndef _COM_SUN_STAR_ACCESSIBILITY_XACCESSIBLE_HPP_ 26a7f6452cSSteve Yin #include <com/sun/star/accessibility/XAccessible.hpp> 27a7f6452cSSteve Yin #endif 28a7f6452cSSteve Yin #ifndef _COM_SUN_STAR_ACCESSIBILITY_XACCESSIBLECOMPONENT_HPP_ 29a7f6452cSSteve Yin #include <com/sun/star/accessibility/XAccessibleComponent.hpp> 30a7f6452cSSteve Yin #endif 31a7f6452cSSteve Yin #ifndef _COM_SUN_STAR_ACCESSIBILITY_XACCESSIBLECONTEXT_HPP_ 32a7f6452cSSteve Yin #include <com/sun/star/accessibility/XAccessibleContext.hpp> 33a7f6452cSSteve Yin #endif 34a7f6452cSSteve Yin #ifndef _COM_SUN_STAR_ACCESSIBILITY_XACCESSIBLEEVENTBROADCASTER_HPP_ 35a7f6452cSSteve Yin #include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp> 36a7f6452cSSteve Yin #endif 37a7f6452cSSteve Yin #ifndef _COM_SUN_STAR_ACCESSIBILITY_ILLEGALACCESSIBLECOMPONENTSTATEEXCEPTION_HPP_ 38a7f6452cSSteve Yin #include <com/sun/star/accessibility/IllegalAccessibleComponentStateException.hpp> 39a7f6452cSSteve Yin #endif 40a7f6452cSSteve Yin #ifndef _COM_SUN_STAR_ACCESSIBILITY_XACCESSIBLESELECTION_HPP_ 41a7f6452cSSteve Yin #include <com/sun/star/accessibility/XAccessibleSelection.hpp> 42a7f6452cSSteve Yin #endif 43a7f6452cSSteve Yin #ifndef _COM_SUN_STAR_ACCESSIBILITY_XACCESSIBLEVALUE_HPP_ 44a7f6452cSSteve Yin #include <com/sun/star/accessibility/XAccessibleValue.hpp> 45a7f6452cSSteve Yin #endif 46a7f6452cSSteve Yin 47a7f6452cSSteve Yin #ifndef _COM_SUN_STAR_BEANS_XPROPERTYCHANGELISTENER_HPP_ 48a7f6452cSSteve Yin #include <com/sun/star/beans/XPropertyChangeListener.hpp> 49a7f6452cSSteve Yin #endif 50a7f6452cSSteve Yin #ifndef _COM_SUN_STAR_UNO_REFERENCE_HXX_ 51a7f6452cSSteve Yin #include <com/sun/star/uno/Reference.hxx> 52a7f6452cSSteve Yin #endif 53a7f6452cSSteve Yin #ifndef _CPPUHELPER_WEAK_HXX_ 54a7f6452cSSteve Yin #include <cppuhelper/weak.hxx> 55a7f6452cSSteve Yin #endif 56a7f6452cSSteve Yin #ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_ 57a7f6452cSSteve Yin #include <com/sun/star/lang/XServiceInfo.hpp> 58a7f6452cSSteve Yin #endif 59a7f6452cSSteve Yin #ifndef _COM_SUN_STAR_LANG_XTYPEPROVIDER_HPP_ 60a7f6452cSSteve Yin #include <com/sun/star/lang/XTypeProvider.hpp> 61a7f6452cSSteve Yin #endif 62a7f6452cSSteve Yin #ifndef _COM_SUN_STAR_LANG_XSERVICENAME_HPP_ 63a7f6452cSSteve Yin #include <com/sun/star/lang/XServiceName.hpp> 64a7f6452cSSteve Yin #endif 65a7f6452cSSteve Yin #ifndef _COM_SUN_STAR_LANG_INDEXOUTOFBOUNDSEXCEPTION_HPP_ 66a7f6452cSSteve Yin #include <com/sun/star/lang/IndexOutOfBoundsException.hpp> 67a7f6452cSSteve Yin #endif 68a7f6452cSSteve Yin #ifndef _COM_SUN_STAR_LANG_DISPOSEDEXCEPTION_HPP_ 69a7f6452cSSteve Yin #include <com/sun/star/lang/DisposedException.hpp> 70a7f6452cSSteve Yin #endif 71a7f6452cSSteve Yin #ifndef _VOS_MUTEX_HXX_ 72a7f6452cSSteve Yin #include <vos/mutex.hxx> 73a7f6452cSSteve Yin #endif 74a7f6452cSSteve Yin #ifndef _CPPUHELPER_INTERFACECONTAINER_H_ 75a7f6452cSSteve Yin #include <cppuhelper/interfacecontainer.h> 76a7f6452cSSteve Yin #endif 77a7f6452cSSteve Yin #ifndef _CPPUHELPER_COMPBASE6_HXX_ 78a7f6452cSSteve Yin #include <cppuhelper/compbase6.hxx> 79a7f6452cSSteve Yin #endif 80a7f6452cSSteve Yin #ifndef _CPPUHELPER_COMPBASE7_HXX_ 81a7f6452cSSteve Yin #include <cppuhelper/compbase7.hxx> 82a7f6452cSSteve Yin #endif 83a7f6452cSSteve Yin #ifndef _CPPUHELPER_COMPBASE5_HXX_ 84a7f6452cSSteve Yin #include <cppuhelper/compbase5.hxx> 85a7f6452cSSteve Yin #endif 86a7f6452cSSteve Yin #ifndef _COMPHELPER_BROADCASTHELPER_HXX_ 87a7f6452cSSteve Yin #include <comphelper/broadcasthelper.hxx> 88a7f6452cSSteve Yin #endif 89a7f6452cSSteve Yin #ifndef _CPPUHELPER_IMPLBASE6_HXX_ 90a7f6452cSSteve Yin #include <cppuhelper/implbase6.hxx> 91a7f6452cSSteve Yin #endif 92a7f6452cSSteve Yin #include <comphelper/servicehelper.hxx> 93a7f6452cSSteve Yin 94a7f6452cSSteve Yin //#ifndef _COM_SUN_STAR_ACCESSIBILITY_XACCESSIBLETABLE_HPP_ 95a7f6452cSSteve Yin //#include <com/sun/star/accessibility/XAccessibleTable.hpp> 96a7f6452cSSteve Yin //#endif 97a7f6452cSSteve Yin 98a7f6452cSSteve Yin #ifndef _SVX_RECTENUM_HXX //autogen 99a7f6452cSSteve Yin #include <rectenum.hxx> 100a7f6452cSSteve Yin #endif 101a7f6452cSSteve Yin 102a7f6452cSSteve Yin 103a7f6452cSSteve Yin #include <tools/gen.hxx> 104a7f6452cSSteve Yin 105a7f6452cSSteve Yin 106a7f6452cSSteve Yin namespace com { namespace sun { namespace star { namespace awt { 107a7f6452cSSteve Yin struct Point; 108a7f6452cSSteve Yin struct Rectangle; 109a7f6452cSSteve Yin struct Size; 110a7f6452cSSteve Yin class XFocusListener; 111a7f6452cSSteve Yin } } } }; 112a7f6452cSSteve Yin class SvxPixelCtl; 113a7f6452cSSteve Yin 114a7f6452cSSteve Yin 115a7f6452cSSteve Yin typedef ::cppu::WeakAggComponentImplHelper5< 116a7f6452cSSteve Yin ::com::sun::star::accessibility::XAccessible, 117a7f6452cSSteve Yin ::com::sun::star::accessibility::XAccessibleComponent, 118a7f6452cSSteve Yin ::com::sun::star::accessibility::XAccessibleContext, 119a7f6452cSSteve Yin ::com::sun::star::accessibility::XAccessibleEventBroadcaster, 120a7f6452cSSteve Yin ::com::sun::star::lang::XServiceInfo > 121a7f6452cSSteve Yin SvxPixelCtlAccessibleChild_BASE; 122a7f6452cSSteve Yin 123a7f6452cSSteve Yin class SvxPixelCtlAccessibleChild : 124a7f6452cSSteve Yin public ::comphelper::OBaseMutex, 125a7f6452cSSteve Yin public SvxPixelCtlAccessibleChild_BASE 126a7f6452cSSteve Yin { 127a7f6452cSSteve Yin SvxPixelCtl* mrParentWindow; 128a7f6452cSSteve Yin ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > mxParent; 129a7f6452cSSteve Yin void IsValid() throw (::com::sun::star::uno::RuntimeException); 130a7f6452cSSteve Yin sal_Bool m_bPixelColorOrBG;//Pixel Color Or BackGround Color 131a7f6452cSSteve Yin Point maPoint; 132a7f6452cSSteve Yin Rectangle* mpBoundingBox; 133a7f6452cSSteve Yin /// index of child in parent 134a7f6452cSSteve Yin long mnIndexInParent; 135a7f6452cSSteve Yin /// Mutex guarding this object. 136a7f6452cSSteve Yin ::osl::Mutex m_aMutex; 137a7f6452cSSteve Yin public: 138a7f6452cSSteve Yin SvxPixelCtlAccessibleChild( 139a7f6452cSSteve Yin SvxPixelCtl* rWindow, 140a7f6452cSSteve Yin sal_Bool bPixelColorOrBG, 141a7f6452cSSteve Yin const Point& aPoint, 142a7f6452cSSteve Yin const Rectangle& rBounds, 143a7f6452cSSteve Yin const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& xParent, 144a7f6452cSSteve Yin long nIndexInParent ); 145a7f6452cSSteve Yin ~SvxPixelCtlAccessibleChild(); 146a7f6452cSSteve Yin 147a7f6452cSSteve Yin //XAccessible 148a7f6452cSSteve Yin virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) throw (::com::sun::star::uno::RuntimeException); 149a7f6452cSSteve Yin 150a7f6452cSSteve Yin //XAccessibleContext 151a7f6452cSSteve Yin virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException); 152a7f6452cSSteve Yin virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw (::com::sun::star::uno::RuntimeException); 153a7f6452cSSteve Yin virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) throw (::com::sun::star::uno::RuntimeException); 154a7f6452cSSteve Yin virtual sal_Int32 SAL_CALL getAccessibleIndexInParent( ) throw (::com::sun::star::uno::RuntimeException); 155a7f6452cSSteve Yin virtual sal_Int16 SAL_CALL getAccessibleRole( ) throw (::com::sun::star::uno::RuntimeException); 156a7f6452cSSteve Yin virtual ::rtl::OUString SAL_CALL getAccessibleDescription( ) throw (::com::sun::star::uno::RuntimeException); 157a7f6452cSSteve Yin virtual ::rtl::OUString SAL_CALL getAccessibleName( ) throw (::com::sun::star::uno::RuntimeException); 158a7f6452cSSteve Yin virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet( ) throw (::com::sun::star::uno::RuntimeException); 159a7f6452cSSteve Yin virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) throw (::com::sun::star::uno::RuntimeException); 160a7f6452cSSteve Yin virtual ::com::sun::star::lang::Locale SAL_CALL getLocale( ) throw (::com::sun::star::accessibility::IllegalAccessibleComponentStateException, ::com::sun::star::uno::RuntimeException); 161a7f6452cSSteve Yin 162a7f6452cSSteve Yin 163a7f6452cSSteve Yin //XAccessibleComponent 164a7f6452cSSteve Yin virtual sal_Bool SAL_CALL containsPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException); 165a7f6452cSSteve Yin virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException); 166a7f6452cSSteve Yin virtual ::com::sun::star::awt::Rectangle SAL_CALL getBounds( ) throw (::com::sun::star::uno::RuntimeException); 167a7f6452cSSteve Yin virtual ::com::sun::star::awt::Point SAL_CALL getLocation( ) throw (::com::sun::star::uno::RuntimeException); 168a7f6452cSSteve Yin virtual ::com::sun::star::awt::Point SAL_CALL getLocationOnScreen( ) throw (::com::sun::star::uno::RuntimeException); 169a7f6452cSSteve Yin virtual ::com::sun::star::awt::Size SAL_CALL getSize( ) throw (::com::sun::star::uno::RuntimeException); 170a7f6452cSSteve Yin virtual sal_Int32 SAL_CALL getForeground( ) throw (::com::sun::star::uno::RuntimeException); 171a7f6452cSSteve Yin virtual sal_Int32 SAL_CALL getBackground( ) throw (::com::sun::star::uno::RuntimeException); 172a7f6452cSSteve Yin virtual void SAL_CALL grabFocus( ) throw (::com::sun::star::uno::RuntimeException); 173a7f6452cSSteve Yin 174a7f6452cSSteve Yin //XServiceInfo 175a7f6452cSSteve Yin virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw (::com::sun::star::uno::RuntimeException); 176a7f6452cSSteve Yin virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw (::com::sun::star::uno::RuntimeException); 177a7f6452cSSteve Yin virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw (::com::sun::star::uno::RuntimeException); 178a7f6452cSSteve Yin 179a7f6452cSSteve Yin //Methods for XAccessibleEventBroadcaster 180a7f6452cSSteve Yin sal_uInt32 mnClientId; 181a7f6452cSSteve Yin 182a7f6452cSSteve Yin virtual void SAL_CALL 183a7f6452cSSteve Yin addEventListener( 184a7f6452cSSteve Yin const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener ) 185a7f6452cSSteve Yin throw( com::sun::star::uno::RuntimeException ); 186a7f6452cSSteve Yin 187a7f6452cSSteve Yin virtual void SAL_CALL 188a7f6452cSSteve Yin removeEventListener( 189a7f6452cSSteve Yin const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener ) 190a7f6452cSSteve Yin throw( com::sun::star::uno::RuntimeException ); 191a7f6452cSSteve Yin void CommitChange( const com::sun::star::accessibility::AccessibleEventObject& rEvent ); 192a7f6452cSSteve Yin 193a7f6452cSSteve Yin //Solution: Add the event handling method 194a7f6452cSSteve Yin void FireAccessibleEvent (short nEventId, const ::com::sun::star::uno::Any& rOld, const ::com::sun::star::uno::Any& rNew); 195a7f6452cSSteve Yin virtual void SAL_CALL disposing(); 196a7f6452cSSteve Yin 197a7f6452cSSteve Yin virtual Rectangle GetBoundingBoxOnScreen( void ) throw( ::com::sun::star::uno::RuntimeException ); 198a7f6452cSSteve Yin 199a7f6452cSSteve Yin virtual Rectangle GetBoundingBox( void ) throw( ::com::sun::star::uno::RuntimeException ); 200a7f6452cSSteve Yin 201a7f6452cSSteve Yin /// @returns true if it's disposed or in disposing 202a7f6452cSSteve Yin inline sal_Bool IsAlive( void ) const; 203a7f6452cSSteve Yin /// @returns true if it's not disposed and no in disposing 204a7f6452cSSteve Yin inline sal_Bool IsNotAlive( void ) const; 205a7f6452cSSteve Yin /// throws the exception DisposedException if it's not alive 206a7f6452cSSteve Yin void ThrowExceptionIfNotAlive( void ) throw( ::com::sun::star::lang::DisposedException ); 207a7f6452cSSteve Yin 208a7f6452cSSteve Yin 209a7f6452cSSteve Yin void CheckChild(); 210a7f6452cSSteve Yin void SelectChild( sal_Bool bSelect); 211a7f6452cSSteve Yin void ChangePixelColorOrBG(sal_Bool bPixelColorOrBG){ m_bPixelColorOrBG = bPixelColorOrBG ;} 212a7f6452cSSteve Yin ::rtl::OUString GetName(); 213a7f6452cSSteve Yin }; 214a7f6452cSSteve Yin 215a7f6452cSSteve Yin 216a7f6452cSSteve Yin typedef ::cppu::WeakAggComponentImplHelper6< 217a7f6452cSSteve Yin ::com::sun::star::accessibility::XAccessible, 218a7f6452cSSteve Yin ::com::sun::star::accessibility::XAccessibleComponent, 219a7f6452cSSteve Yin ::com::sun::star::accessibility::XAccessibleContext, 220a7f6452cSSteve Yin ::com::sun::star::accessibility::XAccessibleEventBroadcaster, 221a7f6452cSSteve Yin ::com::sun::star::accessibility::XAccessibleSelection, 222a7f6452cSSteve Yin // ::com::sun::star::accessibility::XAccessibleTable, 223a7f6452cSSteve Yin ::com::sun::star::lang::XServiceInfo > 224a7f6452cSSteve Yin SvxPixelCtlAccessible_BASE; 225a7f6452cSSteve Yin 226a7f6452cSSteve Yin class SvxPixelCtlAccessible : 227a7f6452cSSteve Yin public ::comphelper::OBaseMutex, 228a7f6452cSSteve Yin public SvxPixelCtlAccessible_BASE 229a7f6452cSSteve Yin { 230a7f6452cSSteve Yin SvxPixelCtl* pPixelCtl; 231a7f6452cSSteve Yin void IsValid() throw (::com::sun::star::uno::RuntimeException); 232a7f6452cSSteve Yin 233a7f6452cSSteve Yin public: 234a7f6452cSSteve Yin SvxPixelCtlAccessible(SvxPixelCtl& rWindow); 235a7f6452cSSteve Yin ~SvxPixelCtlAccessible(); 236a7f6452cSSteve Yin 237a7f6452cSSteve Yin void ensureIsAlive() const throw ( ::com::sun::star::lang::DisposedException ); 238a7f6452cSSteve Yin 239a7f6452cSSteve Yin //XAccessible 240a7f6452cSSteve Yin virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) throw (::com::sun::star::uno::RuntimeException); 241a7f6452cSSteve Yin 242a7f6452cSSteve Yin //XAccessibleContext 243a7f6452cSSteve Yin virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException); 244a7f6452cSSteve Yin virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw (::com::sun::star::uno::RuntimeException); 245a7f6452cSSteve Yin virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) throw (::com::sun::star::uno::RuntimeException); 246a7f6452cSSteve Yin virtual sal_Int32 SAL_CALL getAccessibleIndexInParent( ) throw (::com::sun::star::uno::RuntimeException); 247a7f6452cSSteve Yin virtual sal_Int16 SAL_CALL getAccessibleRole( ) throw (::com::sun::star::uno::RuntimeException); 248a7f6452cSSteve Yin virtual ::rtl::OUString SAL_CALL getAccessibleDescription( ) throw (::com::sun::star::uno::RuntimeException); 249a7f6452cSSteve Yin virtual ::rtl::OUString SAL_CALL getAccessibleName( ) throw (::com::sun::star::uno::RuntimeException); 250a7f6452cSSteve Yin virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet( ) throw (::com::sun::star::uno::RuntimeException); 251a7f6452cSSteve Yin virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) throw (::com::sun::star::uno::RuntimeException); 252a7f6452cSSteve Yin virtual ::com::sun::star::lang::Locale SAL_CALL getLocale( ) throw (::com::sun::star::accessibility::IllegalAccessibleComponentStateException, ::com::sun::star::uno::RuntimeException); 253a7f6452cSSteve Yin 254a7f6452cSSteve Yin 255a7f6452cSSteve Yin //XAccessibleComponent 256a7f6452cSSteve Yin virtual sal_Bool SAL_CALL containsPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException); 257a7f6452cSSteve Yin virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException); 258a7f6452cSSteve Yin virtual ::com::sun::star::awt::Rectangle SAL_CALL getBounds( ) throw (::com::sun::star::uno::RuntimeException); 259a7f6452cSSteve Yin virtual ::com::sun::star::awt::Point SAL_CALL getLocation( ) throw (::com::sun::star::uno::RuntimeException); 260a7f6452cSSteve Yin virtual ::com::sun::star::awt::Point SAL_CALL getLocationOnScreen( ) throw (::com::sun::star::uno::RuntimeException); 261a7f6452cSSteve Yin virtual ::com::sun::star::awt::Size SAL_CALL getSize( ) throw (::com::sun::star::uno::RuntimeException); 262a7f6452cSSteve Yin virtual sal_Int32 SAL_CALL getForeground( ) throw (::com::sun::star::uno::RuntimeException); 263a7f6452cSSteve Yin virtual sal_Int32 SAL_CALL getBackground( ) throw (::com::sun::star::uno::RuntimeException); 264a7f6452cSSteve Yin virtual void SAL_CALL grabFocus( ) throw (::com::sun::star::uno::RuntimeException); 265a7f6452cSSteve Yin //XServiceInfo 266a7f6452cSSteve Yin virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw (::com::sun::star::uno::RuntimeException); 267a7f6452cSSteve Yin virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw (::com::sun::star::uno::RuntimeException); 268a7f6452cSSteve Yin virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw (::com::sun::star::uno::RuntimeException); 269a7f6452cSSteve Yin // XAccessibleSelection 270a7f6452cSSteve Yin void SAL_CALL selectAccessibleChild( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); 271a7f6452cSSteve Yin sal_Bool SAL_CALL isAccessibleChildSelected( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); 272a7f6452cSSteve Yin void SAL_CALL clearAccessibleSelection( ) throw (::com::sun::star::uno::RuntimeException); 273a7f6452cSSteve Yin void SAL_CALL selectAllAccessibleChildren( ) throw (::com::sun::star::uno::RuntimeException); 274a7f6452cSSteve Yin sal_Int32 SAL_CALL getSelectedAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException); 275a7f6452cSSteve Yin ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); 276a7f6452cSSteve Yin void SAL_CALL deselectAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); 277a7f6452cSSteve Yin 278a7f6452cSSteve Yin /* 279a7f6452cSSteve Yin // XAccessibleTable ------------------------------------------------------- 280a7f6452cSSteve Yin /-** @return The number of used rows in the table (0 = empty table). *-/ 281a7f6452cSSteve Yin virtual sal_Int32 SAL_CALL getAccessibleRowCount() throw ( ::com::sun::star::uno::RuntimeException ); 282a7f6452cSSteve Yin /-** @return The number of used columns in the table (0 = empty table). *-/ 283a7f6452cSSteve Yin virtual sal_Int32 SAL_CALL getAccessibleColumnCount() throw ( ::com::sun::star::uno::RuntimeException ); 284a7f6452cSSteve Yin /-** @return The row extent of the specified cell (always 1). *-/ 285a7f6452cSSteve Yin virtual sal_Int32 SAL_CALL getAccessibleRowExtentAt( sal_Int32 nRow, sal_Int32 nColumn ) 286a7f6452cSSteve Yin throw ( ::com::sun::star::lang::IndexOutOfBoundsException, 287a7f6452cSSteve Yin ::com::sun::star::uno::RuntimeException ); 288a7f6452cSSteve Yin /-** @return The column extent of the specified cell (always 1). *-/ 289a7f6452cSSteve Yin virtual sal_Int32 SAL_CALL getAccessibleColumnExtentAt( sal_Int32 nRow, sal_Int32 nColumn ) 290a7f6452cSSteve Yin throw ( ::com::sun::star::lang::IndexOutOfBoundsException, 291a7f6452cSSteve Yin ::com::sun::star::uno::RuntimeException ); 292a7f6452cSSteve Yin /-** @return The caption cell of the table (not supported). *-/ 293a7f6452cSSteve Yin virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL 294a7f6452cSSteve Yin getAccessibleCaption() throw ( ::com::sun::star::uno::RuntimeException ); 295a7f6452cSSteve Yin /-** @return The summary object of the table (not supported). *-/ 296a7f6452cSSteve Yin virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL 297a7f6452cSSteve Yin getAccessibleSummary() throw ( ::com::sun::star::uno::RuntimeException ); 298a7f6452cSSteve Yin /-** @return The child index of the specified cell. *-/ 299a7f6452cSSteve Yin virtual sal_Int32 SAL_CALL getAccessibleIndex( sal_Int32 nRow, sal_Int32 nColumn ) 300a7f6452cSSteve Yin throw ( ::com::sun::star::lang::IndexOutOfBoundsException,::com::sun::star::uno::RuntimeException ); 301a7f6452cSSteve Yin /-** @return The row index of the specified child cell. *-/ 302a7f6452cSSteve Yin virtual sal_Int32 SAL_CALL getAccessibleRow( sal_Int32 nChildIndex ) 303a7f6452cSSteve Yin throw ( ::com::sun::star::lang::IndexOutOfBoundsException,::com::sun::star::uno::RuntimeException ); 304a7f6452cSSteve Yin /-** @return The column index of the specified child cell. *-/ 305a7f6452cSSteve Yin virtual sal_Int32 SAL_CALL getAccessibleColumn( sal_Int32 nChildIndex ) 306a7f6452cSSteve Yin throw ( ::com::sun::star::lang::IndexOutOfBoundsException,::com::sun::star::uno::RuntimeException ); 307a7f6452cSSteve Yin /-** @return The description text of the specified row. *-/ 308a7f6452cSSteve Yin virtual ::rtl::OUString SAL_CALL getAccessibleRowDescription( sal_Int32 nRow ) 309a7f6452cSSteve Yin throw ( ::com::sun::star::lang::IndexOutOfBoundsException,::com::sun::star::uno::RuntimeException ); 310a7f6452cSSteve Yin /-** @return The description text of the specified column. *-/ 311a7f6452cSSteve Yin virtual ::rtl::OUString SAL_CALL getAccessibleColumnDescription( sal_Int32 nColumn ) 312a7f6452cSSteve Yin throw ( ::com::sun::star::lang::IndexOutOfBoundsException,::com::sun::star::uno::RuntimeException ); 313a7f6452cSSteve Yin /-** @return The XAccessibleTable interface of the row header bar. *-/ 314a7f6452cSSteve Yin virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleTable > SAL_CALL 315a7f6452cSSteve Yin getAccessibleRowHeaders() throw ( ::com::sun::star::uno::RuntimeException ); 316a7f6452cSSteve Yin /-** @return The XAccessibleTable interface of the column header bar. *-/ 317a7f6452cSSteve Yin virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleTable > SAL_CALL 318a7f6452cSSteve Yin getAccessibleColumnHeaders() throw ( ::com::sun::star::uno::RuntimeException ); 319a7f6452cSSteve Yin /-** @return An index list of completely selected rows. *-/ 320a7f6452cSSteve Yin virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL 321a7f6452cSSteve Yin getSelectedAccessibleRows() throw ( ::com::sun::star::uno::RuntimeException ); 322a7f6452cSSteve Yin /-** @return An index list of completely selected columns. *-/ 323a7f6452cSSteve Yin virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL 324a7f6452cSSteve Yin getSelectedAccessibleColumns() throw ( ::com::sun::star::uno::RuntimeException ); 325a7f6452cSSteve Yin /-** @return <TRUE/>, if the specified row is completely selected. *-/ 326a7f6452cSSteve Yin virtual sal_Bool SAL_CALL isAccessibleRowSelected( sal_Int32 nRow ) 327a7f6452cSSteve Yin throw ( ::com::sun::star::lang::IndexOutOfBoundsException,::com::sun::star::uno::RuntimeException ); 328a7f6452cSSteve Yin /-** @return <TRUE/>, if the specified column is completely selected. *-/ 329a7f6452cSSteve Yin virtual sal_Bool SAL_CALL isAccessibleColumnSelected( sal_Int32 nColumn ) 330a7f6452cSSteve Yin throw ( ::com::sun::star::lang::IndexOutOfBoundsException,::com::sun::star::uno::RuntimeException ); 331a7f6452cSSteve Yin /-** @return The XAccessible interface of the cell object at the specified cell position. *-/ 332a7f6452cSSteve Yin virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL 333a7f6452cSSteve Yin getAccessibleCellAt( sal_Int32 nRow, sal_Int32 nColumn ) 334a7f6452cSSteve Yin throw ( ::com::sun::star::lang::IndexOutOfBoundsException, 335a7f6452cSSteve Yin ::com::sun::star::uno::RuntimeException ); 336a7f6452cSSteve Yin /-** @return <TRUE/>, if the specified cell is selected. *-/ 337a7f6452cSSteve Yin virtual sal_Bool SAL_CALL isAccessibleSelected( sal_Int32 nRow, sal_Int32 nColumn ) 338a7f6452cSSteve Yin throw ( ::com::sun::star::lang::IndexOutOfBoundsException,::com::sun::star::uno::RuntimeException ); 339a7f6452cSSteve Yin 340a7f6452cSSteve Yin */ 341a7f6452cSSteve Yin //Methods for XAccessibleEventBroadcaster 342a7f6452cSSteve Yin sal_uInt32 mnClientId; 343a7f6452cSSteve Yin 344a7f6452cSSteve Yin virtual void SAL_CALL 345a7f6452cSSteve Yin addEventListener( 346a7f6452cSSteve Yin const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener ) 347a7f6452cSSteve Yin throw( com::sun::star::uno::RuntimeException ); 348a7f6452cSSteve Yin 349a7f6452cSSteve Yin virtual void SAL_CALL 350a7f6452cSSteve Yin removeEventListener( 351a7f6452cSSteve Yin const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener ) 352a7f6452cSSteve Yin throw( com::sun::star::uno::RuntimeException ); 353a7f6452cSSteve Yin void CommitChange( const com::sun::star::accessibility::AccessibleEventObject& rEvent ); 354a7f6452cSSteve Yin //Solution: Add the event handling method 355a7f6452cSSteve Yin void FireAccessibleEvent (short nEventId, const ::com::sun::star::uno::Any& rOld, const ::com::sun::star::uno::Any& rNew); 356a7f6452cSSteve Yin virtual void SAL_CALL disposing(); 357a7f6452cSSteve Yin 358a7f6452cSSteve Yin /// select child 359a7f6452cSSteve Yin void SelectChild( Point pos ); 360a7f6452cSSteve Yin void SelectChild( long nIndex); 361a7f6452cSSteve Yin virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > 362a7f6452cSSteve Yin CreateChild (long nIndex, Point mPoint); 363a7f6452cSSteve Yin 364a7f6452cSSteve Yin 365a7f6452cSSteve Yin void LoseFocus(); 366a7f6452cSSteve Yin 367a7f6452cSSteve Yin void Invalidate(); 368a7f6452cSSteve Yin /// @returns true if it's disposed or in disposing 369a7f6452cSSteve Yin inline sal_Bool IsAlive( void ) const; 370a7f6452cSSteve Yin /// @returns true if it's not disposed and no in disposing 371a7f6452cSSteve Yin inline sal_Bool IsNotAlive( void ) const; 372a7f6452cSSteve Yin /// throws the exception DisposedException if it's not alive 373a7f6452cSSteve Yin void ThrowExceptionIfNotAlive( void ) throw( ::com::sun::star::lang::DisposedException ); 374a7f6452cSSteve Yin 375a7f6452cSSteve Yin protected: 376a7f6452cSSteve Yin /** @attention This method requires locked mutex's and a living object. 377a7f6452cSSteve Yin @throws <type>IndexOutOfBoundsException</type> 378a7f6452cSSteve Yin If the specified row index is invalid. */ 379a7f6452cSSteve Yin void ensureIsValidRow( sal_Int32 nRow ) 380a7f6452cSSteve Yin throw ( ::com::sun::star::lang::IndexOutOfBoundsException ); 381a7f6452cSSteve Yin /** @attention This method requires locked mutex's and a living object. 382a7f6452cSSteve Yin @throws <type>IndexOutOfBoundsException</type> 383a7f6452cSSteve Yin If the specified column index is invalid. */ 384a7f6452cSSteve Yin void ensureIsValidColumn( sal_Int32 nColumn ) 385a7f6452cSSteve Yin throw ( ::com::sun::star::lang::IndexOutOfBoundsException ); 386a7f6452cSSteve Yin /** @attention This method requires locked mutex's and a living object. 387a7f6452cSSteve Yin @throws <type>IndexOutOfBoundsException</type> 388a7f6452cSSteve Yin If the specified cell address is invalid. */ 389a7f6452cSSteve Yin void ensureIsValidAddress( sal_Int32 nRow, sal_Int32 nColumn ) 390a7f6452cSSteve Yin throw ( ::com::sun::star::lang::IndexOutOfBoundsException ); 391a7f6452cSSteve Yin /** @attention This method requires locked mutex's and a living object. 392a7f6452cSSteve Yin @throws <type>IndexOutOfBoundsException</type> 393a7f6452cSSteve Yin If the specified child index is invalid. */ 394a7f6452cSSteve Yin void ensureIsValidIndex( sal_Int32 nChildIndex ) 395a7f6452cSSteve Yin throw ( ::com::sun::star::lang::IndexOutOfBoundsException ); 396a7f6452cSSteve Yin 397a7f6452cSSteve Yin 398a7f6452cSSteve Yin ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible> m_xCurChild; 399a7f6452cSSteve Yin public: 400a7f6452cSSteve Yin void NotifyChild(long nIndex,sal_Bool bSelect ,sal_Bool bCheck); 401a7f6452cSSteve Yin }; 402a7f6452cSSteve Yin 403a7f6452cSSteve Yin inline sal_Bool SvxPixelCtlAccessible::IsAlive( void ) const 404a7f6452cSSteve Yin { 405a7f6452cSSteve Yin return !rBHelper.bDisposed && !rBHelper.bInDispose; 406a7f6452cSSteve Yin } 407a7f6452cSSteve Yin 408a7f6452cSSteve Yin inline sal_Bool SvxPixelCtlAccessible::IsNotAlive( void ) const 409a7f6452cSSteve Yin { 410a7f6452cSSteve Yin return rBHelper.bDisposed || rBHelper.bInDispose; 411a7f6452cSSteve Yin } 412a7f6452cSSteve Yin 413a7f6452cSSteve Yin inline sal_Bool SvxPixelCtlAccessibleChild::IsAlive( void ) const 414a7f6452cSSteve Yin { 415a7f6452cSSteve Yin return !rBHelper.bDisposed && !rBHelper.bInDispose; 416a7f6452cSSteve Yin } 417a7f6452cSSteve Yin 418a7f6452cSSteve Yin inline sal_Bool SvxPixelCtlAccessibleChild::IsNotAlive( void ) const 419a7f6452cSSteve Yin { 420a7f6452cSSteve Yin return rBHelper.bDisposed || rBHelper.bInDispose; 421a7f6452cSSteve Yin } 422a7f6452cSSteve Yin 423a7f6452cSSteve Yin 424a7f6452cSSteve Yin #endif 425