Line data Source code
1 : /*
2 : * This file is part of the LibreOffice project.
3 : *
4 : * This Source Code Form is subject to the terms of the Mozilla Public
5 : * License, v. 2.0. If a copy of the MPL was not distributed with this
6 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 : *
8 : * This file incorporates work covered by the following license notice:
9 : *
10 : * Licensed to the Apache Software Foundation (ASF) under one or more
11 : * contributor license agreements. See the NOTICE file distributed
12 : * with this work for additional information regarding copyright
13 : * ownership. The ASF licenses this file to you under the Apache
14 : * License, Version 2.0 (the "License"); you may not use this file
15 : * except in compliance with the License. You may obtain a copy of
16 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
17 : */
18 : #include <svtools/vclxaccessibleheaderbaritem.hxx>
19 :
20 : #include <svtools/headbar.hxx>
21 :
22 : #include <com/sun/star/accessibility/AccessibleEventId.hpp>
23 : #include <com/sun/star/accessibility/AccessibleRole.hpp>
24 : #include <com/sun/star/accessibility/AccessibleStateType.hpp>
25 : #include <cppuhelper/supportsservice.hxx>
26 :
27 : #include <unotools/accessiblestatesethelper.hxx>
28 : #include <unotools/accessiblerelationsethelper.hxx>
29 : #include <vcl/svapp.hxx>
30 : #include <vcl/settings.hxx>
31 : #include <toolkit/awt/vclxfont.hxx>
32 : #include <toolkit/helper/externallock.hxx>
33 : #include <toolkit/helper/convert.hxx>
34 :
35 : #include <vector>
36 :
37 : using namespace ::com::sun::star;
38 : using namespace ::com::sun::star::uno;
39 : using namespace ::com::sun::star::lang;
40 : using namespace ::com::sun::star::accessibility;
41 : using namespace ::comphelper;
42 :
43 :
44 :
45 : // class AccessibleTabBar
46 :
47 :
48 0 : VCLXAccessibleHeaderBarItem::VCLXAccessibleHeaderBarItem( HeaderBar* pHeadBar, sal_Int32 _nIndexInParent )
49 : :AccessibleExtendedComponentHelper_BASE( new VCLExternalSolarLock() )
50 : ,m_pHeadBar( pHeadBar )
51 0 : ,m_nIndexInParent(_nIndexInParent + 1)
52 :
53 : {
54 0 : m_pExternalLock = static_cast< VCLExternalSolarLock* >( getExternalLock() );
55 0 : }
56 :
57 :
58 :
59 0 : VCLXAccessibleHeaderBarItem::~VCLXAccessibleHeaderBarItem()
60 : {
61 0 : delete m_pExternalLock;
62 0 : m_pExternalLock = NULL;
63 0 : }
64 :
65 :
66 :
67 0 : void VCLXAccessibleHeaderBarItem::ProcessWindowEvent( const VclWindowEvent& )
68 : {
69 0 : }
70 :
71 :
72 :
73 0 : void VCLXAccessibleHeaderBarItem::FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet )
74 : {
75 0 : if ( m_pHeadBar )
76 : {
77 0 : if ( m_pHeadBar->IsEnabled() )
78 0 : rStateSet.AddState( AccessibleStateType::ENABLED );
79 :
80 0 : if ( m_pHeadBar->IsVisible() )
81 : {
82 0 : rStateSet.AddState( AccessibleStateType::VISIBLE );
83 : }
84 0 : rStateSet.AddState( AccessibleStateType::SELECTABLE );
85 0 : rStateSet.AddState( AccessibleStateType::RESIZABLE );
86 : }
87 0 : }
88 :
89 :
90 : // OCommonAccessibleComponent
91 :
92 :
93 0 : awt::Rectangle VCLXAccessibleHeaderBarItem::implGetBounds() throw (RuntimeException)
94 : {
95 0 : awt::Rectangle aBounds;
96 0 : OExternalLockGuard aGuard( this );
97 :
98 0 : ::com::sun::star::awt::Size aSize;
99 :
100 0 : if ( m_pHeadBar )
101 0 : aBounds = AWTRectangle( m_pHeadBar->GetItemRect( sal_uInt16( m_nIndexInParent ) ) );
102 :
103 0 : return aBounds;
104 : }
105 :
106 :
107 : // XInterface
108 :
109 :
110 0 : IMPLEMENT_FORWARD_XINTERFACE2( VCLXAccessibleHeaderBarItem, AccessibleExtendedComponentHelper_BASE, VCLXAccessibleHeaderBarItem_BASE )
111 :
112 :
113 : // XTypeProvider
114 :
115 :
116 0 : IMPLEMENT_FORWARD_XTYPEPROVIDER2( VCLXAccessibleHeaderBarItem, AccessibleExtendedComponentHelper_BASE, VCLXAccessibleHeaderBarItem_BASE )
117 :
118 :
119 : // XComponent
120 :
121 :
122 0 : void VCLXAccessibleHeaderBarItem::disposing()
123 : {
124 0 : AccessibleExtendedComponentHelper_BASE::disposing();
125 0 : }
126 :
127 : // XServiceInfo
128 0 : OUString VCLXAccessibleHeaderBarItem::getImplementationName() throw (RuntimeException, std::exception)
129 : {
130 0 : return OUString("com.sun.star.comp.svtools.AccessibleHeaderBarItem");
131 : }
132 :
133 0 : sal_Bool VCLXAccessibleHeaderBarItem::supportsService( const OUString& rServiceName ) throw (RuntimeException, std::exception)
134 : {
135 0 : return cppu::supportsService( this, rServiceName );
136 : }
137 :
138 0 : Sequence< OUString > VCLXAccessibleHeaderBarItem::getSupportedServiceNames() throw (RuntimeException, std::exception)
139 : {
140 0 : Sequence< OUString > aNames(1);
141 0 : aNames[0] = OUString( "com.sun.star.awt.AccessibleHeaderBarItem" );
142 0 : return aNames;
143 : }
144 :
145 : // XAccessible
146 0 : Reference< XAccessibleContext > VCLXAccessibleHeaderBarItem::getAccessibleContext() throw (RuntimeException, std::exception)
147 : {
148 0 : OExternalLockGuard aGuard( this );
149 :
150 0 : return this;
151 : }
152 :
153 :
154 : // XAccessibleContext
155 :
156 :
157 0 : sal_Int32 VCLXAccessibleHeaderBarItem::getAccessibleChildCount() throw (RuntimeException, std::exception)
158 : {
159 0 : OExternalLockGuard aGuard( this );
160 :
161 0 : return 0;
162 : }
163 :
164 :
165 :
166 0 : Reference< XAccessible > VCLXAccessibleHeaderBarItem::getAccessibleChild( sal_Int32 i ) throw (IndexOutOfBoundsException, RuntimeException, std::exception)
167 : {
168 0 : OExternalLockGuard aGuard( this );
169 :
170 0 : if ( i < 0 || i >= getAccessibleChildCount() )
171 0 : throw IndexOutOfBoundsException();
172 :
173 0 : return Reference< XAccessible >();
174 : }
175 :
176 :
177 :
178 0 : Reference< XAccessible > VCLXAccessibleHeaderBarItem::getAccessibleParent() throw (RuntimeException, std::exception)
179 : {
180 0 : OExternalLockGuard aGuard( this );
181 :
182 0 : Reference< XAccessible > xParent;
183 0 : if ( m_pHeadBar )
184 : {
185 0 : xParent = m_pHeadBar->GetAccessible();
186 : }
187 :
188 0 : return xParent;
189 : }
190 :
191 :
192 :
193 0 : sal_Int32 VCLXAccessibleHeaderBarItem::getAccessibleIndexInParent() throw (RuntimeException, std::exception)
194 : {
195 0 : OExternalLockGuard aGuard( this );
196 0 : return m_nIndexInParent - 1;
197 : }
198 :
199 :
200 :
201 0 : sal_Int16 VCLXAccessibleHeaderBarItem::getAccessibleRole() throw (RuntimeException, std::exception)
202 : {
203 0 : OExternalLockGuard aGuard( this );
204 :
205 0 : return AccessibleRole::COLUMN_HEADER;
206 : }
207 :
208 :
209 :
210 0 : OUString VCLXAccessibleHeaderBarItem::getAccessibleDescription() throw (RuntimeException, std::exception)
211 : {
212 0 : OExternalLockGuard aGuard( this );
213 0 : OUString sDescription;
214 0 : return sDescription;
215 : }
216 :
217 :
218 :
219 0 : OUString VCLXAccessibleHeaderBarItem::getAccessibleName() throw (RuntimeException, std::exception)
220 : {
221 0 : OExternalLockGuard aGuard( this );
222 :
223 0 : OUString sName;
224 0 : if(m_pHeadBar)
225 0 : sName = m_pHeadBar->GetItemText( sal_uInt16( m_nIndexInParent ) );
226 0 : return sName;
227 : }
228 :
229 :
230 :
231 0 : Reference< XAccessibleRelationSet > VCLXAccessibleHeaderBarItem::getAccessibleRelationSet( ) throw (RuntimeException, std::exception)
232 : {
233 0 : OExternalLockGuard aGuard( this );
234 :
235 0 : utl::AccessibleRelationSetHelper* pRelationSetHelper = new utl::AccessibleRelationSetHelper;
236 0 : Reference< XAccessibleRelationSet > xSet = pRelationSetHelper;
237 0 : return xSet;
238 : }
239 :
240 :
241 :
242 0 : Reference< XAccessibleStateSet > VCLXAccessibleHeaderBarItem::getAccessibleStateSet( ) throw (RuntimeException, std::exception)
243 : {
244 0 : OExternalLockGuard aGuard( this );
245 :
246 0 : utl::AccessibleStateSetHelper* pStateSetHelper = new utl::AccessibleStateSetHelper;
247 0 : Reference< XAccessibleStateSet > xSet = pStateSetHelper;
248 :
249 0 : if ( !rBHelper.bDisposed && !rBHelper.bInDispose )
250 : {
251 0 : FillAccessibleStateSet( *pStateSetHelper );
252 : }
253 : else
254 : {
255 0 : pStateSetHelper->AddState( AccessibleStateType::DEFUNC );
256 : }
257 :
258 0 : return xSet;
259 : }
260 :
261 :
262 :
263 0 : com::sun::star::lang::Locale VCLXAccessibleHeaderBarItem::getLocale() throw (IllegalAccessibleComponentStateException, RuntimeException, std::exception)
264 : {
265 0 : OExternalLockGuard aGuard( this );
266 :
267 0 : return Application::GetSettings().GetLanguageTag().getLocale();
268 : }
269 :
270 :
271 : // XAccessibleComponent
272 :
273 :
274 0 : Reference< XAccessible > VCLXAccessibleHeaderBarItem::getAccessibleAtPoint( const awt::Point& ) throw (RuntimeException, std::exception)
275 : {
276 0 : OExternalLockGuard aGuard( this );
277 :
278 0 : return Reference< XAccessible >();
279 : }
280 :
281 :
282 :
283 0 : sal_Int32 VCLXAccessibleHeaderBarItem::getForeground() throw (RuntimeException, std::exception)
284 : {
285 0 : OExternalLockGuard aGuard( this );
286 :
287 0 : sal_Int32 nColor = 0;
288 0 : return nColor;
289 : }
290 :
291 :
292 :
293 0 : sal_Int32 VCLXAccessibleHeaderBarItem::getBackground() throw (RuntimeException, std::exception)
294 : {
295 0 : OExternalLockGuard aGuard( this );
296 :
297 0 : sal_Int32 nColor = 0;
298 0 : return nColor;
299 : }
300 :
301 :
302 : // XAccessibleExtendedComponent
303 :
304 :
305 0 : Reference< awt::XFont > VCLXAccessibleHeaderBarItem::getFont() throw (RuntimeException, std::exception)
306 : {
307 0 : OExternalLockGuard aGuard( this );
308 :
309 0 : Reference< awt::XFont > xFont;
310 0 : return xFont;
311 : }
312 :
313 :
314 :
315 0 : OUString VCLXAccessibleHeaderBarItem::getTitledBorderText() throw (RuntimeException, std::exception)
316 : {
317 0 : OExternalLockGuard aGuard( this );
318 :
319 0 : OUString sText;
320 0 : return sText;
321 : }
322 :
323 :
324 :
325 0 : OUString VCLXAccessibleHeaderBarItem::getToolTipText() throw (RuntimeException, std::exception)
326 : {
327 0 : OExternalLockGuard aGuard( this );
328 :
329 0 : OUString sText;
330 0 : if ( m_pHeadBar )
331 0 : sText = m_pHeadBar->GetQuickHelpText();
332 :
333 0 : return sText;
334 : }
|