1  /**************************************************************
2   *
3   * Licensed to the Apache Software Foundation (ASF) under one
4   * or more contributor license agreements.  See the NOTICE file
5   * distributed with this work for additional information
6   * regarding copyright ownership.  The ASF licenses this file
7   * to you under the Apache License, Version 2.0 (the
8   * "License"); you may not use this file except in compliance
9   * with the License.  You may obtain a copy of the License at
10   *
11   *   http://www.apache.org/licenses/LICENSE-2.0
12   *
13   * Unless required by applicable law or agreed to in writing,
14   * software distributed under the License is distributed on an
15   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16   * KIND, either express or implied.  See the License for the
17   * specific language governing permissions and limitations
18   * under the License.
19   *
20   *************************************************************/
21  
22  
23  
24  // MARKER(update_precomp.py): autogen include statement, do not remove
25  #include "precompiled_accessibility.hxx"
26  #include <accessibility/standard/vclxaccessibletabpagewindow.hxx>
27  #include <toolkit/helper/convert.hxx>
28  #include <vcl/tabctrl.hxx>
29  #include <vcl/tabpage.hxx>
30  
31  
32  using namespace ::com::sun::star;
33  using namespace ::com::sun::star::uno;
34  using namespace ::com::sun::star::accessibility;
35  using namespace ::comphelper;
36  
37  
38  //	----------------------------------------------------
39  //	class VCLXAccessibleTabPageWindow
40  //	----------------------------------------------------
41  
VCLXAccessibleTabPageWindow(VCLXWindow * pVCLXWindow)42  VCLXAccessibleTabPageWindow::VCLXAccessibleTabPageWindow( VCLXWindow* pVCLXWindow )
43  	:VCLXAccessibleComponent( pVCLXWindow )
44  {
45  	m_pTabPage = static_cast< TabPage* >( GetWindow() );
46  	if ( m_pTabPage )
47  	{
48  		Window* pParent = m_pTabPage->GetAccessibleParentWindow();
49  		if ( pParent && pParent->GetType() == WINDOW_TABCONTROL )
50  		{
51  			m_pTabControl = static_cast< TabControl* >( pParent );
52  			if ( m_pTabControl )
53  			{
54  				for ( sal_uInt16 i = 0, nCount = m_pTabControl->GetPageCount(); i < nCount; ++i )
55  				{
56  					sal_uInt16 nPageId = m_pTabControl->GetPageId( i );
57  					if ( m_pTabControl->GetTabPage( nPageId ) == m_pTabPage )
58  						m_nPageId = nPageId;
59  				}
60  			}
61  		}
62  	}
63  }
64  
65  // -----------------------------------------------------------------------------
66  
~VCLXAccessibleTabPageWindow()67  VCLXAccessibleTabPageWindow::~VCLXAccessibleTabPageWindow()
68  {
69  }
70  
71  // -----------------------------------------------------------------------------
72  // OCommonAccessibleComponent
73  // -----------------------------------------------------------------------------
74  
implGetBounds()75  awt::Rectangle VCLXAccessibleTabPageWindow::implGetBounds() throw (RuntimeException)
76  {
77  	awt::Rectangle aBounds( 0, 0, 0, 0 );
78  
79  	if ( m_pTabControl )
80  	{
81  		Rectangle aPageRect = m_pTabControl->GetTabBounds( m_nPageId );
82  		if ( m_pTabPage )
83  		{
84  			Rectangle aRect = Rectangle( m_pTabPage->GetPosPixel(), m_pTabPage->GetSizePixel() );
85  			aRect.Move( -aPageRect.Left(), -aPageRect.Top() );
86  			aBounds = AWTRectangle( aRect );
87  		}
88  	}
89  
90  	return aBounds;
91  }
92  
93  // -----------------------------------------------------------------------------
94  // XComponent
95  // -----------------------------------------------------------------------------
96  
disposing()97  void VCLXAccessibleTabPageWindow::disposing()
98  {
99  	VCLXAccessibleComponent::disposing();
100  
101  	m_pTabControl = NULL;
102  	m_pTabPage = NULL;
103  }
104  
105  // -----------------------------------------------------------------------------
106  // XAccessibleContext
107  // -----------------------------------------------------------------------------
108  
getAccessibleParent()109  Reference< XAccessible > VCLXAccessibleTabPageWindow::getAccessibleParent(  ) throw (RuntimeException)
110  {
111  	OExternalLockGuard aGuard( this );
112  
113  	Reference< XAccessible > xParent;
114  	if ( m_pTabControl )
115  	{
116  		Reference< XAccessible > xAcc( m_pTabControl->GetAccessible() );
117  		if ( xAcc.is() )
118  		{
119  			Reference< XAccessibleContext > xCont( xAcc->getAccessibleContext() );
120  			if ( xCont.is() )
121  				xParent = xCont->getAccessibleChild( m_pTabControl->GetPagePos( m_nPageId ) );
122  		}
123  	}
124  
125  	return xParent;
126  }
127  
128  // -----------------------------------------------------------------------------
129  
getAccessibleIndexInParent()130  sal_Int32 VCLXAccessibleTabPageWindow::getAccessibleIndexInParent(  ) throw (RuntimeException)
131  {
132  	OExternalLockGuard aGuard( this );
133  
134  	return 0;
135  }
136  
137  // -----------------------------------------------------------------------------
138