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