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 #ifdef _MSC_VER
29 #pragma hdrstop
30 #endif
31 
32 #ifndef _ACCESSIBILITY_HXX_
33 #define _ACCESSIBILITY_HXX_
34 
35 //#ifndef _COM_SUN_STAR_LANG_XCOMPONENT_HPP_
36 //#include <com/sun/star/lang/XComponent.hpp>
37 //#endif
38 #include <com/sun/star/accessibility/XAccessible.hpp>
39 #include <com/sun/star/accessibility/XAccessibleComponent.hpp>
40 #include <com/sun/star/accessibility/XAccessibleContext.hpp>
41 #include <com/sun/star/accessibility/XAccessibleText.hpp>
42 #include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp>
43 #include <com/sun/star/accessibility/AccessibleEventId.hpp>
44 #ifndef _COM_SUN_STAR_lang_XSERVICEINFO_HPP_
45 #include <com/sun/star/lang/XServiceInfo.hpp>
46 #endif
47 #include <com/sun/star/uno/Reference.h>
48 #include <osl/mutex.hxx>
49 #include <cppuhelper/interfacecontainer.h>
50 #include <cppuhelper/implbase5.hxx>
51 #include <cppuhelper/implbase6.hxx>
52 #include <svl/brdcst.hxx>
53 
54 #include <editeng/editeng.hxx>
55 #include <editeng/unoedsrc.hxx> // SvxEditSource, SvxTextForwarder, SvxViewForwarder, SvxEditViewForwarder
56 #include <svx/AccessibleTextHelper.hxx>
57 #include <edit.hxx>
58 
59 class Window;
60 class SmGraphicWindow;
61 class SmEditWindow;
62 class SmDocShell;
63 
64 namespace com { namespace sun { namespace star { namespace accessibility {
65 struct AccessibleEventObject;
66 }}}}
67 
68 //////////////////////////////////////////////////////////////////////
69 //
70 // classes and helper-classes used for accessibility in the graphic-window
71 //
72 
73 typedef
74 cppu::WeakImplHelper6
75     <
76         com::sun::star::lang::XServiceInfo,
77         com::sun::star::accessibility::XAccessible,
78         com::sun::star::accessibility::XAccessibleComponent,
79         com::sun::star::accessibility::XAccessibleContext,
80         com::sun::star::accessibility::XAccessibleText,
81         com::sun::star::accessibility::XAccessibleEventBroadcaster
82     >
83 SmGraphicAccessibleBaseClass;
84 
85 class SmGraphicAccessible :
86     public SmGraphicAccessibleBaseClass
87 {
88     //vos::ORefCount    aRefCount;  // number of references to object
89     osl::Mutex                          aListenerMutex;
90     String                              aAccName;
91     /// client id in the AccessibleEventNotifier queue
92     sal_uInt32                          nClientId;
93 
94     SmGraphicWindow     *pWin;
95 
96     // disallow copy-ctor and assignment-operator for now
97     SmGraphicAccessible( const SmGraphicAccessible & );
98     SmGraphicAccessible & operator = ( const SmGraphicAccessible & );
99 
100 protected:
101     SmDocShell *    GetDoc_Impl();
102     String          GetAccessibleText_Impl();
103 
104 public:
105     SmGraphicAccessible( SmGraphicWindow *pGraphicWin );
106     virtual ~SmGraphicAccessible();
107 
108     SmGraphicWindow *   GetWin()    { return pWin; }
109     void                ClearWin();     // to be called when view is destroyed
110     void                LaunchEvent(
111                             const sal_Int16 nAccesibleEventId,
112                             const ::com::sun::star::uno::Any &rOldVal,
113                             const ::com::sun::star::uno::Any &rNewVal);
114 
115     // XAccessible
116     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext(  ) throw (::com::sun::star::uno::RuntimeException);
117 
118     // XAccessibleComponent
119     virtual sal_Bool SAL_CALL containsPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
120     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
121     virtual ::com::sun::star::awt::Rectangle SAL_CALL getBounds(  ) throw (::com::sun::star::uno::RuntimeException);
122     virtual ::com::sun::star::awt::Point SAL_CALL getLocation(  ) throw (::com::sun::star::uno::RuntimeException);
123     virtual ::com::sun::star::awt::Point SAL_CALL getLocationOnScreen(  ) throw (::com::sun::star::uno::RuntimeException);
124     virtual ::com::sun::star::awt::Size SAL_CALL getSize(  ) throw (::com::sun::star::uno::RuntimeException);
125     virtual void SAL_CALL grabFocus(  ) throw (::com::sun::star::uno::RuntimeException);
126     virtual sal_Int32 SAL_CALL getForeground(  ) throw (::com::sun::star::uno::RuntimeException);
127     virtual sal_Int32 SAL_CALL getBackground(  ) throw (::com::sun::star::uno::RuntimeException);
128 
129     // XAccessibleContext
130     virtual sal_Int32 SAL_CALL getAccessibleChildCount(  ) throw (::com::sun::star::uno::RuntimeException);
131     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
132     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleParent(  ) throw (::com::sun::star::uno::RuntimeException);
133     virtual sal_Int32 SAL_CALL getAccessibleIndexInParent(  ) throw (::com::sun::star::uno::RuntimeException);
134     virtual sal_Int16 SAL_CALL getAccessibleRole(  ) throw (::com::sun::star::uno::RuntimeException);
135     virtual ::rtl::OUString SAL_CALL getAccessibleDescription(  ) throw (::com::sun::star::uno::RuntimeException);
136     virtual ::rtl::OUString SAL_CALL getAccessibleName(  ) throw (::com::sun::star::uno::RuntimeException);
137     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet(  ) throw (::com::sun::star::uno::RuntimeException);
138     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet(  ) throw (::com::sun::star::uno::RuntimeException);
139     virtual ::com::sun::star::lang::Locale SAL_CALL getLocale(  ) throw (::com::sun::star::accessibility::IllegalAccessibleComponentStateException, ::com::sun::star::uno::RuntimeException);
140 
141     // XAccessibleEventBroadcaster
142     virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
143     virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
144 
145     // XAccessibleText
146     virtual sal_Int32 SAL_CALL getCaretPosition(  ) throw (::com::sun::star::uno::RuntimeException);
147     virtual sal_Bool SAL_CALL setCaretPosition ( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
148     virtual sal_Unicode SAL_CALL getCharacter( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
149     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL getCharacterAttributes( sal_Int32 nIndex, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aRequestedAttributes ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
150     virtual ::com::sun::star::awt::Rectangle SAL_CALL getCharacterBounds( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
151     virtual sal_Int32 SAL_CALL getCharacterCount(  ) throw (::com::sun::star::uno::RuntimeException);
152     virtual sal_Int32 SAL_CALL getIndexAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
153     virtual ::rtl::OUString SAL_CALL getSelectedText(  ) throw (::com::sun::star::uno::RuntimeException);
154     virtual sal_Int32 SAL_CALL getSelectionStart(  ) throw (::com::sun::star::uno::RuntimeException);
155     virtual sal_Int32 SAL_CALL getSelectionEnd(  ) throw (::com::sun::star::uno::RuntimeException);
156     virtual sal_Bool SAL_CALL setSelection( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
157     virtual ::rtl::OUString SAL_CALL getText(  ) throw (::com::sun::star::uno::RuntimeException);
158     virtual ::rtl::OUString SAL_CALL getTextRange( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
159     virtual ::com::sun::star::accessibility::TextSegment SAL_CALL getTextAtIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
160     virtual ::com::sun::star::accessibility::TextSegment SAL_CALL getTextBeforeIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
161     virtual ::com::sun::star::accessibility::TextSegment SAL_CALL getTextBehindIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
162     virtual sal_Bool SAL_CALL copyText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
163 
164     // XServiceInfo
165     virtual ::rtl::OUString SAL_CALL getImplementationName(  ) throw (::com::sun::star::uno::RuntimeException);
166     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw (::com::sun::star::uno::RuntimeException);
167     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames(  ) throw (::com::sun::star::uno::RuntimeException);
168 };
169 
170 //////////////////////////////////////////////////////////////////////
171 //
172 // classes and helper-classes used for accessibility in the command-window
173 //
174 
175 class SmEditAccessible;
176 class SmEditSource;
177 class EditEngine;
178 class EditView;
179 class SvxFieldItem;
180 struct ESelection;
181 
182 
183 class SmViewForwarder :
184     public SvxViewForwarder
185 {
186     SmEditAccessible &          rEditAcc;
187 
188     // disallow copy-ctor and assignment-operator for now
189     SmViewForwarder( const SmViewForwarder & );
190     SmViewForwarder & operator = ( const SmViewForwarder & );
191 
192 public:
193                         SmViewForwarder( SmEditAccessible &rAcc );
194     virtual             ~SmViewForwarder();
195 
196     virtual sal_Bool        IsValid() const;
197     virtual Rectangle   GetVisArea() const;
198     virtual Point       LogicToPixel( const Point& rPoint, const MapMode& rMapMode ) const;
199     virtual Point       PixelToLogic( const Point& rPoint, const MapMode& rMapMode ) const;
200 };
201 
202 
203 class SmTextForwarder :     /* analog to SvxEditEngineForwarder */
204     public SvxTextForwarder
205 {
206 	SmEditAccessible &	rEditAcc;
207     SmEditSource &      rEditSource;
208 
209     DECL_LINK( NotifyHdl, EENotify * );
210 
211     // disallow copy-ctor and assignment-operator for now
212     SmTextForwarder( const SmTextForwarder & );
213     SmTextForwarder & operator = ( const SmTextForwarder & );
214 
215 public:
216     SmTextForwarder( SmEditAccessible& rAcc, SmEditSource & rSource );
217     virtual ~SmTextForwarder();
218 
219 	virtual sal_uInt16		GetParagraphCount() const;
220 	virtual sal_uInt16		GetTextLen( sal_uInt16 nParagraph ) const;
221 	virtual String		GetText( const ESelection& rSel ) const;
222 	virtual SfxItemSet	GetAttribs( const ESelection& rSel, sal_Bool bOnlyHardAttrib = EditEngineAttribs_All ) const;
223 	virtual	SfxItemSet	GetParaAttribs( sal_uInt16 nPara ) const;
224 	virtual void		SetParaAttribs( sal_uInt16 nPara, const SfxItemSet& rSet );
225     virtual void        RemoveAttribs( const ESelection& rSelection, sal_Bool bRemoveParaAttribs, sal_uInt16 nWhich );
226 	virtual void		GetPortions( sal_uInt16 nPara, SvUShorts& rList ) const;
227 
228 	virtual sal_uInt16		GetItemState( const ESelection& rSel, sal_uInt16 nWhich ) const;
229 	virtual sal_uInt16		GetItemState( sal_uInt16 nPara, sal_uInt16 nWhich ) const;
230 
231 	virtual void		QuickInsertText( const String& rText, const ESelection& rSel );
232 	virtual void		QuickInsertField( const SvxFieldItem& rFld, const ESelection& rSel );
233 	virtual void		QuickSetAttribs( const SfxItemSet& rSet, const ESelection& rSel );
234 	virtual void		QuickInsertLineBreak( const ESelection& rSel );
235 
236 	virtual SfxItemPool* GetPool() const;
237 
238 	virtual XubString    CalcFieldValue( const SvxFieldItem& rField, sal_uInt16 nPara, sal_uInt16 nPos, Color*& rpTxtColor, Color*& rpFldColor );
239 	virtual void 		FieldClicked(const SvxFieldItem&, sal_uInt16, sal_uInt16);
240 	virtual sal_Bool		 IsValid() const;
241 
242     virtual LanguageType 	GetLanguage( sal_uInt16, sal_uInt16 ) const;
243     virtual sal_uInt16			GetFieldCount( sal_uInt16 nPara ) const;
244     virtual EFieldInfo		GetFieldInfo( sal_uInt16 nPara, sal_uInt16 nField ) const;
245     virtual EBulletInfo     GetBulletInfo( sal_uInt16 nPara ) const;
246     virtual Rectangle		GetCharBounds( sal_uInt16 nPara, sal_uInt16 nIndex ) const;
247     virtual Rectangle		GetParaBounds( sal_uInt16 nPara ) const;
248     virtual MapMode			GetMapMode() const;
249 	virtual OutputDevice*	GetRefDevice() const;
250     virtual sal_Bool		GetIndexAtPoint( const Point&, sal_uInt16& nPara, sal_uInt16& nIndex ) const;
251     virtual sal_Bool		GetWordIndices( sal_uInt16 nPara, sal_uInt16 nIndex, sal_uInt16& nStart, sal_uInt16& nEnd ) const;
252     virtual sal_Bool 		GetAttributeRun( sal_uInt16& nStartIndex, sal_uInt16& nEndIndex, sal_uInt16 nPara, sal_uInt16 nIndex ) const;
253     virtual sal_uInt16			GetLineCount( sal_uInt16 nPara ) const;
254     virtual sal_uInt16			GetLineLen( sal_uInt16 nPara, sal_uInt16 nLine ) const;
255     virtual void            GetLineBoundaries( /*out*/sal_uInt16 &rStart, /*out*/sal_uInt16 &rEnd, sal_uInt16 nParagraph, sal_uInt16 nLine ) const;
256     virtual sal_uInt16          GetLineNumberAtIndex( sal_uInt16 nPara, sal_uInt16 nLine ) const;
257     virtual sal_Bool		Delete( const ESelection& );
258     virtual sal_Bool		InsertText( const String&, const ESelection& );
259     virtual sal_Bool		QuickFormatDoc( sal_Bool bFull=sal_False );
260 
261     virtual sal_Int16       GetDepth( sal_uInt16 nPara ) const;
262     virtual sal_Bool        SetDepth( sal_uInt16 nPara, sal_Int16 nNewDepth );
263 
264     virtual const SfxItemSet*   GetEmptyItemSetPtr();
265     // implementation functions for XParagraphAppend and XTextPortionAppend
266     virtual void        AppendParagraph();
267     virtual xub_StrLen  AppendTextPortion( sal_uInt16 nPara, const String &rText, const SfxItemSet &rSet );
268 
269     virtual void        CopyText(const SvxTextForwarder& rSource);
270 };
271 
272 
273 class SmEditViewForwarder :     /* analog to SvxEditEngineViewForwarder */
274     public SvxEditViewForwarder
275 {
276     SmEditAccessible&		rEditAcc;
277 
278     // disallow copy-ctor and assignment-operator for now
279     SmEditViewForwarder( const SmEditViewForwarder & );
280     SmEditViewForwarder & operator = ( const SmEditViewForwarder & );
281 
282 public:
283                         SmEditViewForwarder( SmEditAccessible& rAcc );
284     virtual             ~SmEditViewForwarder();
285 
286 	virtual sal_Bool		IsValid() const;
287 
288     virtual Rectangle	GetVisArea() const;
289     virtual Point		LogicToPixel( const Point& rPoint, const MapMode& rMapMode ) const;
290     virtual Point		PixelToLogic( const Point& rPoint, const MapMode& rMapMode ) const;
291 
292     virtual sal_Bool	GetSelection( ESelection& rSelection ) const;
293     virtual sal_Bool	SetSelection( const ESelection& rSelection );
294     virtual sal_Bool	Copy();
295     virtual sal_Bool	Cut();
296     virtual sal_Bool	Paste();
297 };
298 
299 
300 class SmEditSource :
301     public SvxEditSource
302 {
303     SfxBroadcaster          aBroadCaster;
304     SmViewForwarder         aViewFwd;
305     SmTextForwarder         aTextFwd;
306     SmEditViewForwarder     aEditViewFwd;
307 
308 	SmEditAccessible&		rEditAcc;
309 
310     // disallow copy-ctor and assignment-operator for now
311     SmEditSource( const SmEditSource &rSrc );
312     SmEditSource & operator = ( const SmEditSource & );
313 
314 public:
315             SmEditSource( SmEditWindow *pWin, SmEditAccessible &rAcc );
316     virtual ~SmEditSource();
317 
318     virtual SvxEditSource*      Clone() const;
319     virtual SvxTextForwarder*   GetTextForwarder();
320  	virtual SvxViewForwarder*	GetViewForwarder();
321  	virtual SvxEditViewForwarder*	GetEditViewForwarder( sal_Bool bCreate = sal_False );
322     virtual void                UpdateData();
323     virtual SfxBroadcaster&		GetBroadcaster() const;
324 };
325 
326 
327 
328 
329 typedef
330 cppu::WeakImplHelper5
331     <
332         com::sun::star::lang::XServiceInfo,
333         com::sun::star::accessibility::XAccessible,
334         com::sun::star::accessibility::XAccessibleComponent,
335         com::sun::star::accessibility::XAccessibleContext,
336         com::sun::star::accessibility::XAccessibleEventBroadcaster
337     >
338 SmEditAccessibleBaseClass;
339 
340 class SmEditAccessible :
341     public SmEditAccessibleBaseClass
342 {
343     osl::Mutex                              aListenerMutex;
344     String                                  aAccName;
345     ::accessibility::AccessibleTextHelper    *pTextHelper;
346     SmEditWindow                           *pWin;
347 
348     // disallow copy-ctor and assignment-operator for now
349     SmEditAccessible( const SmEditAccessible & );
350     SmEditAccessible & operator = ( const SmEditAccessible & );
351 
352 protected:
353 #ifdef TL_NOT_YET_USED
354     SmDocShell *    GetDoc_Impl();
355 #endif //TL_NOT_YET_USED
356 
357 public:
358     SmEditAccessible( SmEditWindow *pEditWin );
359     virtual ~SmEditAccessible();
360 
361     ::accessibility::AccessibleTextHelper *   GetTextHelper() { return pTextHelper; }
362 
363     void                Init();
364     SmEditWindow *      GetWin()    { return pWin; }
365     void                ClearWin();     // to be called when view is destroyed
366 
367 	//! access EditEngine and EditView via the functions in the respective window
368 	//! pointers may be 0 (e.g. during reload)
369 	EditEngine * GetEditEngine()	{ return pWin ? pWin->GetEditEngine() : 0; }
370     EditView   * GetEditView()		{ return pWin ? pWin->GetEditView() : 0; }
371 
372     // XAccessible
373     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext(  ) throw (::com::sun::star::uno::RuntimeException);
374 
375     // XAccessibleComponent
376     virtual sal_Bool SAL_CALL containsPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
377     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
378     virtual ::com::sun::star::awt::Rectangle SAL_CALL getBounds(  ) throw (::com::sun::star::uno::RuntimeException);
379     virtual ::com::sun::star::awt::Point SAL_CALL getLocation(  ) throw (::com::sun::star::uno::RuntimeException);
380     virtual ::com::sun::star::awt::Point SAL_CALL getLocationOnScreen(  ) throw (::com::sun::star::uno::RuntimeException);
381     virtual ::com::sun::star::awt::Size SAL_CALL getSize(  ) throw (::com::sun::star::uno::RuntimeException);
382     virtual void SAL_CALL grabFocus(  ) throw (::com::sun::star::uno::RuntimeException);
383     virtual sal_Int32 SAL_CALL getForeground(  ) throw (::com::sun::star::uno::RuntimeException);
384     virtual sal_Int32 SAL_CALL getBackground(  ) throw (::com::sun::star::uno::RuntimeException);
385 
386     // XAccessibleContext
387     virtual sal_Int32 SAL_CALL getAccessibleChildCount(  ) throw (::com::sun::star::uno::RuntimeException);
388     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
389     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleParent(  ) throw (::com::sun::star::uno::RuntimeException);
390     virtual sal_Int32 SAL_CALL getAccessibleIndexInParent(  ) throw (::com::sun::star::uno::RuntimeException);
391     virtual sal_Int16 SAL_CALL getAccessibleRole(  ) throw (::com::sun::star::uno::RuntimeException);
392     virtual ::rtl::OUString SAL_CALL getAccessibleDescription(  ) throw (::com::sun::star::uno::RuntimeException);
393     virtual ::rtl::OUString SAL_CALL getAccessibleName(  ) throw (::com::sun::star::uno::RuntimeException);
394     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet(  ) throw (::com::sun::star::uno::RuntimeException);
395     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet(  ) throw (::com::sun::star::uno::RuntimeException);
396     virtual ::com::sun::star::lang::Locale SAL_CALL getLocale(  ) throw (::com::sun::star::accessibility::IllegalAccessibleComponentStateException, ::com::sun::star::uno::RuntimeException);
397 
398     // XAccessibleEventBroadcaster
399     virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
400     virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
401 
402     // XServiceInfo
403     virtual ::rtl::OUString SAL_CALL getImplementationName(  ) throw (::com::sun::star::uno::RuntimeException);
404     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw (::com::sun::star::uno::RuntimeException);
405     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames(  ) throw (::com::sun::star::uno::RuntimeException);
406 };
407 
408 //////////////////////////////////////////////////////////////////////
409 
410 #endif
411 
412