1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 
29 #ifndef _SVXRECTACCESSIBLECONTEXT_HXX
30 #define _SVXRECTACCESSIBLECONTEXT_HXX
31 
32 #include <com/sun/star/accessibility/XAccessible.hpp>
33 #include <com/sun/star/accessibility/XAccessibleComponent.hpp>
34 #include <com/sun/star/accessibility/XAccessibleContext.hpp>
35 #include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp>
36 #include <com/sun/star/accessibility/IllegalAccessibleComponentStateException.hpp>
37 #include <com/sun/star/accessibility/XAccessibleSelection.hpp>
38 #include <com/sun/star/accessibility/XAccessibleValue.hpp>
39 #include <com/sun/star/beans/XPropertyChangeListener.hpp>
40 #include <com/sun/star/uno/Reference.hxx>
41 #include <cppuhelper/weak.hxx>
42 #include <com/sun/star/lang/XServiceInfo.hpp>
43 #include <com/sun/star/lang/XTypeProvider.hpp>
44 #include <com/sun/star/lang/XServiceName.hpp>
45 #include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
46 #include <com/sun/star/lang/DisposedException.hpp>
47 #include <vos/mutex.hxx>
48 #include <cppuhelper/interfacecontainer.h>
49 #include <cppuhelper/compbase6.hxx>
50 //#ifndef _CPPUHELPER_COMPBASE7_HXX_
51 //#include <cppuhelper/compbase7.hxx>
52 //#endif
53 #include <comphelper/broadcasthelper.hxx>
54 #include <cppuhelper/implbase6.hxx>
55 #include <comphelper/servicehelper.hxx>
56 #include <svx/rectenum.hxx>
57 
58 namespace com { namespace sun { namespace star { namespace awt {
59 	struct Point;
60 	struct Rectangle;
61 	struct Size;
62 	class XFocusListener;
63 } } } }
64 
65 class Rectangle;
66 class SvxRectCtl;
67 class SvxRectCtlChildAccessibleContext;
68 class Window;
69 
70 
71 typedef ::cppu::WeakAggComponentImplHelper6<
72 			::com::sun::star::accessibility::XAccessible,
73 			::com::sun::star::accessibility::XAccessibleComponent,
74 			::com::sun::star::accessibility::XAccessibleContext,
75 			::com::sun::star::accessibility::XAccessibleEventBroadcaster,
76 			::com::sun::star::accessibility::XAccessibleSelection,
77 			::com::sun::star::lang::XServiceInfo >
78 			SvxRectCtlAccessibleContext_Base;
79 
80 class SvxRectCtlAccessibleContext : public ::comphelper::OBaseMutex, public SvxRectCtlAccessibleContext_Base
81 {
82 public:
83 	//=====  internal  ========================================================
84 	SvxRectCtlAccessibleContext(
85         const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible>& rxParent,
86 		SvxRectCtl&				rRepresentation,
87 		const ::rtl::OUString*	pName = NULL,
88 		const ::rtl::OUString*	pDescription = NULL );
89 protected:
90 	virtual ~SvxRectCtlAccessibleContext();
91 public:
92 	//=====  XAccessible  =====================================================
93 
94 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext> SAL_CALL
95 		getAccessibleContext( void ) throw( ::com::sun::star::uno::RuntimeException );
96 
97 	//=====  XAccessibleComponent  ============================================
98 
99 	virtual sal_Bool SAL_CALL
100 		containsPoint( const ::com::sun::star::awt::Point& rPoint ) throw( ::com::sun::star::uno::RuntimeException );
101 
102 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL
103 		getAccessibleAtPoint( const ::com::sun::star::awt::Point& rPoint ) throw( ::com::sun::star::uno::RuntimeException );
104 
105 	virtual ::com::sun::star::awt::Rectangle SAL_CALL
106 		getBounds() throw( ::com::sun::star::uno::RuntimeException );
107 
108 	virtual ::com::sun::star::awt::Point SAL_CALL
109 		getLocation() throw( ::com::sun::star::uno::RuntimeException );
110 
111 	virtual ::com::sun::star::awt::Point SAL_CALL
112 		getLocationOnScreen() throw( ::com::sun::star::uno::RuntimeException );
113 
114 	virtual ::com::sun::star::awt::Size SAL_CALL
115 		getSize() throw( ::com::sun::star::uno::RuntimeException );
116 
117 	virtual sal_Bool SAL_CALL
118 		isShowing() throw( ::com::sun::star::uno::RuntimeException );
119 
120 	virtual sal_Bool SAL_CALL
121 		isVisible() throw( ::com::sun::star::uno::RuntimeException );
122 
123 	virtual sal_Bool SAL_CALL
124 		isFocusTraversable() throw( ::com::sun::star::uno::RuntimeException );
125 
126 	virtual void SAL_CALL
127 		addFocusListener(
128 			const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XFocusListener >& xListener )
129 			throw( ::com::sun::star::uno::RuntimeException );
130 
131 	virtual void SAL_CALL
132 		removeFocusListener(
133 			const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XFocusListener >& xListener )
134 			throw( ::com::sun::star::uno::RuntimeException );
135 
136 	virtual void SAL_CALL
137 		grabFocus() throw( ::com::sun::star::uno::RuntimeException );
138 
139 	virtual ::com::sun::star::uno::Any SAL_CALL
140 		getAccessibleKeyBinding() throw( ::com::sun::star::uno::RuntimeException );
141     virtual sal_Int32 SAL_CALL
142         getForeground(  ) throw (::com::sun::star::uno::RuntimeException);
143     virtual sal_Int32 SAL_CALL
144         getBackground(  ) throw (::com::sun::star::uno::RuntimeException);
145 
146 	//=====  XAccessibleContext  ==============================================
147 
148 	virtual sal_Int32 SAL_CALL
149 		getAccessibleChildCount( void ) throw( ::com::sun::star::uno::RuntimeException );
150 
151 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible> SAL_CALL
152 		getAccessibleChild( sal_Int32 nIndex )
153 			throw( ::com::sun::star::uno::RuntimeException, ::com::sun::star::lang::IndexOutOfBoundsException );
154 
155 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible> SAL_CALL
156 		getAccessibleParent( void ) throw( ::com::sun::star::uno::RuntimeException );
157 
158 	virtual	sal_Int32 SAL_CALL
159 		getAccessibleIndexInParent( void ) throw( ::com::sun::star::uno::RuntimeException );
160 
161 	virtual sal_Int16 SAL_CALL
162 		getAccessibleRole( void ) throw( ::com::sun::star::uno::RuntimeException );
163 
164 	virtual ::rtl::OUString SAL_CALL
165 		getAccessibleDescription( void ) throw (::com::sun::star::uno::RuntimeException);
166 
167 	virtual ::rtl::OUString SAL_CALL
168 		getAccessibleName( void ) throw (::com::sun::star::uno::RuntimeException);
169 
170 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL
171 		getAccessibleRelationSet( void ) throw( ::com::sun::star::uno::RuntimeException );
172 
173 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleStateSet > SAL_CALL
174 		getAccessibleStateSet( void ) throw( ::com::sun::star::uno::RuntimeException );
175 
176 	virtual ::com::sun::star::lang::Locale SAL_CALL
177 		getLocale( void )
178 			throw(	::com::sun::star::uno::RuntimeException,
179 					::com::sun::star::accessibility::IllegalAccessibleComponentStateException );
180 
181     //=====  XComponent  =====================================================
182 
183     using ::cppu::WeakAggComponentImplHelperBase::addEventListener;
184     using ::cppu::WeakAggComponentImplHelperBase::removeEventListener;
185 
186     //=====  XAccessibleEventBroadcaster  =====================================
187 
188 	virtual void SAL_CALL
189 		addEventListener(
190 			const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener )
191 			throw( com::sun::star::uno::RuntimeException );
192 
193 	virtual void SAL_CALL
194 		removeEventListener(
195 			const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener )
196 			throw( com::sun::star::uno::RuntimeException );
197 
198 	//=====  XServiceInfo  ====================================================
199 
200 	virtual ::rtl::OUString SAL_CALL
201 		getImplementationName( void ) throw( ::com::sun::star::uno::RuntimeException );
202 
203 	virtual sal_Bool SAL_CALL
204 		supportsService( const ::rtl::OUString& sServiceName ) throw( ::com::sun::star::uno::RuntimeException );
205 
206 	virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL
207 		getSupportedServiceNames( void ) throw( ::com::sun::star::uno::RuntimeException );
208 
209 	//=====  XTypeProvider  ===================================================
210 
211 	virtual ::com::sun::star::uno::Sequence<sal_Int8> SAL_CALL
212 		getImplementationId( void ) throw( ::com::sun::star::uno::RuntimeException );
213 
214 	//=====  XAccessibleSelection =============================================
215 
216 	virtual void SAL_CALL
217 		selectAccessibleChild( sal_Int32 nChildIndex )
218 			throw( ::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException );
219 
220 	virtual sal_Bool SAL_CALL
221 		isAccessibleChildSelected( sal_Int32 nChildIndex )
222 			throw( ::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException );
223 
224 	virtual void SAL_CALL
225 		clearAccessibleSelection() throw( ::com::sun::star::uno::RuntimeException );
226 
227 	virtual void SAL_CALL
228 		selectAllAccessibleChildren() throw( ::com::sun::star::uno::RuntimeException );
229 
230 	virtual sal_Int32 SAL_CALL
231 		getSelectedAccessibleChildCount() throw( ::com::sun::star::uno::RuntimeException );
232 
233 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL
234 		getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex )
235 			throw( ::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException );
236 
237 	virtual void SAL_CALL
238 		deselectAccessibleChild( sal_Int32 nSelectedChildIndex )
239 			throw( ::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException );
240 
241 
242 protected:
243 	//=====  internals ========================================================
244 
245 	void checkChildIndex( long nIndexOfChild ) throw( ::com::sun::star::lang::IndexOutOfBoundsException );
246 
247 	void checkChildIndexOnSelection( long nIndexOfChild ) throw( ::com::sun::star::lang::IndexOutOfBoundsException );
248 
249     /** Selects a new child by index.
250 
251         <p>If the child was not selected before, the state of the child will
252         be updated. If the index is invalid, the index will internaly set to NOCHILDSELECTED</p>
253 
254         @param nIndexOfChild
255             Index of the new child which should be selected.
256     */
257 	void selectChild( long nIndexOfChild );
258 
259 public:
260     /** Selects a new child by point.
261 
262         <p>If the child was not selected before, the state of the child will
263         be updated. If the point is not invalid, the index will internaly set to NOCHILDSELECTED</p>
264 
265         @param eButton
266             Button which belongs to the child which should be selected.
267     */
268 	void selectChild( RECT_POINT ePoint );
269 
270 	/// Sets the name
271 	void setName( const ::rtl::OUString& rName );
272 
273 	/// Sets the description
274 	void setDescription( const ::rtl::OUString& rDescr );
275 private:
276 	static ::com::sun::star::uno::Sequence< sal_Int8 > getUniqueId( void );
277 protected:
278 
279     ///	@Return the object's current bounding box relative to the desktop.
280 	virtual Rectangle GetBoundingBoxOnScreen( void ) throw( ::com::sun::star::uno::RuntimeException );
281 
282 	///	@Return the object's current bounding box relative to the parent object.
283 	virtual Rectangle GetBoundingBox( void ) throw( ::com::sun::star::uno::RuntimeException );
284 
285 	/// Calls all Listener to tell they the change.
286 	void CommitChange( const com::sun::star::accessibility::AccessibleEventObject& rEvent );
287 
288 	virtual void SAL_CALL disposing();
289 
290 	/// @returns true if it's disposed or in disposing
291 	inline sal_Bool IsAlive( void ) const;
292 
293 	/// @returns true if it's not disposed and no in disposing
294 	inline sal_Bool IsNotAlive( void ) const;
295 
296 	/// throws the exception DisposedException if it's not alive
297 	void ThrowExceptionIfNotAlive( void ) throw( ::com::sun::star::lang::DisposedException );
298 
299 private:
300     /**	Description of this object.  This is not a constant because it can
301     	be set from the outside.
302     */
303     ::rtl::OUString						msDescription;
304 
305     /**	Name of this object.
306     */
307     ::rtl::OUString						msName;
308 
309     ///	Reference to the parent object.
310     ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
311 										mxParent;
312 
313 	/// pointer to internal representation
314 	SvxRectCtl*							mpRepr;
315 
316 	/// array for all possible childs
317 	SvxRectCtlChildAccessibleContext**	mpChilds;
318 
319     /// client id in the AccessibleEventNotifier queue
320     sal_uInt32 mnClientId;
321 
322     /// actual selected child
323 	long								mnSelectedChild;
324 
325 	/// mode of control (true -> 8 points, false -> 9 points)
326 	sal_Bool							mbAngleMode;
327 };
328 
329 inline sal_Bool SvxRectCtlAccessibleContext::IsAlive( void ) const
330 {
331 	return !rBHelper.bDisposed && !rBHelper.bInDispose;
332 }
333 
334 inline sal_Bool SvxRectCtlAccessibleContext::IsNotAlive( void ) const
335 {
336 	return rBHelper.bDisposed || rBHelper.bInDispose;
337 }
338 
339 
340 typedef ::cppu::WeakAggComponentImplHelper6<
341 			::com::sun::star::accessibility::XAccessible,
342 			::com::sun::star::accessibility::XAccessibleComponent,
343 			::com::sun::star::accessibility::XAccessibleContext,
344 			::com::sun::star::accessibility::XAccessibleEventBroadcaster,
345 			::com::sun::star::accessibility::XAccessibleValue,
346 			::com::sun::star::lang::XServiceInfo >
347 			SvxRectCtlChildAccessibleContext_Base;
348 
349 
350 class SvxRectCtlChildAccessibleContext : public SvxRectCtlChildAccessibleContext_Base
351 {
352 public:
353 	SvxRectCtlChildAccessibleContext(
354         const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible>& rxParent,
355 		const Window& rParentWindow,
356 		const ::rtl::OUString& rName, const ::rtl::OUString& rDescription,
357 		const Rectangle& rBoundingBox,
358 		long nIndexInParent );
359 protected:
360 	virtual ~SvxRectCtlChildAccessibleContext();
361 public:
362 	//=====  XAccessible  =====================================================
363 
364     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext> SAL_CALL
365     	getAccessibleContext( void ) throw( ::com::sun::star::uno::RuntimeException );
366 
367 	//=====  XAccessibleComponent  ============================================
368 
369     virtual sal_Bool SAL_CALL
370 		containsPoint( const ::com::sun::star::awt::Point& rPoint ) throw( ::com::sun::star::uno::RuntimeException );
371 
372     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL
373 		getAccessibleAtPoint( const ::com::sun::star::awt::Point& rPoint ) throw( ::com::sun::star::uno::RuntimeException );
374 
375     virtual ::com::sun::star::awt::Rectangle SAL_CALL
376 		getBounds() throw( ::com::sun::star::uno::RuntimeException );
377 
378     virtual ::com::sun::star::awt::Point SAL_CALL
379 		getLocation() throw( ::com::sun::star::uno::RuntimeException );
380 
381     virtual ::com::sun::star::awt::Point SAL_CALL
382 		getLocationOnScreen() throw( ::com::sun::star::uno::RuntimeException );
383 
384     virtual ::com::sun::star::awt::Size SAL_CALL
385 		getSize() throw( ::com::sun::star::uno::RuntimeException );
386 
387 	virtual sal_Bool SAL_CALL
388 		isShowing() throw( ::com::sun::star::uno::RuntimeException );
389 
390     virtual sal_Bool SAL_CALL
391 		isVisible() throw( ::com::sun::star::uno::RuntimeException );
392 
393     virtual sal_Bool SAL_CALL
394 		isFocusTraversable() throw( ::com::sun::star::uno::RuntimeException );
395 
396     virtual void SAL_CALL
397 		addFocusListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XFocusListener >& xListener )
398 			throw( ::com::sun::star::uno::RuntimeException );
399 
400 	virtual void SAL_CALL
401 		removeFocusListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XFocusListener >& xListener )
402 			throw (::com::sun::star::uno::RuntimeException);
403 
404     virtual void SAL_CALL
405 		grabFocus() throw( ::com::sun::star::uno::RuntimeException );
406 
407     virtual ::com::sun::star::uno::Any SAL_CALL
408 		getAccessibleKeyBinding() throw( ::com::sun::star::uno::RuntimeException );
409     virtual sal_Int32 SAL_CALL
410         getForeground(  ) throw (::com::sun::star::uno::RuntimeException);
411     virtual sal_Int32 SAL_CALL
412         getBackground(  ) throw (::com::sun::star::uno::RuntimeException);
413 
414 	//=====  XAccessibleContext  ==============================================
415 
416     virtual sal_Int32 SAL_CALL
417     	getAccessibleChildCount( void ) throw( ::com::sun::star::uno::RuntimeException );
418 
419     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL
420     	getAccessibleChild( sal_Int32 nIndex )
421 			throw( ::com::sun::star::uno::RuntimeException, ::com::sun::star::lang::IndexOutOfBoundsException );
422 
423 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL
424     	getAccessibleParent( void ) throw( ::com::sun::star::uno::RuntimeException );
425 
426 	virtual	sal_Int32 SAL_CALL
427     	getAccessibleIndexInParent( void ) throw( ::com::sun::star::uno::RuntimeException );
428 
429 	virtual sal_Int16 SAL_CALL
430     	getAccessibleRole( void ) throw( ::com::sun::star::uno::RuntimeException );
431 
432 	virtual ::rtl::OUString SAL_CALL
433     	getAccessibleDescription( void ) throw( ::com::sun::star::uno::RuntimeException );
434 
435 	virtual ::rtl::OUString SAL_CALL
436     	getAccessibleName( void ) throw( ::com::sun::star::uno::RuntimeException );
437 
438 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL
439     	getAccessibleRelationSet( void ) throw( ::com::sun::star::uno::RuntimeException );
440 
441 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleStateSet > SAL_CALL
442     	getAccessibleStateSet( void ) throw( ::com::sun::star::uno::RuntimeException );
443 
444 	virtual ::com::sun::star::lang::Locale SAL_CALL
445     	getLocale( void )
446 			throw( ::com::sun::star::uno::RuntimeException, ::com::sun::star::accessibility::IllegalAccessibleComponentStateException );
447 
448     //=====  XComponent  =====================================================
449 
450     using ::cppu::WeakAggComponentImplHelperBase::addEventListener;
451     using ::cppu::WeakAggComponentImplHelperBase::removeEventListener;
452 
453 	//=====  XAccessibleEventBroadcaster  =====================================
454 
455 	virtual void SAL_CALL
456     	addEventListener(
457         	const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener )
458 			throw( ::com::sun::star::uno::RuntimeException );
459 
460 	virtual void SAL_CALL
461     	removeEventListener(
462 			const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener )
463 	        throw( com::sun::star::uno::RuntimeException );
464 
465 	//=====  XAccessibleValue  ================================================
466 
467     virtual ::com::sun::star::uno::Any SAL_CALL
468 		getCurrentValue() throw( ::com::sun::star::uno::RuntimeException );
469 
470     virtual sal_Bool SAL_CALL
471 		setCurrentValue( const ::com::sun::star::uno::Any& aNumber ) throw( ::com::sun::star::uno::RuntimeException );
472 
473     virtual ::com::sun::star::uno::Any SAL_CALL
474 		getMaximumValue() throw( ::com::sun::star::uno::RuntimeException );
475 
476     virtual ::com::sun::star::uno::Any SAL_CALL
477 		getMinimumValue() throw( ::com::sun::star::uno::RuntimeException );
478 
479 	//=====  XServiceInfo  ====================================================
480 
481 	virtual ::rtl::OUString SAL_CALL
482     	getImplementationName( void ) throw( ::com::sun::star::uno::RuntimeException );
483 
484     virtual sal_Bool SAL_CALL
485     	supportsService( const ::rtl::OUString& sServiceName ) throw( ::com::sun::star::uno::RuntimeException );
486 
487 	virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL
488     	getSupportedServiceNames( void ) throw( ::com::sun::star::uno::RuntimeException );
489 
490 
491 	//=====  XTypeProvider  ===================================================
492 
493     virtual ::com::sun::star::uno::Sequence<sal_Int8> SAL_CALL
494         getImplementationId( void ) throw( ::com::sun::star::uno::RuntimeException );
495 
496 	//===== internal ==========================================================
497 
498 	/// Sets the checked status
499 	void setStateChecked( sal_Bool bChecked );
500 
501 protected:
502 	virtual Rectangle GetBoundingBoxOnScreen( void ) throw( ::com::sun::star::uno::RuntimeException );
503 
504 	virtual Rectangle GetBoundingBox( void ) throw( ::com::sun::star::uno::RuntimeException );
505 
506 	void CommitChange( const com::sun::star::accessibility::AccessibleEventObject& rEvent );
507 
508 	virtual void SAL_CALL disposing();
509 
510 	/// @returns true if it's disposed or in disposing
511 	inline sal_Bool IsAlive( void ) const;
512 
513 	/// @returns true if it's not disposed and no in disposing
514 	inline sal_Bool IsNotAlive( void ) const;
515 
516 	/// throws the exception DisposedException if it's not alive
517 	void ThrowExceptionIfNotAlive( void ) throw( ::com::sun::star::lang::DisposedException );
518 
519 	///	Mutex guarding this object.
520     ::osl::Mutex						maMutex;
521 
522 private:
523 
524     /**	Description of this object.  This is not a constant because it can
525     	be set from the outside.  Furthermore, it changes according the the
526         draw page's display mode.
527     */
528     ::rtl::OUString						msDescription;
529 
530     /**	Name of this object.  It changes according the the draw page's
531         display mode.
532     */
533     ::rtl::OUString						msName;
534 
535     ///	Reference to the parent object.
536     ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
537 										mxParent;
538 
539 	/// Bounding box
540 	Rectangle*							mpBoundingBox;
541 
542 	/// window of parent
543 	const Window&						mrParentWindow;
544 
545     /// client id in the AccessibleEventNotifier queue
546     sal_uInt32                          mnClientId;
547 
548 	/// index of child in parent
549 	long								mnIndexInParent;
550 
551 	/// Indicates, if object is checked
552 	sal_Bool							mbIsChecked;
553 };
554 
555 inline sal_Bool SvxRectCtlChildAccessibleContext::IsAlive( void ) const
556 {
557 	return !rBHelper.bDisposed && !rBHelper.bInDispose;
558 }
559 
560 inline sal_Bool SvxRectCtlChildAccessibleContext::IsNotAlive( void ) const
561 {
562 	return rBHelper.bDisposed || rBHelper.bInDispose;
563 }
564 
565 
566 #endif
567