1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_accessibility.hxx"
26*b1cdbd2cSJim Jagielski #include <accessibility/extended/accessibletabbarpage.hxx>
27*b1cdbd2cSJim Jagielski #include <svtools/tabbar.hxx>
28*b1cdbd2cSJim Jagielski #include <com/sun/star/accessibility/AccessibleEventId.hpp>
29*b1cdbd2cSJim Jagielski #include <com/sun/star/accessibility/AccessibleRole.hpp>
30*b1cdbd2cSJim Jagielski #include <com/sun/star/accessibility/AccessibleStateType.hpp>
31*b1cdbd2cSJim Jagielski #include <unotools/accessiblestatesethelper.hxx>
32*b1cdbd2cSJim Jagielski #include <unotools/accessiblerelationsethelper.hxx>
33*b1cdbd2cSJim Jagielski #include <vcl/svapp.hxx>
34*b1cdbd2cSJim Jagielski #include <toolkit/helper/convert.hxx>
35*b1cdbd2cSJim Jagielski 
36*b1cdbd2cSJim Jagielski 
37*b1cdbd2cSJim Jagielski //.........................................................................
38*b1cdbd2cSJim Jagielski namespace accessibility
39*b1cdbd2cSJim Jagielski {
40*b1cdbd2cSJim Jagielski //.........................................................................
41*b1cdbd2cSJim Jagielski 
42*b1cdbd2cSJim Jagielski 	using namespace ::com::sun::star::accessibility;
43*b1cdbd2cSJim Jagielski 	using namespace ::com::sun::star::uno;
44*b1cdbd2cSJim Jagielski 	using namespace ::com::sun::star::lang;
45*b1cdbd2cSJim Jagielski 	using namespace ::com::sun::star;
46*b1cdbd2cSJim Jagielski 	using namespace ::comphelper;
47*b1cdbd2cSJim Jagielski 
48*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
49*b1cdbd2cSJim Jagielski 	// class AccessibleTabBarPage
50*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
51*b1cdbd2cSJim Jagielski 
AccessibleTabBarPage(TabBar * pTabBar,sal_uInt16 nPageId,const Reference<XAccessible> & rxParent)52*b1cdbd2cSJim Jagielski 	AccessibleTabBarPage::AccessibleTabBarPage( TabBar* pTabBar, sal_uInt16 nPageId, const Reference< XAccessible >& rxParent )
53*b1cdbd2cSJim Jagielski         :AccessibleTabBarBase( pTabBar )
54*b1cdbd2cSJim Jagielski 		,m_nPageId( nPageId )
55*b1cdbd2cSJim Jagielski 		,m_xParent( rxParent )
56*b1cdbd2cSJim Jagielski 	{
57*b1cdbd2cSJim Jagielski 		m_bEnabled	= IsEnabled();
58*b1cdbd2cSJim Jagielski 		m_bShowing	= IsShowing();
59*b1cdbd2cSJim Jagielski 		m_bSelected = IsSelected();
60*b1cdbd2cSJim Jagielski 
61*b1cdbd2cSJim Jagielski 		if ( m_pTabBar )
62*b1cdbd2cSJim Jagielski 			m_sPageText = m_pTabBar->GetPageText( m_nPageId );
63*b1cdbd2cSJim Jagielski 	}
64*b1cdbd2cSJim Jagielski 
65*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
66*b1cdbd2cSJim Jagielski 
~AccessibleTabBarPage()67*b1cdbd2cSJim Jagielski 	AccessibleTabBarPage::~AccessibleTabBarPage()
68*b1cdbd2cSJim Jagielski 	{
69*b1cdbd2cSJim Jagielski 	}
70*b1cdbd2cSJim Jagielski 
71*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
72*b1cdbd2cSJim Jagielski 
IsEnabled()73*b1cdbd2cSJim Jagielski 	sal_Bool AccessibleTabBarPage::IsEnabled()
74*b1cdbd2cSJim Jagielski 	{
75*b1cdbd2cSJim Jagielski 		OExternalLockGuard aGuard( this );
76*b1cdbd2cSJim Jagielski 
77*b1cdbd2cSJim Jagielski 		sal_Bool bEnabled = sal_False;
78*b1cdbd2cSJim Jagielski 		if ( m_pTabBar )
79*b1cdbd2cSJim Jagielski 			bEnabled = m_pTabBar->IsPageEnabled( m_nPageId );
80*b1cdbd2cSJim Jagielski 
81*b1cdbd2cSJim Jagielski 		return bEnabled;
82*b1cdbd2cSJim Jagielski 	}
83*b1cdbd2cSJim Jagielski 
84*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
85*b1cdbd2cSJim Jagielski 
IsShowing()86*b1cdbd2cSJim Jagielski 	sal_Bool AccessibleTabBarPage::IsShowing()
87*b1cdbd2cSJim Jagielski 	{
88*b1cdbd2cSJim Jagielski 		sal_Bool bShowing = sal_False;
89*b1cdbd2cSJim Jagielski 
90*b1cdbd2cSJim Jagielski 		if ( m_pTabBar && m_pTabBar->IsVisible() )
91*b1cdbd2cSJim Jagielski 			bShowing = sal_True;
92*b1cdbd2cSJim Jagielski 
93*b1cdbd2cSJim Jagielski 		return bShowing;
94*b1cdbd2cSJim Jagielski 	}
95*b1cdbd2cSJim Jagielski 
96*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
97*b1cdbd2cSJim Jagielski 
IsSelected()98*b1cdbd2cSJim Jagielski 	sal_Bool AccessibleTabBarPage::IsSelected()
99*b1cdbd2cSJim Jagielski 	{
100*b1cdbd2cSJim Jagielski 		sal_Bool bSelected = sal_False;
101*b1cdbd2cSJim Jagielski 
102*b1cdbd2cSJim Jagielski 		if ( m_pTabBar && m_pTabBar->GetCurPageId() == m_nPageId )
103*b1cdbd2cSJim Jagielski 			bSelected = sal_True;
104*b1cdbd2cSJim Jagielski 
105*b1cdbd2cSJim Jagielski 		return bSelected;
106*b1cdbd2cSJim Jagielski 	}
107*b1cdbd2cSJim Jagielski 
108*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
109*b1cdbd2cSJim Jagielski 
SetEnabled(sal_Bool bEnabled)110*b1cdbd2cSJim Jagielski 	void AccessibleTabBarPage::SetEnabled( sal_Bool bEnabled )
111*b1cdbd2cSJim Jagielski 	{
112*b1cdbd2cSJim Jagielski 		if ( m_bEnabled != bEnabled )
113*b1cdbd2cSJim Jagielski 		{
114*b1cdbd2cSJim Jagielski             Any aOldValue[2], aNewValue[2];
115*b1cdbd2cSJim Jagielski             if ( m_bEnabled )
116*b1cdbd2cSJim Jagielski             {
117*b1cdbd2cSJim Jagielski                 aOldValue[0] <<= AccessibleStateType::SENSITIVE;
118*b1cdbd2cSJim Jagielski                 aOldValue[1] <<= AccessibleStateType::ENABLED;
119*b1cdbd2cSJim Jagielski             }
120*b1cdbd2cSJim Jagielski             else
121*b1cdbd2cSJim Jagielski             {
122*b1cdbd2cSJim Jagielski 
123*b1cdbd2cSJim Jagielski                 aNewValue[0] <<= AccessibleStateType::ENABLED;
124*b1cdbd2cSJim Jagielski                 aNewValue[1] <<= AccessibleStateType::SENSITIVE;
125*b1cdbd2cSJim Jagielski             }
126*b1cdbd2cSJim Jagielski             m_bEnabled = bEnabled;
127*b1cdbd2cSJim Jagielski             NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue[0], aNewValue[0] );
128*b1cdbd2cSJim Jagielski             NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue[1], aNewValue[1] );
129*b1cdbd2cSJim Jagielski 		}
130*b1cdbd2cSJim Jagielski 	}
131*b1cdbd2cSJim Jagielski 
132*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
133*b1cdbd2cSJim Jagielski 
SetShowing(sal_Bool bShowing)134*b1cdbd2cSJim Jagielski 	void AccessibleTabBarPage::SetShowing( sal_Bool bShowing )
135*b1cdbd2cSJim Jagielski 	{
136*b1cdbd2cSJim Jagielski 		if ( m_bShowing != bShowing )
137*b1cdbd2cSJim Jagielski 		{
138*b1cdbd2cSJim Jagielski 			Any aOldValue, aNewValue;
139*b1cdbd2cSJim Jagielski 			if ( m_bShowing )
140*b1cdbd2cSJim Jagielski 				aOldValue <<= AccessibleStateType::SHOWING;
141*b1cdbd2cSJim Jagielski 			else
142*b1cdbd2cSJim Jagielski 				aNewValue <<= AccessibleStateType::SHOWING;
143*b1cdbd2cSJim Jagielski 			m_bShowing = bShowing;
144*b1cdbd2cSJim Jagielski 			NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
145*b1cdbd2cSJim Jagielski 		}
146*b1cdbd2cSJim Jagielski 	}
147*b1cdbd2cSJim Jagielski 
148*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
149*b1cdbd2cSJim Jagielski 
SetSelected(sal_Bool bSelected)150*b1cdbd2cSJim Jagielski 	void AccessibleTabBarPage::SetSelected( sal_Bool bSelected )
151*b1cdbd2cSJim Jagielski 	{
152*b1cdbd2cSJim Jagielski 		if ( m_bSelected != bSelected )
153*b1cdbd2cSJim Jagielski 		{
154*b1cdbd2cSJim Jagielski 			Any aOldValue, aNewValue;
155*b1cdbd2cSJim Jagielski 			if ( m_bSelected )
156*b1cdbd2cSJim Jagielski 				aOldValue <<= AccessibleStateType::SELECTED;
157*b1cdbd2cSJim Jagielski 			else
158*b1cdbd2cSJim Jagielski 				aNewValue <<= AccessibleStateType::SELECTED;
159*b1cdbd2cSJim Jagielski 			m_bSelected = bSelected;
160*b1cdbd2cSJim Jagielski 			NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
161*b1cdbd2cSJim Jagielski 		}
162*b1cdbd2cSJim Jagielski 	}
163*b1cdbd2cSJim Jagielski 
164*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
165*b1cdbd2cSJim Jagielski 
SetPageText(const::rtl::OUString & sPageText)166*b1cdbd2cSJim Jagielski 	void AccessibleTabBarPage::SetPageText( const ::rtl::OUString& sPageText )
167*b1cdbd2cSJim Jagielski 	{
168*b1cdbd2cSJim Jagielski 		if ( !m_sPageText.equals( sPageText ) )
169*b1cdbd2cSJim Jagielski 		{
170*b1cdbd2cSJim Jagielski 			Any aOldValue, aNewValue;
171*b1cdbd2cSJim Jagielski 			aOldValue <<= m_sPageText;
172*b1cdbd2cSJim Jagielski 			aNewValue <<= sPageText;
173*b1cdbd2cSJim Jagielski 			m_sPageText = sPageText;
174*b1cdbd2cSJim Jagielski 			NotifyAccessibleEvent( AccessibleEventId::NAME_CHANGED, aOldValue, aNewValue );
175*b1cdbd2cSJim Jagielski 		}
176*b1cdbd2cSJim Jagielski 	}
177*b1cdbd2cSJim Jagielski 
178*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
179*b1cdbd2cSJim Jagielski 
FillAccessibleStateSet(utl::AccessibleStateSetHelper & rStateSet)180*b1cdbd2cSJim Jagielski 	void AccessibleTabBarPage::FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet )
181*b1cdbd2cSJim Jagielski 	{
182*b1cdbd2cSJim Jagielski 		if ( IsEnabled() )
183*b1cdbd2cSJim Jagielski         {
184*b1cdbd2cSJim Jagielski             rStateSet.AddState( AccessibleStateType::ENABLED );
185*b1cdbd2cSJim Jagielski             rStateSet.AddState( AccessibleStateType::SENSITIVE );
186*b1cdbd2cSJim Jagielski         }
187*b1cdbd2cSJim Jagielski 
188*b1cdbd2cSJim Jagielski 		rStateSet.AddState( AccessibleStateType::VISIBLE );
189*b1cdbd2cSJim Jagielski 
190*b1cdbd2cSJim Jagielski 		if ( IsShowing() )
191*b1cdbd2cSJim Jagielski 			rStateSet.AddState( AccessibleStateType::SHOWING );
192*b1cdbd2cSJim Jagielski 
193*b1cdbd2cSJim Jagielski 		rStateSet.AddState( AccessibleStateType::SELECTABLE );
194*b1cdbd2cSJim Jagielski 
195*b1cdbd2cSJim Jagielski 		if ( IsSelected() )
196*b1cdbd2cSJim Jagielski 			rStateSet.AddState( AccessibleStateType::SELECTED );
197*b1cdbd2cSJim Jagielski 	}
198*b1cdbd2cSJim Jagielski 
199*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
200*b1cdbd2cSJim Jagielski 	// OCommonAccessibleComponent
201*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
202*b1cdbd2cSJim Jagielski 
implGetBounds()203*b1cdbd2cSJim Jagielski 	awt::Rectangle AccessibleTabBarPage::implGetBounds() throw (RuntimeException)
204*b1cdbd2cSJim Jagielski 	{
205*b1cdbd2cSJim Jagielski 		awt::Rectangle aBounds;
206*b1cdbd2cSJim Jagielski 		if ( m_pTabBar )
207*b1cdbd2cSJim Jagielski 		{
208*b1cdbd2cSJim Jagielski 			// get bounding rectangle relative to the AccessibleTabBar
209*b1cdbd2cSJim Jagielski 			aBounds = AWTRectangle( m_pTabBar->GetPageRect( m_nPageId ) );
210*b1cdbd2cSJim Jagielski 
211*b1cdbd2cSJim Jagielski 			// get position of the AccessibleTabBarPageList relative to the AccessibleTabBar
212*b1cdbd2cSJim Jagielski 			Reference< XAccessible > xParent = getAccessibleParent();
213*b1cdbd2cSJim Jagielski 			if ( xParent.is() )
214*b1cdbd2cSJim Jagielski 			{
215*b1cdbd2cSJim Jagielski 				Reference< XAccessibleComponent > xParentComponent( xParent->getAccessibleContext(), UNO_QUERY );
216*b1cdbd2cSJim Jagielski 				if ( xParentComponent.is() )
217*b1cdbd2cSJim Jagielski 				{
218*b1cdbd2cSJim Jagielski 					awt::Point aParentLoc = xParentComponent->getLocation();
219*b1cdbd2cSJim Jagielski 
220*b1cdbd2cSJim Jagielski 					// calculate bounding rectangle relative to the AccessibleTabBarPageList
221*b1cdbd2cSJim Jagielski 					aBounds.X -= aParentLoc.X;
222*b1cdbd2cSJim Jagielski 					aBounds.Y -= aParentLoc.Y;
223*b1cdbd2cSJim Jagielski 				}
224*b1cdbd2cSJim Jagielski 			}
225*b1cdbd2cSJim Jagielski 		}
226*b1cdbd2cSJim Jagielski 
227*b1cdbd2cSJim Jagielski 		return aBounds;
228*b1cdbd2cSJim Jagielski 	}
229*b1cdbd2cSJim Jagielski 
230*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
231*b1cdbd2cSJim Jagielski 	// XInterface
232*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
233*b1cdbd2cSJim Jagielski 
IMPLEMENT_FORWARD_XINTERFACE2(AccessibleTabBarPage,AccessibleExtendedComponentHelper_BASE,AccessibleTabBarPage_BASE)234*b1cdbd2cSJim Jagielski 	IMPLEMENT_FORWARD_XINTERFACE2( AccessibleTabBarPage, AccessibleExtendedComponentHelper_BASE, AccessibleTabBarPage_BASE )
235*b1cdbd2cSJim Jagielski 
236*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
237*b1cdbd2cSJim Jagielski 	// XTypeProvider
238*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
239*b1cdbd2cSJim Jagielski 
240*b1cdbd2cSJim Jagielski 	IMPLEMENT_FORWARD_XTYPEPROVIDER2( AccessibleTabBarPage, AccessibleExtendedComponentHelper_BASE, AccessibleTabBarPage_BASE )
241*b1cdbd2cSJim Jagielski 
242*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
243*b1cdbd2cSJim Jagielski 	// XComponent
244*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
245*b1cdbd2cSJim Jagielski 
246*b1cdbd2cSJim Jagielski 	void AccessibleTabBarPage::disposing()
247*b1cdbd2cSJim Jagielski 	{
248*b1cdbd2cSJim Jagielski         AccessibleTabBarBase::disposing();
249*b1cdbd2cSJim Jagielski 		m_sPageText = ::rtl::OUString();
250*b1cdbd2cSJim Jagielski 	}
251*b1cdbd2cSJim Jagielski 
252*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
253*b1cdbd2cSJim Jagielski 	// XServiceInfo
254*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
255*b1cdbd2cSJim Jagielski 
getImplementationName()256*b1cdbd2cSJim Jagielski 	::rtl::OUString AccessibleTabBarPage::getImplementationName() throw (RuntimeException)
257*b1cdbd2cSJim Jagielski 	{
258*b1cdbd2cSJim Jagielski 		return ::rtl::OUString::createFromAscii( "com.sun.star.comp.svtools.AccessibleTabBarPage" );
259*b1cdbd2cSJim Jagielski 	}
260*b1cdbd2cSJim Jagielski 
261*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
262*b1cdbd2cSJim Jagielski 
supportsService(const::rtl::OUString & rServiceName)263*b1cdbd2cSJim Jagielski 	sal_Bool AccessibleTabBarPage::supportsService( const ::rtl::OUString& rServiceName ) throw (RuntimeException)
264*b1cdbd2cSJim Jagielski 	{
265*b1cdbd2cSJim Jagielski 		Sequence< ::rtl::OUString > aNames( getSupportedServiceNames() );
266*b1cdbd2cSJim Jagielski 		const ::rtl::OUString* pNames = aNames.getConstArray();
267*b1cdbd2cSJim Jagielski 		const ::rtl::OUString* pEnd = pNames + aNames.getLength();
268*b1cdbd2cSJim Jagielski 		for ( ; pNames != pEnd && !pNames->equals( rServiceName ); ++pNames )
269*b1cdbd2cSJim Jagielski 			;
270*b1cdbd2cSJim Jagielski 
271*b1cdbd2cSJim Jagielski 		return pNames != pEnd;
272*b1cdbd2cSJim Jagielski 	}
273*b1cdbd2cSJim Jagielski 
274*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
275*b1cdbd2cSJim Jagielski 
getSupportedServiceNames()276*b1cdbd2cSJim Jagielski 	Sequence< ::rtl::OUString > AccessibleTabBarPage::getSupportedServiceNames() throw (RuntimeException)
277*b1cdbd2cSJim Jagielski 	{
278*b1cdbd2cSJim Jagielski 		Sequence< ::rtl::OUString > aNames(1);
279*b1cdbd2cSJim Jagielski 		aNames[0] = ::rtl::OUString::createFromAscii( "com.sun.star.awt.AccessibleTabBarPage" );
280*b1cdbd2cSJim Jagielski 		return aNames;
281*b1cdbd2cSJim Jagielski 	}
282*b1cdbd2cSJim Jagielski 
283*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
284*b1cdbd2cSJim Jagielski 	// XAccessible
285*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
286*b1cdbd2cSJim Jagielski 
getAccessibleContext()287*b1cdbd2cSJim Jagielski 	Reference< XAccessibleContext > AccessibleTabBarPage::getAccessibleContext(  ) throw (RuntimeException)
288*b1cdbd2cSJim Jagielski 	{
289*b1cdbd2cSJim Jagielski 		OExternalLockGuard aGuard( this );
290*b1cdbd2cSJim Jagielski 
291*b1cdbd2cSJim Jagielski 		return this;
292*b1cdbd2cSJim Jagielski 	}
293*b1cdbd2cSJim Jagielski 
294*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
295*b1cdbd2cSJim Jagielski 	// XAccessibleContext
296*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
297*b1cdbd2cSJim Jagielski 
getAccessibleChildCount()298*b1cdbd2cSJim Jagielski 	sal_Int32 AccessibleTabBarPage::getAccessibleChildCount() throw (RuntimeException)
299*b1cdbd2cSJim Jagielski 	{
300*b1cdbd2cSJim Jagielski 		OExternalLockGuard aGuard( this );
301*b1cdbd2cSJim Jagielski 
302*b1cdbd2cSJim Jagielski 		return 0;
303*b1cdbd2cSJim Jagielski 	}
304*b1cdbd2cSJim Jagielski 
305*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
306*b1cdbd2cSJim Jagielski 
getAccessibleChild(sal_Int32 i)307*b1cdbd2cSJim Jagielski 	Reference< XAccessible > AccessibleTabBarPage::getAccessibleChild( sal_Int32 i ) throw (IndexOutOfBoundsException, RuntimeException)
308*b1cdbd2cSJim Jagielski 	{
309*b1cdbd2cSJim Jagielski 		OExternalLockGuard aGuard( this );
310*b1cdbd2cSJim Jagielski 
311*b1cdbd2cSJim Jagielski 		if ( i < 0 || i >= getAccessibleChildCount() )
312*b1cdbd2cSJim Jagielski 			throw IndexOutOfBoundsException();
313*b1cdbd2cSJim Jagielski 
314*b1cdbd2cSJim Jagielski 		return Reference< XAccessible >();
315*b1cdbd2cSJim Jagielski 	}
316*b1cdbd2cSJim Jagielski 
317*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
318*b1cdbd2cSJim Jagielski 
getAccessibleParent()319*b1cdbd2cSJim Jagielski 	Reference< XAccessible > AccessibleTabBarPage::getAccessibleParent(  ) throw (RuntimeException)
320*b1cdbd2cSJim Jagielski 	{
321*b1cdbd2cSJim Jagielski 		OExternalLockGuard aGuard( this );
322*b1cdbd2cSJim Jagielski 
323*b1cdbd2cSJim Jagielski 		return m_xParent;
324*b1cdbd2cSJim Jagielski 	}
325*b1cdbd2cSJim Jagielski 
326*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
327*b1cdbd2cSJim Jagielski 
getAccessibleIndexInParent()328*b1cdbd2cSJim Jagielski 	sal_Int32 AccessibleTabBarPage::getAccessibleIndexInParent(  ) throw (RuntimeException)
329*b1cdbd2cSJim Jagielski 	{
330*b1cdbd2cSJim Jagielski 		OExternalLockGuard aGuard( this );
331*b1cdbd2cSJim Jagielski 
332*b1cdbd2cSJim Jagielski 		sal_Int32 nIndexInParent = -1;
333*b1cdbd2cSJim Jagielski 		if ( m_pTabBar )
334*b1cdbd2cSJim Jagielski 			nIndexInParent = m_pTabBar->GetPagePos( m_nPageId );
335*b1cdbd2cSJim Jagielski 
336*b1cdbd2cSJim Jagielski 		return nIndexInParent;
337*b1cdbd2cSJim Jagielski 	}
338*b1cdbd2cSJim Jagielski 
339*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
340*b1cdbd2cSJim Jagielski 
getAccessibleRole()341*b1cdbd2cSJim Jagielski 	sal_Int16 AccessibleTabBarPage::getAccessibleRole(  ) throw (RuntimeException)
342*b1cdbd2cSJim Jagielski 	{
343*b1cdbd2cSJim Jagielski 		OExternalLockGuard aGuard( this );
344*b1cdbd2cSJim Jagielski 
345*b1cdbd2cSJim Jagielski 		return AccessibleRole::PAGE_TAB;
346*b1cdbd2cSJim Jagielski 	}
347*b1cdbd2cSJim Jagielski 
348*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
349*b1cdbd2cSJim Jagielski 
getAccessibleDescription()350*b1cdbd2cSJim Jagielski 	::rtl::OUString AccessibleTabBarPage::getAccessibleDescription(	) throw (RuntimeException)
351*b1cdbd2cSJim Jagielski 	{
352*b1cdbd2cSJim Jagielski 		OExternalLockGuard aGuard( this );
353*b1cdbd2cSJim Jagielski 
354*b1cdbd2cSJim Jagielski 		::rtl::OUString sDescription;
355*b1cdbd2cSJim Jagielski 		if ( m_pTabBar )
356*b1cdbd2cSJim Jagielski 			sDescription = m_pTabBar->GetHelpText( m_nPageId );
357*b1cdbd2cSJim Jagielski 
358*b1cdbd2cSJim Jagielski 		return sDescription;
359*b1cdbd2cSJim Jagielski 	}
360*b1cdbd2cSJim Jagielski 
361*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
362*b1cdbd2cSJim Jagielski 
getAccessibleName()363*b1cdbd2cSJim Jagielski 	::rtl::OUString AccessibleTabBarPage::getAccessibleName(  ) throw (RuntimeException)
364*b1cdbd2cSJim Jagielski 	{
365*b1cdbd2cSJim Jagielski 		OExternalLockGuard aGuard( this );
366*b1cdbd2cSJim Jagielski 
367*b1cdbd2cSJim Jagielski 		return m_sPageText;
368*b1cdbd2cSJim Jagielski 	}
369*b1cdbd2cSJim Jagielski 
370*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
371*b1cdbd2cSJim Jagielski 
getAccessibleRelationSet()372*b1cdbd2cSJim Jagielski 	Reference< XAccessibleRelationSet > AccessibleTabBarPage::getAccessibleRelationSet(  ) throw (RuntimeException)
373*b1cdbd2cSJim Jagielski 	{
374*b1cdbd2cSJim Jagielski 		OExternalLockGuard aGuard( this );
375*b1cdbd2cSJim Jagielski 
376*b1cdbd2cSJim Jagielski 		utl::AccessibleRelationSetHelper* pRelationSetHelper = new utl::AccessibleRelationSetHelper;
377*b1cdbd2cSJim Jagielski 		Reference< XAccessibleRelationSet > xSet = pRelationSetHelper;
378*b1cdbd2cSJim Jagielski 		return xSet;
379*b1cdbd2cSJim Jagielski 	}
380*b1cdbd2cSJim Jagielski 
381*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
382*b1cdbd2cSJim Jagielski 
getAccessibleStateSet()383*b1cdbd2cSJim Jagielski 	Reference< XAccessibleStateSet > AccessibleTabBarPage::getAccessibleStateSet(  ) throw (RuntimeException)
384*b1cdbd2cSJim Jagielski 	{
385*b1cdbd2cSJim Jagielski 		OExternalLockGuard aGuard( this );
386*b1cdbd2cSJim Jagielski 
387*b1cdbd2cSJim Jagielski 		utl::AccessibleStateSetHelper* pStateSetHelper = new utl::AccessibleStateSetHelper;
388*b1cdbd2cSJim Jagielski 		Reference< XAccessibleStateSet > xSet = pStateSetHelper;
389*b1cdbd2cSJim Jagielski 
390*b1cdbd2cSJim Jagielski 		if ( !rBHelper.bDisposed && !rBHelper.bInDispose )
391*b1cdbd2cSJim Jagielski 		{
392*b1cdbd2cSJim Jagielski 			FillAccessibleStateSet( *pStateSetHelper );
393*b1cdbd2cSJim Jagielski 		}
394*b1cdbd2cSJim Jagielski 		else
395*b1cdbd2cSJim Jagielski 		{
396*b1cdbd2cSJim Jagielski 			pStateSetHelper->AddState( AccessibleStateType::DEFUNC );
397*b1cdbd2cSJim Jagielski 		}
398*b1cdbd2cSJim Jagielski 
399*b1cdbd2cSJim Jagielski 		return xSet;
400*b1cdbd2cSJim Jagielski 	}
401*b1cdbd2cSJim Jagielski 
402*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
403*b1cdbd2cSJim Jagielski 
getLocale()404*b1cdbd2cSJim Jagielski 	Locale AccessibleTabBarPage::getLocale(  ) throw (IllegalAccessibleComponentStateException, RuntimeException)
405*b1cdbd2cSJim Jagielski 	{
406*b1cdbd2cSJim Jagielski 		OExternalLockGuard aGuard( this );
407*b1cdbd2cSJim Jagielski 
408*b1cdbd2cSJim Jagielski 		return Application::GetSettings().GetLocale();
409*b1cdbd2cSJim Jagielski 	}
410*b1cdbd2cSJim Jagielski 
411*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
412*b1cdbd2cSJim Jagielski 	// XAccessibleComponent
413*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
414*b1cdbd2cSJim Jagielski 
getAccessibleAtPoint(const awt::Point &)415*b1cdbd2cSJim Jagielski 	Reference< XAccessible > AccessibleTabBarPage::getAccessibleAtPoint( const awt::Point& ) throw (RuntimeException)
416*b1cdbd2cSJim Jagielski 	{
417*b1cdbd2cSJim Jagielski 		OExternalLockGuard aGuard( this );
418*b1cdbd2cSJim Jagielski 
419*b1cdbd2cSJim Jagielski 		return Reference< XAccessible >();
420*b1cdbd2cSJim Jagielski 	}
421*b1cdbd2cSJim Jagielski 
422*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
423*b1cdbd2cSJim Jagielski 
grabFocus()424*b1cdbd2cSJim Jagielski 	void AccessibleTabBarPage::grabFocus(  ) throw (RuntimeException)
425*b1cdbd2cSJim Jagielski 	{
426*b1cdbd2cSJim Jagielski 		// no focus
427*b1cdbd2cSJim Jagielski 	}
428*b1cdbd2cSJim Jagielski 
429*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
430*b1cdbd2cSJim Jagielski 
getForeground()431*b1cdbd2cSJim Jagielski 	sal_Int32 AccessibleTabBarPage::getForeground(	) throw (RuntimeException)
432*b1cdbd2cSJim Jagielski 	{
433*b1cdbd2cSJim Jagielski 		OExternalLockGuard aGuard( this );
434*b1cdbd2cSJim Jagielski 
435*b1cdbd2cSJim Jagielski 		sal_Int32 nColor = 0;
436*b1cdbd2cSJim Jagielski 		Reference< XAccessible > xParent = getAccessibleParent();
437*b1cdbd2cSJim Jagielski 		if ( xParent.is() )
438*b1cdbd2cSJim Jagielski 		{
439*b1cdbd2cSJim Jagielski 			Reference< XAccessibleComponent > xParentComp( xParent->getAccessibleContext(), UNO_QUERY );
440*b1cdbd2cSJim Jagielski 			if ( xParentComp.is() )
441*b1cdbd2cSJim Jagielski 				nColor = xParentComp->getForeground();
442*b1cdbd2cSJim Jagielski 		}
443*b1cdbd2cSJim Jagielski 
444*b1cdbd2cSJim Jagielski 		return nColor;
445*b1cdbd2cSJim Jagielski 	}
446*b1cdbd2cSJim Jagielski 
447*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
448*b1cdbd2cSJim Jagielski 
getBackground()449*b1cdbd2cSJim Jagielski 	sal_Int32 AccessibleTabBarPage::getBackground(  ) throw (RuntimeException)
450*b1cdbd2cSJim Jagielski 	{
451*b1cdbd2cSJim Jagielski 		OExternalLockGuard aGuard( this );
452*b1cdbd2cSJim Jagielski 
453*b1cdbd2cSJim Jagielski 		sal_Int32 nColor = 0;
454*b1cdbd2cSJim Jagielski 		Reference< XAccessible > xParent = getAccessibleParent();
455*b1cdbd2cSJim Jagielski 		if ( xParent.is() )
456*b1cdbd2cSJim Jagielski 		{
457*b1cdbd2cSJim Jagielski 			Reference< XAccessibleComponent > xParentComp( xParent->getAccessibleContext(), UNO_QUERY );
458*b1cdbd2cSJim Jagielski 			if ( xParentComp.is() )
459*b1cdbd2cSJim Jagielski 				nColor = xParentComp->getBackground();
460*b1cdbd2cSJim Jagielski 		}
461*b1cdbd2cSJim Jagielski 
462*b1cdbd2cSJim Jagielski 		return nColor;
463*b1cdbd2cSJim Jagielski 	}
464*b1cdbd2cSJim Jagielski 
465*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
466*b1cdbd2cSJim Jagielski 	// XAccessibleExtendedComponent
467*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
468*b1cdbd2cSJim Jagielski 
getFont()469*b1cdbd2cSJim Jagielski 	Reference< awt::XFont > AccessibleTabBarPage::getFont(  ) throw (RuntimeException)
470*b1cdbd2cSJim Jagielski 	{
471*b1cdbd2cSJim Jagielski 		OExternalLockGuard aGuard( this );
472*b1cdbd2cSJim Jagielski 
473*b1cdbd2cSJim Jagielski 		Reference< awt::XFont > xFont;
474*b1cdbd2cSJim Jagielski 		Reference< XAccessible > xParent = getAccessibleParent();
475*b1cdbd2cSJim Jagielski 		if ( xParent.is() )
476*b1cdbd2cSJim Jagielski 		{
477*b1cdbd2cSJim Jagielski 			Reference< XAccessibleExtendedComponent > xParentComp( xParent->getAccessibleContext(), UNO_QUERY );
478*b1cdbd2cSJim Jagielski 			if ( xParentComp.is() )
479*b1cdbd2cSJim Jagielski 				xFont = xParentComp->getFont();
480*b1cdbd2cSJim Jagielski 		}
481*b1cdbd2cSJim Jagielski 
482*b1cdbd2cSJim Jagielski 		return xFont;
483*b1cdbd2cSJim Jagielski 	}
484*b1cdbd2cSJim Jagielski 
485*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
486*b1cdbd2cSJim Jagielski 
getTitledBorderText()487*b1cdbd2cSJim Jagielski 	::rtl::OUString AccessibleTabBarPage::getTitledBorderText(  ) throw (RuntimeException)
488*b1cdbd2cSJim Jagielski 	{
489*b1cdbd2cSJim Jagielski 		OExternalLockGuard aGuard( this );
490*b1cdbd2cSJim Jagielski 
491*b1cdbd2cSJim Jagielski 		return m_sPageText;
492*b1cdbd2cSJim Jagielski 	}
493*b1cdbd2cSJim Jagielski 
494*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
495*b1cdbd2cSJim Jagielski 
getToolTipText()496*b1cdbd2cSJim Jagielski 	::rtl::OUString AccessibleTabBarPage::getToolTipText(  ) throw (RuntimeException)
497*b1cdbd2cSJim Jagielski 	{
498*b1cdbd2cSJim Jagielski 		OExternalLockGuard aGuard( this );
499*b1cdbd2cSJim Jagielski 
500*b1cdbd2cSJim Jagielski 		return ::rtl::OUString();
501*b1cdbd2cSJim Jagielski 	}
502*b1cdbd2cSJim Jagielski 
503*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------------
504*b1cdbd2cSJim Jagielski 
505*b1cdbd2cSJim Jagielski //.........................................................................
506*b1cdbd2cSJim Jagielski }	// namespace accessibility
507*b1cdbd2cSJim Jagielski //.........................................................................
508