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