1*0841af79SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*0841af79SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*0841af79SAndrew Rist * or more contributor license agreements. See the NOTICE file 5*0841af79SAndrew Rist * distributed with this work for additional information 6*0841af79SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*0841af79SAndrew Rist * to you under the Apache License, Version 2.0 (the 8*0841af79SAndrew Rist * "License"); you may not use this file except in compliance 9*0841af79SAndrew Rist * with the License. You may obtain a copy of the License at 10*0841af79SAndrew Rist * 11*0841af79SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*0841af79SAndrew Rist * 13*0841af79SAndrew Rist * Unless required by applicable law or agreed to in writing, 14*0841af79SAndrew Rist * software distributed under the License is distributed on an 15*0841af79SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*0841af79SAndrew Rist * KIND, either express or implied. See the License for the 17*0841af79SAndrew Rist * specific language governing permissions and limitations 18*0841af79SAndrew Rist * under the License. 19*0841af79SAndrew Rist * 20*0841af79SAndrew Rist *************************************************************/ 21*0841af79SAndrew Rist 22*0841af79SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 25cdf0e10cSrcweir #include "precompiled_accessibility.hxx" 26cdf0e10cSrcweir #include <accessibility/extended/accessibletabbarpagelist.hxx> 27cdf0e10cSrcweir #include <svtools/tabbar.hxx> 28cdf0e10cSrcweir #include <accessibility/extended/accessibletabbarpage.hxx> 29cdf0e10cSrcweir #include <com/sun/star/accessibility/AccessibleEventId.hpp> 30cdf0e10cSrcweir #include <com/sun/star/accessibility/AccessibleRole.hpp> 31cdf0e10cSrcweir #include <com/sun/star/accessibility/AccessibleStateType.hpp> 32cdf0e10cSrcweir #include <unotools/accessiblestatesethelper.hxx> 33cdf0e10cSrcweir #include <unotools/accessiblerelationsethelper.hxx> 34cdf0e10cSrcweir #include <tools/debug.hxx> 35cdf0e10cSrcweir #include <vcl/svapp.hxx> 36cdf0e10cSrcweir #include <toolkit/helper/convert.hxx> 37cdf0e10cSrcweir 38cdf0e10cSrcweir 39cdf0e10cSrcweir //......................................................................... 40cdf0e10cSrcweir namespace accessibility 41cdf0e10cSrcweir { 42cdf0e10cSrcweir //......................................................................... 43cdf0e10cSrcweir 44cdf0e10cSrcweir using namespace ::com::sun::star::accessibility; 45cdf0e10cSrcweir using namespace ::com::sun::star::uno; 46cdf0e10cSrcweir using namespace ::com::sun::star::lang; 47cdf0e10cSrcweir using namespace ::com::sun::star; 48cdf0e10cSrcweir using namespace ::comphelper; 49cdf0e10cSrcweir DBG_NAME(AccessibleTabBarPageList)50cdf0e10cSrcweir DBG_NAME( AccessibleTabBarPageList ) 51cdf0e10cSrcweir 52cdf0e10cSrcweir // ----------------------------------------------------------------------------- 53cdf0e10cSrcweir // class AccessibleTabBarPageList 54cdf0e10cSrcweir // ----------------------------------------------------------------------------- 55cdf0e10cSrcweir 56cdf0e10cSrcweir AccessibleTabBarPageList::AccessibleTabBarPageList( TabBar* pTabBar, sal_Int32 nIndexInParent ) 57cdf0e10cSrcweir :AccessibleTabBarBase( pTabBar ) 58cdf0e10cSrcweir ,m_nIndexInParent( nIndexInParent ) 59cdf0e10cSrcweir { 60cdf0e10cSrcweir DBG_CTOR( AccessibleTabBarPageList, NULL ); 61cdf0e10cSrcweir if ( m_pTabBar ) 62cdf0e10cSrcweir m_aAccessibleChildren.assign( m_pTabBar->GetPageCount(), Reference< XAccessible >() ); 63cdf0e10cSrcweir } 64cdf0e10cSrcweir 65cdf0e10cSrcweir // ----------------------------------------------------------------------------- 66cdf0e10cSrcweir ~AccessibleTabBarPageList()67cdf0e10cSrcweir AccessibleTabBarPageList::~AccessibleTabBarPageList() 68cdf0e10cSrcweir { 69cdf0e10cSrcweir DBG_DTOR( AccessibleTabBarPageList, NULL ); 70cdf0e10cSrcweir } 71cdf0e10cSrcweir 72cdf0e10cSrcweir // ----------------------------------------------------------------------------- 73cdf0e10cSrcweir UpdateEnabled(sal_Int32 i,sal_Bool bEnabled)74cdf0e10cSrcweir void AccessibleTabBarPageList::UpdateEnabled( sal_Int32 i, sal_Bool bEnabled ) 75cdf0e10cSrcweir { 76cdf0e10cSrcweir if ( i >= 0 && i < (sal_Int32)m_aAccessibleChildren.size() ) 77cdf0e10cSrcweir { 78cdf0e10cSrcweir Reference< XAccessible > xChild( m_aAccessibleChildren[i] ); 79cdf0e10cSrcweir if ( xChild.is() ) 80cdf0e10cSrcweir { 81cdf0e10cSrcweir AccessibleTabBarPage* pAccessibleTabBarPage = static_cast< AccessibleTabBarPage* >( xChild.get() ); 82cdf0e10cSrcweir if ( pAccessibleTabBarPage ) 83cdf0e10cSrcweir pAccessibleTabBarPage->SetEnabled( bEnabled ); 84cdf0e10cSrcweir } 85cdf0e10cSrcweir } 86cdf0e10cSrcweir } 87cdf0e10cSrcweir 88cdf0e10cSrcweir // ----------------------------------------------------------------------------- 89cdf0e10cSrcweir UpdateShowing(sal_Bool bShowing)90cdf0e10cSrcweir void AccessibleTabBarPageList::UpdateShowing( sal_Bool bShowing ) 91cdf0e10cSrcweir { 92cdf0e10cSrcweir for ( sal_uInt32 i = 0; i < m_aAccessibleChildren.size(); ++i ) 93cdf0e10cSrcweir { 94cdf0e10cSrcweir Reference< XAccessible > xChild( m_aAccessibleChildren[i] ); 95cdf0e10cSrcweir if ( xChild.is() ) 96cdf0e10cSrcweir { 97cdf0e10cSrcweir AccessibleTabBarPage* pAccessibleTabBarPage = static_cast< AccessibleTabBarPage* >( xChild.get() ); 98cdf0e10cSrcweir if ( pAccessibleTabBarPage ) 99cdf0e10cSrcweir pAccessibleTabBarPage->SetShowing( bShowing ); 100cdf0e10cSrcweir } 101cdf0e10cSrcweir } 102cdf0e10cSrcweir } 103cdf0e10cSrcweir 104cdf0e10cSrcweir // ----------------------------------------------------------------------------- 105cdf0e10cSrcweir UpdateSelected(sal_Int32 i,sal_Bool bSelected)106cdf0e10cSrcweir void AccessibleTabBarPageList::UpdateSelected( sal_Int32 i, sal_Bool bSelected ) 107cdf0e10cSrcweir { 108cdf0e10cSrcweir NotifyAccessibleEvent( AccessibleEventId::SELECTION_CHANGED, Any(), Any() ); 109cdf0e10cSrcweir 110cdf0e10cSrcweir if ( i >= 0 && i < (sal_Int32)m_aAccessibleChildren.size() ) 111cdf0e10cSrcweir { 112cdf0e10cSrcweir Reference< XAccessible > xChild( m_aAccessibleChildren[i] ); 113cdf0e10cSrcweir if ( xChild.is() ) 114cdf0e10cSrcweir { 115cdf0e10cSrcweir AccessibleTabBarPage* pAccessibleTabBarPage = static_cast< AccessibleTabBarPage* >( xChild.get() ); 116cdf0e10cSrcweir if ( pAccessibleTabBarPage ) 117cdf0e10cSrcweir pAccessibleTabBarPage->SetSelected( bSelected ); 118cdf0e10cSrcweir } 119cdf0e10cSrcweir } 120cdf0e10cSrcweir } 121cdf0e10cSrcweir 122cdf0e10cSrcweir // ----------------------------------------------------------------------------- 123cdf0e10cSrcweir UpdatePageText(sal_Int32 i)124cdf0e10cSrcweir void AccessibleTabBarPageList::UpdatePageText( sal_Int32 i ) 125cdf0e10cSrcweir { 126cdf0e10cSrcweir if ( i >= 0 && i < (sal_Int32)m_aAccessibleChildren.size() ) 127cdf0e10cSrcweir { 128cdf0e10cSrcweir Reference< XAccessible > xChild( m_aAccessibleChildren[i] ); 129cdf0e10cSrcweir if ( xChild.is() ) 130cdf0e10cSrcweir { 131cdf0e10cSrcweir AccessibleTabBarPage* pAccessibleTabBarPage = static_cast< AccessibleTabBarPage* >( xChild.get() ); 132cdf0e10cSrcweir if ( pAccessibleTabBarPage ) 133cdf0e10cSrcweir { 134cdf0e10cSrcweir if ( m_pTabBar ) 135cdf0e10cSrcweir { 136cdf0e10cSrcweir ::rtl::OUString sPageText = m_pTabBar->GetPageText( m_pTabBar->GetPageId( (sal_uInt16)i ) ); 137cdf0e10cSrcweir pAccessibleTabBarPage->SetPageText( sPageText ); 138cdf0e10cSrcweir } 139cdf0e10cSrcweir } 140cdf0e10cSrcweir } 141cdf0e10cSrcweir } 142cdf0e10cSrcweir } 143cdf0e10cSrcweir 144cdf0e10cSrcweir // ----------------------------------------------------------------------------- 145cdf0e10cSrcweir InsertChild(sal_Int32 i)146cdf0e10cSrcweir void AccessibleTabBarPageList::InsertChild( sal_Int32 i ) 147cdf0e10cSrcweir { 148cdf0e10cSrcweir if ( i >= 0 && i <= (sal_Int32)m_aAccessibleChildren.size() ) 149cdf0e10cSrcweir { 150cdf0e10cSrcweir // insert entry in child list 151cdf0e10cSrcweir m_aAccessibleChildren.insert( m_aAccessibleChildren.begin() + i, Reference< XAccessible >() ); 152cdf0e10cSrcweir 153cdf0e10cSrcweir // send accessible child event 154cdf0e10cSrcweir Reference< XAccessible > xChild( getAccessibleChild( i ) ); 155cdf0e10cSrcweir if ( xChild.is() ) 156cdf0e10cSrcweir { 157cdf0e10cSrcweir Any aOldValue, aNewValue; 158cdf0e10cSrcweir aNewValue <<= xChild; 159cdf0e10cSrcweir NotifyAccessibleEvent( AccessibleEventId::CHILD, aOldValue, aNewValue ); 160cdf0e10cSrcweir } 161cdf0e10cSrcweir } 162cdf0e10cSrcweir } 163cdf0e10cSrcweir 164cdf0e10cSrcweir // ----------------------------------------------------------------------------- 165cdf0e10cSrcweir RemoveChild(sal_Int32 i)166cdf0e10cSrcweir void AccessibleTabBarPageList::RemoveChild( sal_Int32 i ) 167cdf0e10cSrcweir { 168cdf0e10cSrcweir if ( i >= 0 && i < (sal_Int32)m_aAccessibleChildren.size() ) 169cdf0e10cSrcweir { 170cdf0e10cSrcweir // get the accessible of the removed page 171cdf0e10cSrcweir Reference< XAccessible > xChild( m_aAccessibleChildren[i] ); 172cdf0e10cSrcweir 173cdf0e10cSrcweir // remove entry in child list 174cdf0e10cSrcweir m_aAccessibleChildren.erase( m_aAccessibleChildren.begin() + i ); 175cdf0e10cSrcweir 176cdf0e10cSrcweir // send accessible child event 177cdf0e10cSrcweir if ( xChild.is() ) 178cdf0e10cSrcweir { 179cdf0e10cSrcweir Any aOldValue, aNewValue; 180cdf0e10cSrcweir aOldValue <<= xChild; 181cdf0e10cSrcweir NotifyAccessibleEvent( AccessibleEventId::CHILD, aOldValue, aNewValue ); 182cdf0e10cSrcweir 183cdf0e10cSrcweir Reference< XComponent > xComponent( xChild, UNO_QUERY ); 184cdf0e10cSrcweir if ( xComponent.is() ) 185cdf0e10cSrcweir xComponent->dispose(); 186cdf0e10cSrcweir } 187cdf0e10cSrcweir } 188cdf0e10cSrcweir } 189cdf0e10cSrcweir 190cdf0e10cSrcweir // ----------------------------------------------------------------------------- 191cdf0e10cSrcweir MoveChild(sal_Int32 i,sal_Int32 j)192cdf0e10cSrcweir void AccessibleTabBarPageList::MoveChild( sal_Int32 i, sal_Int32 j ) 193cdf0e10cSrcweir { 194cdf0e10cSrcweir if ( i >= 0 && i < (sal_Int32)m_aAccessibleChildren.size() && 195cdf0e10cSrcweir j >= 0 && j <= (sal_Int32)m_aAccessibleChildren.size() ) 196cdf0e10cSrcweir { 197cdf0e10cSrcweir if ( i < j ) 198cdf0e10cSrcweir --j; 199cdf0e10cSrcweir 200cdf0e10cSrcweir // get the accessible of the moved page 201cdf0e10cSrcweir Reference< XAccessible > xChild( m_aAccessibleChildren[i] ); 202cdf0e10cSrcweir 203cdf0e10cSrcweir // remove entry in child list at old position 204cdf0e10cSrcweir m_aAccessibleChildren.erase( m_aAccessibleChildren.begin() + i ); 205cdf0e10cSrcweir 206cdf0e10cSrcweir // insert entry in child list at new position 207cdf0e10cSrcweir m_aAccessibleChildren.insert( m_aAccessibleChildren.begin() + j, xChild ); 208cdf0e10cSrcweir } 209cdf0e10cSrcweir } 210cdf0e10cSrcweir 211cdf0e10cSrcweir // ----------------------------------------------------------------------------- 212cdf0e10cSrcweir ProcessWindowEvent(const VclWindowEvent & rVclWindowEvent)213cdf0e10cSrcweir void AccessibleTabBarPageList::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent ) 214cdf0e10cSrcweir { 215cdf0e10cSrcweir switch ( rVclWindowEvent.GetId() ) 216cdf0e10cSrcweir { 217cdf0e10cSrcweir case VCLEVENT_WINDOW_ENABLED: 218cdf0e10cSrcweir { 219cdf0e10cSrcweir Any aNewValue; 220cdf0e10cSrcweir aNewValue <<= AccessibleStateType::SENSITIVE; 221cdf0e10cSrcweir NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, Any(), aNewValue ); 222cdf0e10cSrcweir aNewValue <<= AccessibleStateType::ENABLED; 223cdf0e10cSrcweir NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, Any(), aNewValue ); 224cdf0e10cSrcweir } 225cdf0e10cSrcweir break; 226cdf0e10cSrcweir case VCLEVENT_WINDOW_DISABLED: 227cdf0e10cSrcweir { 228cdf0e10cSrcweir Any aOldValue; 229cdf0e10cSrcweir aOldValue <<= AccessibleStateType::ENABLED; 230cdf0e10cSrcweir NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, Any() ); 231cdf0e10cSrcweir aOldValue <<= AccessibleStateType::SENSITIVE; 232cdf0e10cSrcweir NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, Any() ); 233cdf0e10cSrcweir } 234cdf0e10cSrcweir break; 235cdf0e10cSrcweir case VCLEVENT_WINDOW_SHOW: 236cdf0e10cSrcweir { 237cdf0e10cSrcweir Any aOldValue, aNewValue; 238cdf0e10cSrcweir aNewValue <<= AccessibleStateType::SHOWING; 239cdf0e10cSrcweir NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue ); 240cdf0e10cSrcweir UpdateShowing( sal_True ); 241cdf0e10cSrcweir } 242cdf0e10cSrcweir break; 243cdf0e10cSrcweir case VCLEVENT_WINDOW_HIDE: 244cdf0e10cSrcweir { 245cdf0e10cSrcweir Any aOldValue, aNewValue; 246cdf0e10cSrcweir aOldValue <<= AccessibleStateType::SHOWING; 247cdf0e10cSrcweir NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue ); 248cdf0e10cSrcweir UpdateShowing( sal_False ); 249cdf0e10cSrcweir } 250cdf0e10cSrcweir break; 251cdf0e10cSrcweir case VCLEVENT_TABBAR_PAGEENABLED: 252cdf0e10cSrcweir { 253cdf0e10cSrcweir if ( m_pTabBar ) 254cdf0e10cSrcweir { 255cdf0e10cSrcweir sal_uInt16 nPageId = (sal_uInt16)(sal_IntPtr) rVclWindowEvent.GetData(); 256cdf0e10cSrcweir sal_uInt16 nPagePos = m_pTabBar->GetPagePos( nPageId ); 257cdf0e10cSrcweir UpdateEnabled( nPagePos, sal_True ); 258cdf0e10cSrcweir } 259cdf0e10cSrcweir } 260cdf0e10cSrcweir break; 261cdf0e10cSrcweir case VCLEVENT_TABBAR_PAGEDISABLED: 262cdf0e10cSrcweir { 263cdf0e10cSrcweir if ( m_pTabBar ) 264cdf0e10cSrcweir { 265cdf0e10cSrcweir sal_uInt16 nPageId = (sal_uInt16)(sal_IntPtr) rVclWindowEvent.GetData(); 266cdf0e10cSrcweir sal_uInt16 nPagePos = m_pTabBar->GetPagePos( nPageId ); 267cdf0e10cSrcweir UpdateEnabled( nPagePos, sal_False ); 268cdf0e10cSrcweir } 269cdf0e10cSrcweir } 270cdf0e10cSrcweir break; 271cdf0e10cSrcweir case VCLEVENT_TABBAR_PAGESELECTED: 272cdf0e10cSrcweir { 273cdf0e10cSrcweir // do nothing 274cdf0e10cSrcweir } 275cdf0e10cSrcweir break; 276cdf0e10cSrcweir case VCLEVENT_TABBAR_PAGEACTIVATED: 277cdf0e10cSrcweir { 278cdf0e10cSrcweir if ( m_pTabBar ) 279cdf0e10cSrcweir { 280cdf0e10cSrcweir sal_uInt16 nPageId = (sal_uInt16)(sal_IntPtr) rVclWindowEvent.GetData(); 281cdf0e10cSrcweir sal_uInt16 nPagePos = m_pTabBar->GetPagePos( nPageId ); 282cdf0e10cSrcweir UpdateSelected( nPagePos, sal_True ); 283cdf0e10cSrcweir } 284cdf0e10cSrcweir } 285cdf0e10cSrcweir break; 286cdf0e10cSrcweir case VCLEVENT_TABBAR_PAGEDEACTIVATED: 287cdf0e10cSrcweir { 288cdf0e10cSrcweir if ( m_pTabBar ) 289cdf0e10cSrcweir { 290cdf0e10cSrcweir sal_uInt16 nPageId = (sal_uInt16)(sal_IntPtr) rVclWindowEvent.GetData(); 291cdf0e10cSrcweir sal_uInt16 nPagePos = m_pTabBar->GetPagePos( nPageId ); 292cdf0e10cSrcweir UpdateSelected( nPagePos, sal_False ); 293cdf0e10cSrcweir } 294cdf0e10cSrcweir } 295cdf0e10cSrcweir break; 296cdf0e10cSrcweir case VCLEVENT_TABBAR_PAGEINSERTED: 297cdf0e10cSrcweir { 298cdf0e10cSrcweir if ( m_pTabBar ) 299cdf0e10cSrcweir { 300cdf0e10cSrcweir sal_uInt16 nPageId = (sal_uInt16)(sal_IntPtr) rVclWindowEvent.GetData(); 301cdf0e10cSrcweir sal_uInt16 nPagePos = m_pTabBar->GetPagePos( nPageId ); 302cdf0e10cSrcweir InsertChild( nPagePos ); 303cdf0e10cSrcweir } 304cdf0e10cSrcweir } 305cdf0e10cSrcweir break; 306cdf0e10cSrcweir case VCLEVENT_TABBAR_PAGEREMOVED: 307cdf0e10cSrcweir { 308cdf0e10cSrcweir if ( m_pTabBar ) 309cdf0e10cSrcweir { 310cdf0e10cSrcweir sal_uInt16 nPageId = (sal_uInt16)(sal_IntPtr) rVclWindowEvent.GetData(); 311cdf0e10cSrcweir 312cdf0e10cSrcweir if ( nPageId == TabBar::PAGE_NOT_FOUND ) 313cdf0e10cSrcweir { 314cdf0e10cSrcweir for ( sal_Int32 i = m_aAccessibleChildren.size() - 1; i >= 0; --i ) 315cdf0e10cSrcweir RemoveChild( i ); 316cdf0e10cSrcweir } 317cdf0e10cSrcweir else 318cdf0e10cSrcweir { 319cdf0e10cSrcweir for ( sal_Int32 i = 0, nCount = getAccessibleChildCount(); i < nCount; ++i ) 320cdf0e10cSrcweir { 321cdf0e10cSrcweir Reference< XAccessible > xChild( getAccessibleChild( i ) ); 322cdf0e10cSrcweir if ( xChild.is() ) 323cdf0e10cSrcweir { 324cdf0e10cSrcweir AccessibleTabBarPage* pAccessibleTabBarPage = static_cast< AccessibleTabBarPage* >( xChild.get() ); 325cdf0e10cSrcweir if ( pAccessibleTabBarPage && pAccessibleTabBarPage->GetPageId() == nPageId ) 326cdf0e10cSrcweir { 327cdf0e10cSrcweir RemoveChild( i ); 328cdf0e10cSrcweir break; 329cdf0e10cSrcweir } 330cdf0e10cSrcweir } 331cdf0e10cSrcweir } 332cdf0e10cSrcweir } 333cdf0e10cSrcweir } 334cdf0e10cSrcweir } 335cdf0e10cSrcweir break; 336cdf0e10cSrcweir case VCLEVENT_TABBAR_PAGEMOVED: 337cdf0e10cSrcweir { 338cdf0e10cSrcweir Pair* pPair = (Pair*) rVclWindowEvent.GetData(); 339cdf0e10cSrcweir if ( pPair ) 340cdf0e10cSrcweir MoveChild( pPair->A(), pPair->B() ); 341cdf0e10cSrcweir } 342cdf0e10cSrcweir break; 343cdf0e10cSrcweir case VCLEVENT_TABBAR_PAGETEXTCHANGED: 344cdf0e10cSrcweir { 345cdf0e10cSrcweir sal_uInt16 nPageId = (sal_uInt16)(sal_IntPtr) rVclWindowEvent.GetData(); 346cdf0e10cSrcweir sal_uInt16 nPagePos = m_pTabBar->GetPagePos( nPageId ); 347cdf0e10cSrcweir UpdatePageText( nPagePos ); 348cdf0e10cSrcweir } 349cdf0e10cSrcweir break; 350cdf0e10cSrcweir default: 351cdf0e10cSrcweir { 352cdf0e10cSrcweir AccessibleTabBarBase::ProcessWindowEvent( rVclWindowEvent ); 353cdf0e10cSrcweir } 354cdf0e10cSrcweir break; 355cdf0e10cSrcweir } 356cdf0e10cSrcweir } 357cdf0e10cSrcweir 358cdf0e10cSrcweir // ----------------------------------------------------------------------------- 359cdf0e10cSrcweir FillAccessibleStateSet(utl::AccessibleStateSetHelper & rStateSet)360cdf0e10cSrcweir void AccessibleTabBarPageList::FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet ) 361cdf0e10cSrcweir { 362cdf0e10cSrcweir if ( m_pTabBar ) 363cdf0e10cSrcweir { 364cdf0e10cSrcweir if ( m_pTabBar->IsEnabled() ) 365cdf0e10cSrcweir { 366cdf0e10cSrcweir rStateSet.AddState( AccessibleStateType::ENABLED ); 367cdf0e10cSrcweir rStateSet.AddState( AccessibleStateType::SENSITIVE ); 368cdf0e10cSrcweir } 369cdf0e10cSrcweir 370cdf0e10cSrcweir rStateSet.AddState( AccessibleStateType::VISIBLE ); 371cdf0e10cSrcweir 372cdf0e10cSrcweir if ( m_pTabBar->IsVisible() ) 373cdf0e10cSrcweir rStateSet.AddState( AccessibleStateType::SHOWING ); 374cdf0e10cSrcweir } 375cdf0e10cSrcweir } 376cdf0e10cSrcweir 377cdf0e10cSrcweir // ----------------------------------------------------------------------------- 378cdf0e10cSrcweir // OCommonAccessibleComponent 379cdf0e10cSrcweir // ----------------------------------------------------------------------------- 380cdf0e10cSrcweir implGetBounds()381cdf0e10cSrcweir awt::Rectangle AccessibleTabBarPageList::implGetBounds() throw (RuntimeException) 382cdf0e10cSrcweir { 383cdf0e10cSrcweir awt::Rectangle aBounds; 384cdf0e10cSrcweir if ( m_pTabBar ) 385cdf0e10cSrcweir aBounds = AWTRectangle( m_pTabBar->GetPageArea() ); 386cdf0e10cSrcweir 387cdf0e10cSrcweir return aBounds; 388cdf0e10cSrcweir } 389cdf0e10cSrcweir 390cdf0e10cSrcweir // ----------------------------------------------------------------------------- 391cdf0e10cSrcweir // XInterface 392cdf0e10cSrcweir // ----------------------------------------------------------------------------- 393cdf0e10cSrcweir IMPLEMENT_FORWARD_XINTERFACE2(AccessibleTabBarPageList,AccessibleExtendedComponentHelper_BASE,AccessibleTabBarPageList_BASE)394cdf0e10cSrcweir IMPLEMENT_FORWARD_XINTERFACE2( AccessibleTabBarPageList, AccessibleExtendedComponentHelper_BASE, AccessibleTabBarPageList_BASE ) 395cdf0e10cSrcweir 396cdf0e10cSrcweir // ----------------------------------------------------------------------------- 397cdf0e10cSrcweir // XTypeProvider 398cdf0e10cSrcweir // ----------------------------------------------------------------------------- 399cdf0e10cSrcweir 400cdf0e10cSrcweir IMPLEMENT_FORWARD_XTYPEPROVIDER2( AccessibleTabBarPageList, AccessibleExtendedComponentHelper_BASE, AccessibleTabBarPageList_BASE ) 401cdf0e10cSrcweir 402cdf0e10cSrcweir // ----------------------------------------------------------------------------- 403cdf0e10cSrcweir // XComponent 404cdf0e10cSrcweir // ----------------------------------------------------------------------------- 405cdf0e10cSrcweir 406cdf0e10cSrcweir void AccessibleTabBarPageList::disposing() 407cdf0e10cSrcweir { 408cdf0e10cSrcweir AccessibleTabBarBase::disposing(); 409cdf0e10cSrcweir 410cdf0e10cSrcweir // dispose all children 411cdf0e10cSrcweir for ( sal_uInt32 i = 0; i < m_aAccessibleChildren.size(); ++i ) 412cdf0e10cSrcweir { 413cdf0e10cSrcweir Reference< XComponent > xComponent( m_aAccessibleChildren[i], UNO_QUERY ); 414cdf0e10cSrcweir if ( xComponent.is() ) 415cdf0e10cSrcweir xComponent->dispose(); 416cdf0e10cSrcweir } 417cdf0e10cSrcweir m_aAccessibleChildren.clear(); 418cdf0e10cSrcweir } 419cdf0e10cSrcweir 420cdf0e10cSrcweir // ----------------------------------------------------------------------------- 421cdf0e10cSrcweir // XServiceInfo 422cdf0e10cSrcweir // ----------------------------------------------------------------------------- 423cdf0e10cSrcweir getImplementationName()424cdf0e10cSrcweir ::rtl::OUString AccessibleTabBarPageList::getImplementationName() throw (RuntimeException) 425cdf0e10cSrcweir { 426cdf0e10cSrcweir return ::rtl::OUString::createFromAscii( "com.sun.star.comp.svtools.AccessibleTabBarPageList" ); 427cdf0e10cSrcweir } 428cdf0e10cSrcweir 429cdf0e10cSrcweir // ----------------------------------------------------------------------------- 430cdf0e10cSrcweir supportsService(const::rtl::OUString & rServiceName)431cdf0e10cSrcweir sal_Bool AccessibleTabBarPageList::supportsService( const ::rtl::OUString& rServiceName ) throw (RuntimeException) 432cdf0e10cSrcweir { 433cdf0e10cSrcweir Sequence< ::rtl::OUString > aNames( getSupportedServiceNames() ); 434cdf0e10cSrcweir const ::rtl::OUString* pNames = aNames.getConstArray(); 435cdf0e10cSrcweir const ::rtl::OUString* pEnd = pNames + aNames.getLength(); 436cdf0e10cSrcweir for ( ; pNames != pEnd && !pNames->equals( rServiceName ); ++pNames ) 437cdf0e10cSrcweir ; 438cdf0e10cSrcweir 439cdf0e10cSrcweir return pNames != pEnd; 440cdf0e10cSrcweir } 441cdf0e10cSrcweir 442cdf0e10cSrcweir // ----------------------------------------------------------------------------- 443cdf0e10cSrcweir getSupportedServiceNames()444cdf0e10cSrcweir Sequence< ::rtl::OUString > AccessibleTabBarPageList::getSupportedServiceNames() throw (RuntimeException) 445cdf0e10cSrcweir { 446cdf0e10cSrcweir Sequence< ::rtl::OUString > aNames(1); 447cdf0e10cSrcweir aNames[0] = ::rtl::OUString::createFromAscii( "com.sun.star.awt.AccessibleTabBarPageList" ); 448cdf0e10cSrcweir return aNames; 449cdf0e10cSrcweir } 450cdf0e10cSrcweir 451cdf0e10cSrcweir // ----------------------------------------------------------------------------- 452cdf0e10cSrcweir // XAccessible 453cdf0e10cSrcweir // ----------------------------------------------------------------------------- 454cdf0e10cSrcweir getAccessibleContext()455cdf0e10cSrcweir Reference< XAccessibleContext > AccessibleTabBarPageList::getAccessibleContext( ) throw (RuntimeException) 456cdf0e10cSrcweir { 457cdf0e10cSrcweir OExternalLockGuard aGuard( this ); 458cdf0e10cSrcweir 459cdf0e10cSrcweir return this; 460cdf0e10cSrcweir } 461cdf0e10cSrcweir 462cdf0e10cSrcweir // ----------------------------------------------------------------------------- 463cdf0e10cSrcweir // XAccessibleContext 464cdf0e10cSrcweir // ----------------------------------------------------------------------------- 465cdf0e10cSrcweir getAccessibleChildCount()466cdf0e10cSrcweir sal_Int32 AccessibleTabBarPageList::getAccessibleChildCount() throw (RuntimeException) 467cdf0e10cSrcweir { 468cdf0e10cSrcweir OExternalLockGuard aGuard( this ); 469cdf0e10cSrcweir 470cdf0e10cSrcweir return m_aAccessibleChildren.size(); 471cdf0e10cSrcweir } 472cdf0e10cSrcweir 473cdf0e10cSrcweir // ----------------------------------------------------------------------------- 474cdf0e10cSrcweir getAccessibleChild(sal_Int32 i)475cdf0e10cSrcweir Reference< XAccessible > AccessibleTabBarPageList::getAccessibleChild( sal_Int32 i ) throw (IndexOutOfBoundsException, RuntimeException) 476cdf0e10cSrcweir { 477cdf0e10cSrcweir OExternalLockGuard aGuard( this ); 478cdf0e10cSrcweir 479cdf0e10cSrcweir if ( i < 0 || i >= getAccessibleChildCount() ) 480cdf0e10cSrcweir throw IndexOutOfBoundsException(); 481cdf0e10cSrcweir 482cdf0e10cSrcweir Reference< XAccessible > xChild = m_aAccessibleChildren[i]; 483cdf0e10cSrcweir if ( !xChild.is() ) 484cdf0e10cSrcweir { 485cdf0e10cSrcweir if ( m_pTabBar ) 486cdf0e10cSrcweir { 487cdf0e10cSrcweir sal_uInt16 nPageId = m_pTabBar->GetPageId( (sal_uInt16)i ); 488cdf0e10cSrcweir 489cdf0e10cSrcweir xChild = new AccessibleTabBarPage( m_pTabBar, nPageId, this ); 490cdf0e10cSrcweir 491cdf0e10cSrcweir // insert into child list 492cdf0e10cSrcweir m_aAccessibleChildren[i] = xChild; 493cdf0e10cSrcweir } 494cdf0e10cSrcweir } 495cdf0e10cSrcweir 496cdf0e10cSrcweir return xChild; 497cdf0e10cSrcweir } 498cdf0e10cSrcweir 499cdf0e10cSrcweir // ----------------------------------------------------------------------------- 500cdf0e10cSrcweir getAccessibleParent()501cdf0e10cSrcweir Reference< XAccessible > AccessibleTabBarPageList::getAccessibleParent( ) throw (RuntimeException) 502cdf0e10cSrcweir { 503cdf0e10cSrcweir OExternalLockGuard aGuard( this ); 504cdf0e10cSrcweir 505cdf0e10cSrcweir Reference< XAccessible > xParent; 506cdf0e10cSrcweir if ( m_pTabBar ) 507cdf0e10cSrcweir xParent = m_pTabBar->GetAccessible(); 508cdf0e10cSrcweir 509cdf0e10cSrcweir return xParent; 510cdf0e10cSrcweir } 511cdf0e10cSrcweir 512cdf0e10cSrcweir // ----------------------------------------------------------------------------- 513cdf0e10cSrcweir getAccessibleIndexInParent()514cdf0e10cSrcweir sal_Int32 AccessibleTabBarPageList::getAccessibleIndexInParent( ) throw (RuntimeException) 515cdf0e10cSrcweir { 516cdf0e10cSrcweir OExternalLockGuard aGuard( this ); 517cdf0e10cSrcweir 518cdf0e10cSrcweir return m_nIndexInParent; 519cdf0e10cSrcweir } 520cdf0e10cSrcweir 521cdf0e10cSrcweir // ----------------------------------------------------------------------------- 522cdf0e10cSrcweir getAccessibleRole()523cdf0e10cSrcweir sal_Int16 AccessibleTabBarPageList::getAccessibleRole( ) throw (RuntimeException) 524cdf0e10cSrcweir { 525cdf0e10cSrcweir OExternalLockGuard aGuard( this ); 526cdf0e10cSrcweir 527cdf0e10cSrcweir return AccessibleRole::PAGE_TAB_LIST; 528cdf0e10cSrcweir } 529cdf0e10cSrcweir 530cdf0e10cSrcweir // ----------------------------------------------------------------------------- 531cdf0e10cSrcweir getAccessibleDescription()532cdf0e10cSrcweir ::rtl::OUString AccessibleTabBarPageList::getAccessibleDescription( ) throw (RuntimeException) 533cdf0e10cSrcweir { 534cdf0e10cSrcweir OExternalLockGuard aGuard( this ); 535cdf0e10cSrcweir 536cdf0e10cSrcweir return ::rtl::OUString(); 537cdf0e10cSrcweir } 538cdf0e10cSrcweir 539cdf0e10cSrcweir // ----------------------------------------------------------------------------- 540cdf0e10cSrcweir getAccessibleName()541cdf0e10cSrcweir ::rtl::OUString AccessibleTabBarPageList::getAccessibleName( ) throw (RuntimeException) 542cdf0e10cSrcweir { 543cdf0e10cSrcweir OExternalLockGuard aGuard( this ); 544cdf0e10cSrcweir 545cdf0e10cSrcweir return ::rtl::OUString(); 546cdf0e10cSrcweir } 547cdf0e10cSrcweir 548cdf0e10cSrcweir // ----------------------------------------------------------------------------- 549cdf0e10cSrcweir getAccessibleRelationSet()550cdf0e10cSrcweir Reference< XAccessibleRelationSet > AccessibleTabBarPageList::getAccessibleRelationSet( ) throw (RuntimeException) 551cdf0e10cSrcweir { 552cdf0e10cSrcweir OExternalLockGuard aGuard( this ); 553cdf0e10cSrcweir 554cdf0e10cSrcweir utl::AccessibleRelationSetHelper* pRelationSetHelper = new utl::AccessibleRelationSetHelper; 555cdf0e10cSrcweir Reference< XAccessibleRelationSet > xSet = pRelationSetHelper; 556cdf0e10cSrcweir return xSet; 557cdf0e10cSrcweir } 558cdf0e10cSrcweir 559cdf0e10cSrcweir // ----------------------------------------------------------------------------- 560cdf0e10cSrcweir getAccessibleStateSet()561cdf0e10cSrcweir Reference< XAccessibleStateSet > AccessibleTabBarPageList::getAccessibleStateSet( ) throw (RuntimeException) 562cdf0e10cSrcweir { 563cdf0e10cSrcweir OExternalLockGuard aGuard( this ); 564cdf0e10cSrcweir 565cdf0e10cSrcweir utl::AccessibleStateSetHelper* pStateSetHelper = new utl::AccessibleStateSetHelper; 566cdf0e10cSrcweir Reference< XAccessibleStateSet > xSet = pStateSetHelper; 567cdf0e10cSrcweir 568cdf0e10cSrcweir if ( !rBHelper.bDisposed && !rBHelper.bInDispose ) 569cdf0e10cSrcweir { 570cdf0e10cSrcweir FillAccessibleStateSet( *pStateSetHelper ); 571cdf0e10cSrcweir } 572cdf0e10cSrcweir else 573cdf0e10cSrcweir { 574cdf0e10cSrcweir pStateSetHelper->AddState( AccessibleStateType::DEFUNC ); 575cdf0e10cSrcweir } 576cdf0e10cSrcweir 577cdf0e10cSrcweir return xSet; 578cdf0e10cSrcweir } 579cdf0e10cSrcweir 580cdf0e10cSrcweir // ----------------------------------------------------------------------------- 581cdf0e10cSrcweir getLocale()582cdf0e10cSrcweir Locale AccessibleTabBarPageList::getLocale( ) throw (IllegalAccessibleComponentStateException, RuntimeException) 583cdf0e10cSrcweir { 584cdf0e10cSrcweir OExternalLockGuard aGuard( this ); 585cdf0e10cSrcweir 586cdf0e10cSrcweir return Application::GetSettings().GetLocale(); 587cdf0e10cSrcweir } 588cdf0e10cSrcweir 589cdf0e10cSrcweir // ----------------------------------------------------------------------------- 590cdf0e10cSrcweir // XAccessibleComponent 591cdf0e10cSrcweir // ----------------------------------------------------------------------------- 592cdf0e10cSrcweir getAccessibleAtPoint(const awt::Point & rPoint)593cdf0e10cSrcweir Reference< XAccessible > AccessibleTabBarPageList::getAccessibleAtPoint( const awt::Point& rPoint ) throw (RuntimeException) 594cdf0e10cSrcweir { 595cdf0e10cSrcweir OExternalLockGuard aGuard( this ); 596cdf0e10cSrcweir 597cdf0e10cSrcweir Reference< XAccessible > xChild; 598cdf0e10cSrcweir for ( sal_uInt32 i = 0; i < m_aAccessibleChildren.size(); ++i ) 599cdf0e10cSrcweir { 600cdf0e10cSrcweir Reference< XAccessible > xAcc = getAccessibleChild( i ); 601cdf0e10cSrcweir if ( xAcc.is() ) 602cdf0e10cSrcweir { 603cdf0e10cSrcweir Reference< XAccessibleComponent > xComp( xAcc->getAccessibleContext(), UNO_QUERY ); 604cdf0e10cSrcweir if ( xComp.is() ) 605cdf0e10cSrcweir { 606cdf0e10cSrcweir Rectangle aRect = VCLRectangle( xComp->getBounds() ); 607cdf0e10cSrcweir Point aPos = VCLPoint( rPoint ); 608cdf0e10cSrcweir if ( aRect.IsInside( aPos ) ) 609cdf0e10cSrcweir { 610cdf0e10cSrcweir xChild = xAcc; 611cdf0e10cSrcweir break; 612cdf0e10cSrcweir } 613cdf0e10cSrcweir } 614cdf0e10cSrcweir } 615cdf0e10cSrcweir } 616cdf0e10cSrcweir 617cdf0e10cSrcweir return xChild; 618cdf0e10cSrcweir } 619cdf0e10cSrcweir 620cdf0e10cSrcweir // ----------------------------------------------------------------------------- 621cdf0e10cSrcweir grabFocus()622cdf0e10cSrcweir void AccessibleTabBarPageList::grabFocus( ) throw (RuntimeException) 623cdf0e10cSrcweir { 624cdf0e10cSrcweir // no focus 625cdf0e10cSrcweir } 626cdf0e10cSrcweir 627cdf0e10cSrcweir // ----------------------------------------------------------------------------- 628cdf0e10cSrcweir getForeground()629cdf0e10cSrcweir sal_Int32 AccessibleTabBarPageList::getForeground( ) throw (RuntimeException) 630cdf0e10cSrcweir { 631cdf0e10cSrcweir OExternalLockGuard aGuard( this ); 632cdf0e10cSrcweir 633cdf0e10cSrcweir sal_Int32 nColor = 0; 634cdf0e10cSrcweir Reference< XAccessible > xParent = getAccessibleParent(); 635cdf0e10cSrcweir if ( xParent.is() ) 636cdf0e10cSrcweir { 637cdf0e10cSrcweir Reference< XAccessibleComponent > xParentComp( xParent->getAccessibleContext(), UNO_QUERY ); 638cdf0e10cSrcweir if ( xParentComp.is() ) 639cdf0e10cSrcweir nColor = xParentComp->getForeground(); 640cdf0e10cSrcweir } 641cdf0e10cSrcweir 642cdf0e10cSrcweir return nColor; 643cdf0e10cSrcweir } 644cdf0e10cSrcweir 645cdf0e10cSrcweir // ----------------------------------------------------------------------------- 646cdf0e10cSrcweir getBackground()647cdf0e10cSrcweir sal_Int32 AccessibleTabBarPageList::getBackground( ) throw (RuntimeException) 648cdf0e10cSrcweir { 649cdf0e10cSrcweir OExternalLockGuard aGuard( this ); 650cdf0e10cSrcweir 651cdf0e10cSrcweir sal_Int32 nColor = 0; 652cdf0e10cSrcweir Reference< XAccessible > xParent = getAccessibleParent(); 653cdf0e10cSrcweir if ( xParent.is() ) 654cdf0e10cSrcweir { 655cdf0e10cSrcweir Reference< XAccessibleComponent > xParentComp( xParent->getAccessibleContext(), UNO_QUERY ); 656cdf0e10cSrcweir if ( xParentComp.is() ) 657cdf0e10cSrcweir nColor = xParentComp->getBackground(); 658cdf0e10cSrcweir } 659cdf0e10cSrcweir 660cdf0e10cSrcweir return nColor; 661cdf0e10cSrcweir } 662cdf0e10cSrcweir 663cdf0e10cSrcweir // ----------------------------------------------------------------------------- 664cdf0e10cSrcweir // XAccessibleExtendedComponent 665cdf0e10cSrcweir // ----------------------------------------------------------------------------- 666cdf0e10cSrcweir getFont()667cdf0e10cSrcweir Reference< awt::XFont > AccessibleTabBarPageList::getFont( ) throw (RuntimeException) 668cdf0e10cSrcweir { 669cdf0e10cSrcweir OExternalLockGuard aGuard( this ); 670cdf0e10cSrcweir 671cdf0e10cSrcweir Reference< awt::XFont > xFont; 672cdf0e10cSrcweir Reference< XAccessible > xParent = getAccessibleParent(); 673cdf0e10cSrcweir if ( xParent.is() ) 674cdf0e10cSrcweir { 675cdf0e10cSrcweir Reference< XAccessibleExtendedComponent > xParentComp( xParent->getAccessibleContext(), UNO_QUERY ); 676cdf0e10cSrcweir if ( xParentComp.is() ) 677cdf0e10cSrcweir xFont = xParentComp->getFont(); 678cdf0e10cSrcweir } 679cdf0e10cSrcweir 680cdf0e10cSrcweir return xFont; 681cdf0e10cSrcweir } 682cdf0e10cSrcweir 683cdf0e10cSrcweir // ----------------------------------------------------------------------------- 684cdf0e10cSrcweir getTitledBorderText()685cdf0e10cSrcweir ::rtl::OUString AccessibleTabBarPageList::getTitledBorderText( ) throw (RuntimeException) 686cdf0e10cSrcweir { 687cdf0e10cSrcweir OExternalLockGuard aGuard( this ); 688cdf0e10cSrcweir 689cdf0e10cSrcweir return ::rtl::OUString(); 690cdf0e10cSrcweir } 691cdf0e10cSrcweir 692cdf0e10cSrcweir // ----------------------------------------------------------------------------- 693cdf0e10cSrcweir getToolTipText()694cdf0e10cSrcweir ::rtl::OUString AccessibleTabBarPageList::getToolTipText( ) throw (RuntimeException) 695cdf0e10cSrcweir { 696cdf0e10cSrcweir OExternalLockGuard aGuard( this ); 697cdf0e10cSrcweir 698cdf0e10cSrcweir return ::rtl::OUString(); 699cdf0e10cSrcweir } 700cdf0e10cSrcweir 701cdf0e10cSrcweir // ----------------------------------------------------------------------------- 702cdf0e10cSrcweir // XAccessibleSelection 703cdf0e10cSrcweir // ----------------------------------------------------------------------------- 704cdf0e10cSrcweir selectAccessibleChild(sal_Int32 nChildIndex)705cdf0e10cSrcweir void AccessibleTabBarPageList::selectAccessibleChild( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException) 706cdf0e10cSrcweir { 707cdf0e10cSrcweir OExternalLockGuard aGuard( this ); 708cdf0e10cSrcweir 709cdf0e10cSrcweir if ( nChildIndex < 0 || nChildIndex >= getAccessibleChildCount() ) 710cdf0e10cSrcweir throw IndexOutOfBoundsException(); 711cdf0e10cSrcweir 712cdf0e10cSrcweir if ( m_pTabBar ) 713cdf0e10cSrcweir { 714cdf0e10cSrcweir m_pTabBar->SetCurPageId( m_pTabBar->GetPageId( (sal_uInt16)nChildIndex ) ); 715cdf0e10cSrcweir m_pTabBar->Update(); 716cdf0e10cSrcweir m_pTabBar->ActivatePage(); 717cdf0e10cSrcweir m_pTabBar->Select(); 718cdf0e10cSrcweir } 719cdf0e10cSrcweir } 720cdf0e10cSrcweir 721cdf0e10cSrcweir // ----------------------------------------------------------------------------- 722cdf0e10cSrcweir isAccessibleChildSelected(sal_Int32 nChildIndex)723cdf0e10cSrcweir sal_Bool AccessibleTabBarPageList::isAccessibleChildSelected( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException) 724cdf0e10cSrcweir { 725cdf0e10cSrcweir OExternalLockGuard aGuard( this ); 726cdf0e10cSrcweir 727cdf0e10cSrcweir if ( nChildIndex < 0 || nChildIndex >= getAccessibleChildCount() ) 728cdf0e10cSrcweir throw IndexOutOfBoundsException(); 729cdf0e10cSrcweir 730cdf0e10cSrcweir sal_Bool bSelected = sal_False; 731cdf0e10cSrcweir if ( m_pTabBar && m_pTabBar->GetCurPageId() == m_pTabBar->GetPageId( (sal_uInt16)nChildIndex ) ) 732cdf0e10cSrcweir bSelected = sal_True; 733cdf0e10cSrcweir 734cdf0e10cSrcweir return bSelected; 735cdf0e10cSrcweir } 736cdf0e10cSrcweir 737cdf0e10cSrcweir // ----------------------------------------------------------------------------- 738cdf0e10cSrcweir clearAccessibleSelection()739cdf0e10cSrcweir void AccessibleTabBarPageList::clearAccessibleSelection( ) throw (RuntimeException) 740cdf0e10cSrcweir { 741cdf0e10cSrcweir // This method makes no sense in a TabBar, and so does nothing. 742cdf0e10cSrcweir } 743cdf0e10cSrcweir 744cdf0e10cSrcweir // ----------------------------------------------------------------------------- 745cdf0e10cSrcweir selectAllAccessibleChildren()746cdf0e10cSrcweir void AccessibleTabBarPageList::selectAllAccessibleChildren( ) throw (RuntimeException) 747cdf0e10cSrcweir { 748cdf0e10cSrcweir OExternalLockGuard aGuard( this ); 749cdf0e10cSrcweir 750cdf0e10cSrcweir selectAccessibleChild( 0 ); 751cdf0e10cSrcweir } 752cdf0e10cSrcweir 753cdf0e10cSrcweir // ----------------------------------------------------------------------------- 754cdf0e10cSrcweir getSelectedAccessibleChildCount()755cdf0e10cSrcweir sal_Int32 AccessibleTabBarPageList::getSelectedAccessibleChildCount( ) throw (RuntimeException) 756cdf0e10cSrcweir { 757cdf0e10cSrcweir OExternalLockGuard aGuard( this ); 758cdf0e10cSrcweir 759cdf0e10cSrcweir return 1; 760cdf0e10cSrcweir } 761cdf0e10cSrcweir 762cdf0e10cSrcweir // ----------------------------------------------------------------------------- 763cdf0e10cSrcweir getSelectedAccessibleChild(sal_Int32 nSelectedChildIndex)764cdf0e10cSrcweir Reference< XAccessible > AccessibleTabBarPageList::getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (IndexOutOfBoundsException, RuntimeException) 765cdf0e10cSrcweir { 766cdf0e10cSrcweir OExternalLockGuard aGuard( this ); 767cdf0e10cSrcweir 768cdf0e10cSrcweir if ( nSelectedChildIndex < 0 || nSelectedChildIndex >= getSelectedAccessibleChildCount() ) 769cdf0e10cSrcweir throw IndexOutOfBoundsException(); 770cdf0e10cSrcweir 771cdf0e10cSrcweir Reference< XAccessible > xChild; 772cdf0e10cSrcweir 773cdf0e10cSrcweir for ( sal_Int32 i = 0, j = 0, nCount = getAccessibleChildCount(); i < nCount; i++ ) 774cdf0e10cSrcweir { 775cdf0e10cSrcweir if ( isAccessibleChildSelected( i ) && ( j++ == nSelectedChildIndex ) ) 776cdf0e10cSrcweir { 777cdf0e10cSrcweir xChild = getAccessibleChild( i ); 778cdf0e10cSrcweir break; 779cdf0e10cSrcweir } 780cdf0e10cSrcweir } 781cdf0e10cSrcweir 782cdf0e10cSrcweir return xChild; 783cdf0e10cSrcweir } 784cdf0e10cSrcweir 785cdf0e10cSrcweir // ----------------------------------------------------------------------------- 786cdf0e10cSrcweir deselectAccessibleChild(sal_Int32 nChildIndex)787cdf0e10cSrcweir void AccessibleTabBarPageList::deselectAccessibleChild( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException) 788cdf0e10cSrcweir { 789cdf0e10cSrcweir OExternalLockGuard aGuard( this ); 790cdf0e10cSrcweir 791cdf0e10cSrcweir if ( nChildIndex < 0 || nChildIndex >= getAccessibleChildCount() ) 792cdf0e10cSrcweir throw IndexOutOfBoundsException(); 793cdf0e10cSrcweir 794cdf0e10cSrcweir // This method makes no sense in a TabBar, and so does nothing. 795cdf0e10cSrcweir } 796cdf0e10cSrcweir 797cdf0e10cSrcweir // ----------------------------------------------------------------------------- 798cdf0e10cSrcweir 799cdf0e10cSrcweir //......................................................................... 800cdf0e10cSrcweir } // namespace accessibility 801cdf0e10cSrcweir //......................................................................... 802