xref: /aoo4110/main/sw/source/core/access/accpara.hxx (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski #ifndef _ACCPARA_HXX
24*b1cdbd2cSJim Jagielski #define _ACCPARA_HXX
25*b1cdbd2cSJim Jagielski 
26*b1cdbd2cSJim Jagielski #include <acccontext.hxx>
27*b1cdbd2cSJim Jagielski #include <com/sun/star/accessibility/XAccessibleEditableText.hpp>
28*b1cdbd2cSJim Jagielski #include <com/sun/star/accessibility/XAccessibleSelection.hpp>
29*b1cdbd2cSJim Jagielski #include <com/sun/star/accessibility/XAccessibleHypertext.hpp>
30*b1cdbd2cSJim Jagielski #include <com/sun/star/accessibility/XAccessibleTextMarkup.hpp>
31*b1cdbd2cSJim Jagielski #include <com/sun/star/accessibility/XAccessibleMultiLineText.hpp>
32*b1cdbd2cSJim Jagielski #include <com/sun/star/accessibility/XAccessibleTextSelection.hpp>
33*b1cdbd2cSJim Jagielski #include <txmsrt.hxx>
34*b1cdbd2cSJim Jagielski #include <com/sun/star/accessibility/XAccessibleExtendedAttributes.hpp>
35*b1cdbd2cSJim Jagielski #include <com/sun/star/accessibility/XAccessibleTextAttributes.hpp>
36*b1cdbd2cSJim Jagielski #include <hash_map>
37*b1cdbd2cSJim Jagielski #include <accselectionhelper.hxx>
38*b1cdbd2cSJim Jagielski // --> OD 2010-02-19 #i108125#
39*b1cdbd2cSJim Jagielski #include <calbck.hxx>
40*b1cdbd2cSJim Jagielski // <--
41*b1cdbd2cSJim Jagielski 
42*b1cdbd2cSJim Jagielski class SwField;
43*b1cdbd2cSJim Jagielski class SwTxtFrm;
44*b1cdbd2cSJim Jagielski class SwTxtNode;
45*b1cdbd2cSJim Jagielski class SwPaM;
46*b1cdbd2cSJim Jagielski class SwAccessiblePortionData;
47*b1cdbd2cSJim Jagielski class SwAccessibleHyperTextData;
48*b1cdbd2cSJim Jagielski class SwRedline;
49*b1cdbd2cSJim Jagielski class SwXTextPortion;
50*b1cdbd2cSJim Jagielski // --> OD 2010-02-19 #i108125#
51*b1cdbd2cSJim Jagielski class SwParaChangeTrackingInfo;
52*b1cdbd2cSJim Jagielski // <--
53*b1cdbd2cSJim Jagielski 
54*b1cdbd2cSJim Jagielski namespace rtl { class OUString; }
55*b1cdbd2cSJim Jagielski namespace com { namespace sun { namespace star {
56*b1cdbd2cSJim Jagielski     namespace i18n { struct Boundary; }
57*b1cdbd2cSJim Jagielski     namespace accessibility { class XAccessibleHyperlink; }
58*b1cdbd2cSJim Jagielski     namespace style { struct TabStop; }
59*b1cdbd2cSJim Jagielski } } }
60*b1cdbd2cSJim Jagielski 
61*b1cdbd2cSJim Jagielski typedef ::std::hash_map< ::rtl::OUString,
62*b1cdbd2cSJim Jagielski                          ::com::sun::star::beans::PropertyValue,
63*b1cdbd2cSJim Jagielski                          ::rtl::OUStringHash,
64*b1cdbd2cSJim Jagielski                          ::std::equal_to< ::rtl::OUString > > tAccParaPropValMap;
65*b1cdbd2cSJim Jagielski 
66*b1cdbd2cSJim Jagielski class SwAccessibleParagraph :
67*b1cdbd2cSJim Jagielski         // --> OD 2010-02-19 #i108125#
68*b1cdbd2cSJim Jagielski         public SwClient,
69*b1cdbd2cSJim Jagielski         // <--
70*b1cdbd2cSJim Jagielski         public SwAccessibleContext,
71*b1cdbd2cSJim Jagielski 		public ::com::sun::star::accessibility::XAccessibleEditableText,
72*b1cdbd2cSJim Jagielski 	    public com::sun::star::accessibility::XAccessibleSelection,
73*b1cdbd2cSJim Jagielski         public com::sun::star::accessibility::XAccessibleHypertext,
74*b1cdbd2cSJim Jagielski         public com::sun::star::accessibility::XAccessibleTextMarkup,
75*b1cdbd2cSJim Jagielski         public com::sun::star::accessibility::XAccessibleMultiLineText,
76*b1cdbd2cSJim Jagielski         public ::com::sun::star::accessibility::XAccessibleTextAttributes,
77*b1cdbd2cSJim Jagielski 		public com::sun::star::accessibility::XAccessibleTextSelection,
78*b1cdbd2cSJim Jagielski 		public  com::sun::star::accessibility::XAccessibleExtendedAttributes
79*b1cdbd2cSJim Jagielski {
80*b1cdbd2cSJim Jagielski 	friend class SwAccessibleHyperlink;
81*b1cdbd2cSJim Jagielski 
82*b1cdbd2cSJim Jagielski 	::rtl::OUString sDesc;	// protected by base classes mutex
83*b1cdbd2cSJim Jagielski 
84*b1cdbd2cSJim Jagielski     /// data for this paragraph's text portions; this contains the
85*b1cdbd2cSJim Jagielski     /// mapping from the core 'model string' to the accessible text
86*b1cdbd2cSJim Jagielski     /// string.
87*b1cdbd2cSJim Jagielski     /// pPortionData may be NULL; it should only be accessed through the
88*b1cdbd2cSJim Jagielski     /// Get/Clear/Has/UpdatePortionData() methods
89*b1cdbd2cSJim Jagielski     SwAccessiblePortionData* pPortionData;
90*b1cdbd2cSJim Jagielski 	SwAccessibleHyperTextData *pHyperTextData;
91*b1cdbd2cSJim Jagielski 
92*b1cdbd2cSJim Jagielski 	sal_Int32 nOldCaretPos;	// The 'old' caret pos. It's only valid as long
93*b1cdbd2cSJim Jagielski 							// as the cursor is inside this object (protected by
94*b1cdbd2cSJim Jagielski 							// mutex)
95*b1cdbd2cSJim Jagielski 
96*b1cdbd2cSJim Jagielski 	sal_Bool bIsHeading;	// protected by base classes mutex
97*b1cdbd2cSJim Jagielski 	sal_Int32 nHeadingLevel;
98*b1cdbd2cSJim Jagielski 
99*b1cdbd2cSJim Jagielski     // implementation for XAccessibleSelection
100*b1cdbd2cSJim Jagielski     SwAccessibleSelectionHelper aSelectionHelper;
101*b1cdbd2cSJim Jagielski 
102*b1cdbd2cSJim Jagielski     // --> OD 2010-02-19 #i108125#
103*b1cdbd2cSJim Jagielski     SwParaChangeTrackingInfo* mpParaChangeTrackInfo;
104*b1cdbd2cSJim Jagielski     // <--
105*b1cdbd2cSJim Jagielski 
106*b1cdbd2cSJim Jagielski     /// get the SwTxtNode (requires frame; check before)
107*b1cdbd2cSJim Jagielski     const SwTxtNode* GetTxtNode() const;
108*b1cdbd2cSJim Jagielski 
109*b1cdbd2cSJim Jagielski     /// get the (accessible) text string (requires frame; check before)
110*b1cdbd2cSJim Jagielski     ::rtl::OUString GetString();
111*b1cdbd2cSJim Jagielski 
112*b1cdbd2cSJim Jagielski 	::rtl::OUString GetDescription();
113*b1cdbd2cSJim Jagielski 
114*b1cdbd2cSJim Jagielski 	// get the current care position
115*b1cdbd2cSJim Jagielski 	sal_Int32 GetCaretPos();
116*b1cdbd2cSJim Jagielski 
117*b1cdbd2cSJim Jagielski     /// determine the current selection. Fill the values with
118*b1cdbd2cSJim Jagielski     /// -1 if there is no selection in the this paragraph
119*b1cdbd2cSJim Jagielski     sal_Bool GetSelection(sal_Int32& nStart, sal_Int32& nEnd);
120*b1cdbd2cSJim Jagielski 
121*b1cdbd2cSJim Jagielski     // helper for GetSelection and getCaretPosition
122*b1cdbd2cSJim Jagielski     // --> OD 2005-12-20 #i27301#
123*b1cdbd2cSJim Jagielski     // - add parameter <_bForSelection>, which indicates, if the cursor is
124*b1cdbd2cSJim Jagielski     //   retrieved for selection or for caret position.
125*b1cdbd2cSJim Jagielski     SwPaM* GetCursor( const bool _bForSelection );
126*b1cdbd2cSJim Jagielski 
127*b1cdbd2cSJim Jagielski     /// for cut/copy/paste: execute a particular slot at the view shell
128*b1cdbd2cSJim Jagielski     void ExecuteAtViewShell( sal_uInt16 nSlot );
129*b1cdbd2cSJim Jagielski 
130*b1cdbd2cSJim Jagielski     /// helper method for get/setAttributes
131*b1cdbd2cSJim Jagielski     /// (for the special case of (nEndIndex==-1) a single character will
132*b1cdbd2cSJim Jagielski     ///  be selected)
133*b1cdbd2cSJim Jagielski     SwXTextPortion* CreateUnoPortion( sal_Int32 nStart, sal_Int32 nEnd );
134*b1cdbd2cSJim Jagielski 
135*b1cdbd2cSJim Jagielski 
136*b1cdbd2cSJim Jagielski     // methods for checking the parameter range:
137*b1cdbd2cSJim Jagielski 
138*b1cdbd2cSJim Jagielski     /// does nPos point to a char?
139*b1cdbd2cSJim Jagielski     sal_Bool IsValidChar(sal_Int32 nPos, sal_Int32 nLength);
140*b1cdbd2cSJim Jagielski 
141*b1cdbd2cSJim Jagielski     /// does nPos point to a position? (may be behind the last character)
142*b1cdbd2cSJim Jagielski     sal_Bool IsValidPosition(sal_Int32 nPos, sal_Int32 nLength);
143*b1cdbd2cSJim Jagielski 
144*b1cdbd2cSJim Jagielski     /// is nBegin...nEnd a valid range? (nEnd points past the last character)
145*b1cdbd2cSJim Jagielski     sal_Bool IsValidRange(sal_Int32 nBegin, sal_Int32 nEnd, sal_Int32 nLength);
146*b1cdbd2cSJim Jagielski 
147*b1cdbd2cSJim Jagielski     /// Ensure ordered range (i.e. nBegin is smaller then nEnd)
OrderRange(sal_Int32 & nBegin,sal_Int32 & nEnd)148*b1cdbd2cSJim Jagielski     inline void OrderRange(sal_Int32& nBegin, sal_Int32& nEnd)
149*b1cdbd2cSJim Jagielski     {
150*b1cdbd2cSJim Jagielski         if( nBegin > nEnd )
151*b1cdbd2cSJim Jagielski         {
152*b1cdbd2cSJim Jagielski             sal_Int32 nTmp = nBegin; nBegin = nEnd; nEnd = nTmp;
153*b1cdbd2cSJim Jagielski         }
154*b1cdbd2cSJim Jagielski     }
155*b1cdbd2cSJim Jagielski 
156*b1cdbd2cSJim Jagielski     const SwRedline* GetRedlineAtIndex( sal_Int32 nPos );
157*b1cdbd2cSJim Jagielski 	String GetFieldTypeNameAtIndex(sal_Int32 nIndex);
158*b1cdbd2cSJim Jagielski     // --> OD 2006-07-13 #i63870#
159*b1cdbd2cSJim Jagielski     void _getDefaultAttributesImpl(
160*b1cdbd2cSJim Jagielski             const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aRequestedAttributes,
161*b1cdbd2cSJim Jagielski             tAccParaPropValMap& rDefAttrSeq,
162*b1cdbd2cSJim Jagielski             const bool bOnlyCharAttrs = false );
163*b1cdbd2cSJim Jagielski     void _getRunAttributesImpl(
164*b1cdbd2cSJim Jagielski             const sal_Int32 nIndex,
165*b1cdbd2cSJim Jagielski             const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aRequestedAttributes,
166*b1cdbd2cSJim Jagielski             tAccParaPropValMap& rRunAttrSeq );
167*b1cdbd2cSJim Jagielski     // <--
168*b1cdbd2cSJim Jagielski 	void _getSupplementalAttributesImpl(
169*b1cdbd2cSJim Jagielski 			const sal_Int32 nIndex,
170*b1cdbd2cSJim Jagielski             const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aRequestedAttributes,
171*b1cdbd2cSJim Jagielski             tAccParaPropValMap& rSupplementalAttrSeq );
172*b1cdbd2cSJim Jagielski 
173*b1cdbd2cSJim Jagielski 	void _correctValues(
174*b1cdbd2cSJim Jagielski 			const sal_Int32 nIndex,
175*b1cdbd2cSJim Jagielski 			::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& rValues );
176*b1cdbd2cSJim Jagielski 
177*b1cdbd2cSJim Jagielski public:
178*b1cdbd2cSJim Jagielski 	SwTOXSortTabBase* GetTOXSortTabBase();
179*b1cdbd2cSJim Jagielski 	short GetTOCLevel();
180*b1cdbd2cSJim Jagielski 	sal_Bool IsHeading() const;
181*b1cdbd2cSJim Jagielski 
182*b1cdbd2cSJim Jagielski protected:
183*b1cdbd2cSJim Jagielski 
184*b1cdbd2cSJim Jagielski 	// Set states for getAccessibleStateSet.
185*b1cdbd2cSJim Jagielski 	// This drived class additinaly sets MULTILINE(1), MULTISELECTABLE(+),
186*b1cdbd2cSJim Jagielski 	// FOCUSABLE(+) and FOCUSED(+)
187*b1cdbd2cSJim Jagielski 	virtual void GetStates( ::utl::AccessibleStateSetHelper& rStateSet );
188*b1cdbd2cSJim Jagielski 
189*b1cdbd2cSJim Jagielski 	virtual void _InvalidateContent( sal_Bool bVisibleDataFired );
190*b1cdbd2cSJim Jagielski 
191*b1cdbd2cSJim Jagielski 	virtual void _InvalidateCursorPos();
192*b1cdbd2cSJim Jagielski 	virtual void _InvalidateFocus();
193*b1cdbd2cSJim Jagielski 
194*b1cdbd2cSJim Jagielski 	virtual ~SwAccessibleParagraph();
195*b1cdbd2cSJim Jagielski 
196*b1cdbd2cSJim Jagielski 	//=====  handling of data for the text portions ===========================
197*b1cdbd2cSJim Jagielski 
198*b1cdbd2cSJim Jagielski     /// force update of new portion data
199*b1cdbd2cSJim Jagielski     void UpdatePortionData()
200*b1cdbd2cSJim Jagielski         throw( com::sun::star::uno::RuntimeException );
201*b1cdbd2cSJim Jagielski 
202*b1cdbd2cSJim Jagielski     /// remove the current portion data
203*b1cdbd2cSJim Jagielski     void ClearPortionData();
204*b1cdbd2cSJim Jagielski 
205*b1cdbd2cSJim Jagielski     /// get portion data; update if necesary
GetPortionData()206*b1cdbd2cSJim Jagielski     SwAccessiblePortionData& GetPortionData()
207*b1cdbd2cSJim Jagielski         throw( com::sun::star::uno::RuntimeException )
208*b1cdbd2cSJim Jagielski     {
209*b1cdbd2cSJim Jagielski         if( pPortionData == NULL )
210*b1cdbd2cSJim Jagielski             UpdatePortionData();
211*b1cdbd2cSJim Jagielski         return *pPortionData;
212*b1cdbd2cSJim Jagielski     }
213*b1cdbd2cSJim Jagielski 
214*b1cdbd2cSJim Jagielski     /// determine if portion data is currently available
HasPortionData()215*b1cdbd2cSJim Jagielski     sal_Bool HasPortionData()   { return (pPortionData != NULL); }
216*b1cdbd2cSJim Jagielski 
217*b1cdbd2cSJim Jagielski 
218*b1cdbd2cSJim Jagielski 	//=====  helpers for word boundaries  ====================================
219*b1cdbd2cSJim Jagielski 
220*b1cdbd2cSJim Jagielski     sal_Bool GetCharBoundary( com::sun::star::i18n::Boundary& rBound,
221*b1cdbd2cSJim Jagielski                               const rtl::OUString& rText,
222*b1cdbd2cSJim Jagielski                               sal_Int32 nPos );
223*b1cdbd2cSJim Jagielski     sal_Bool GetWordBoundary( com::sun::star::i18n::Boundary& rBound,
224*b1cdbd2cSJim Jagielski                               const rtl::OUString& rText,
225*b1cdbd2cSJim Jagielski                               sal_Int32 nPos );
226*b1cdbd2cSJim Jagielski     sal_Bool GetSentenceBoundary( com::sun::star::i18n::Boundary& rBound,
227*b1cdbd2cSJim Jagielski                                   const rtl::OUString& rText,
228*b1cdbd2cSJim Jagielski                                   sal_Int32 nPos );
229*b1cdbd2cSJim Jagielski     sal_Bool GetLineBoundary( com::sun::star::i18n::Boundary& rBound,
230*b1cdbd2cSJim Jagielski                               const rtl::OUString& rText,
231*b1cdbd2cSJim Jagielski                               sal_Int32 nPos );
232*b1cdbd2cSJim Jagielski     sal_Bool GetParagraphBoundary( com::sun::star::i18n::Boundary& rBound,
233*b1cdbd2cSJim Jagielski                                    const rtl::OUString& rText,
234*b1cdbd2cSJim Jagielski                                    sal_Int32 nPos );
235*b1cdbd2cSJim Jagielski     sal_Bool GetAttributeBoundary( com::sun::star::i18n::Boundary& rBound,
236*b1cdbd2cSJim Jagielski                                    const rtl::OUString& rText,
237*b1cdbd2cSJim Jagielski                                    sal_Int32 nPos );
238*b1cdbd2cSJim Jagielski     sal_Bool GetGlyphBoundary( com::sun::star::i18n::Boundary& rBound,
239*b1cdbd2cSJim Jagielski                                const rtl::OUString& rText,
240*b1cdbd2cSJim Jagielski                                sal_Int32 nPos );
241*b1cdbd2cSJim Jagielski 
242*b1cdbd2cSJim Jagielski     /// get boundaries of word/sentence/etc. for specified text type
243*b1cdbd2cSJim Jagielski     /// Does all argument checking, and then delegates to helper methods above.
244*b1cdbd2cSJim Jagielski     sal_Bool GetTextBoundary( com::sun::star::i18n::Boundary& rBound,
245*b1cdbd2cSJim Jagielski                               const rtl::OUString& rText,
246*b1cdbd2cSJim Jagielski                               sal_Int32 nPos,
247*b1cdbd2cSJim Jagielski                               sal_Int16 aTextType )
248*b1cdbd2cSJim Jagielski         throw (
249*b1cdbd2cSJim Jagielski             ::com::sun::star::lang::IndexOutOfBoundsException,
250*b1cdbd2cSJim Jagielski             ::com::sun::star::lang::IllegalArgumentException,
251*b1cdbd2cSJim Jagielski             ::com::sun::star::uno::RuntimeException);
252*b1cdbd2cSJim Jagielski 
253*b1cdbd2cSJim Jagielski     virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew);
254*b1cdbd2cSJim Jagielski 
255*b1cdbd2cSJim Jagielski public:
256*b1cdbd2cSJim Jagielski 
257*b1cdbd2cSJim Jagielski     SwAccessibleParagraph( SwAccessibleMap& rInitMap,
258*b1cdbd2cSJim Jagielski                            const SwTxtFrm& rTxtFrm );
259*b1cdbd2cSJim Jagielski 
260*b1cdbd2cSJim Jagielski 	inline operator ::com::sun::star::accessibility::XAccessibleText *();
261*b1cdbd2cSJim Jagielski 
262*b1cdbd2cSJim Jagielski 	virtual sal_Bool HasCursor();	// required by map to remember that object
263*b1cdbd2cSJim Jagielski 
264*b1cdbd2cSJim Jagielski 	com::sun::star::uno::Sequence< ::com::sun::star::style::TabStop > GetCurrentTabStop( sal_Int32 nIndex  );
265*b1cdbd2cSJim Jagielski 	virtual sal_Int16 SAL_CALL getAccessibleRole (void)     throw (::com::sun::star::uno::RuntimeException);
266*b1cdbd2cSJim Jagielski     // --> OD 2010-02-19 #i108125#
267*b1cdbd2cSJim Jagielski     // MT: Solved merge conflict - seems this was removed between 101 and 103?
268*b1cdbd2cSJim Jagielski     // virtual void Modify( SfxPoolItem* pOld, SfxPoolItem* pNew);
269*b1cdbd2cSJim Jagielski     // <--
270*b1cdbd2cSJim Jagielski 
271*b1cdbd2cSJim Jagielski     //=====  XAccessibleContext  ==============================================
272*b1cdbd2cSJim Jagielski 
273*b1cdbd2cSJim Jagielski     ///	Return this object's description.
274*b1cdbd2cSJim Jagielski 	virtual ::rtl::OUString SAL_CALL
275*b1cdbd2cSJim Jagielski     	getAccessibleDescription (void)
276*b1cdbd2cSJim Jagielski         throw (com::sun::star::uno::RuntimeException);
277*b1cdbd2cSJim Jagielski 
278*b1cdbd2cSJim Jagielski 	/**	Return the parents locale or throw exception if this object has no
279*b1cdbd2cSJim Jagielski     	parent yet/anymore.
280*b1cdbd2cSJim Jagielski     */
281*b1cdbd2cSJim Jagielski 	virtual ::com::sun::star::lang::Locale SAL_CALL
282*b1cdbd2cSJim Jagielski     	getLocale (void)
283*b1cdbd2cSJim Jagielski 		throw (::com::sun::star::accessibility::IllegalAccessibleComponentStateException, ::com::sun::star::uno::RuntimeException);
284*b1cdbd2cSJim Jagielski 
285*b1cdbd2cSJim Jagielski     /** paragraphs are in relation CONTENT_FLOWS_FROM and/or CONTENT_FLOWS_TO
286*b1cdbd2cSJim Jagielski 
287*b1cdbd2cSJim Jagielski         OD 2005-12-02 #i27138#
288*b1cdbd2cSJim Jagielski 
289*b1cdbd2cSJim Jagielski         @author OD
290*b1cdbd2cSJim Jagielski     */
291*b1cdbd2cSJim Jagielski     virtual ::com::sun::star::uno::Reference<
292*b1cdbd2cSJim Jagielski             ::com::sun::star::accessibility::XAccessibleRelationSet> SAL_CALL
293*b1cdbd2cSJim Jagielski         getAccessibleRelationSet (void)
294*b1cdbd2cSJim Jagielski         throw (::com::sun::star::uno::RuntimeException);
295*b1cdbd2cSJim Jagielski 
296*b1cdbd2cSJim Jagielski 	//=====  XAccessibleComponent  ============================================
297*b1cdbd2cSJim Jagielski 
298*b1cdbd2cSJim Jagielski     virtual void SAL_CALL grabFocus()
299*b1cdbd2cSJim Jagielski 		throw (::com::sun::star::uno::RuntimeException);
300*b1cdbd2cSJim Jagielski     // --> OD 2007-01-17 #i71385#
301*b1cdbd2cSJim Jagielski     virtual sal_Int32 SAL_CALL getForeground()
302*b1cdbd2cSJim Jagielski         throw (::com::sun::star::uno::RuntimeException);
303*b1cdbd2cSJim Jagielski     virtual sal_Int32 SAL_CALL getBackground()
304*b1cdbd2cSJim Jagielski         throw (::com::sun::star::uno::RuntimeException);
305*b1cdbd2cSJim Jagielski     // <--
306*b1cdbd2cSJim Jagielski 
307*b1cdbd2cSJim Jagielski 	//=====  XServiceInfo  ====================================================
308*b1cdbd2cSJim Jagielski 
309*b1cdbd2cSJim Jagielski     /**	Returns an identifier for the implementation of this object.
310*b1cdbd2cSJim Jagielski     */
311*b1cdbd2cSJim Jagielski 	virtual ::rtl::OUString SAL_CALL
312*b1cdbd2cSJim Jagielski     	getImplementationName (void)
313*b1cdbd2cSJim Jagielski         throw (::com::sun::star::uno::RuntimeException);
314*b1cdbd2cSJim Jagielski 
315*b1cdbd2cSJim Jagielski     /**	Return whether the specified service is supported by this class.
316*b1cdbd2cSJim Jagielski     */
317*b1cdbd2cSJim Jagielski     virtual sal_Bool SAL_CALL
318*b1cdbd2cSJim Jagielski     	supportsService (const ::rtl::OUString& sServiceName)
319*b1cdbd2cSJim Jagielski         throw (::com::sun::star::uno::RuntimeException);
320*b1cdbd2cSJim Jagielski 
321*b1cdbd2cSJim Jagielski     /** Returns a list of all supported services.  In this case that is just
322*b1cdbd2cSJim Jagielski     	the AccessibleContext service.
323*b1cdbd2cSJim Jagielski     */
324*b1cdbd2cSJim Jagielski 	virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL
325*b1cdbd2cSJim Jagielski     	getSupportedServiceNames (void)
326*b1cdbd2cSJim Jagielski         throw (::com::sun::star::uno::RuntimeException);
327*b1cdbd2cSJim Jagielski 
328*b1cdbd2cSJim Jagielski 
329*b1cdbd2cSJim Jagielski 	//=====  XInterface  ======================================================
330*b1cdbd2cSJim Jagielski 
331*b1cdbd2cSJim Jagielski     // (XInterface methods need to be implemented to disambiguate
332*b1cdbd2cSJim Jagielski     // between those inherited through SwAcessibleContext and
333*b1cdbd2cSJim Jagielski     // XAccessibleEditableText).
334*b1cdbd2cSJim Jagielski 
335*b1cdbd2cSJim Jagielski     virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(
336*b1cdbd2cSJim Jagielski         const ::com::sun::star::uno::Type& aType )
337*b1cdbd2cSJim Jagielski         throw (::com::sun::star::uno::RuntimeException);
338*b1cdbd2cSJim Jagielski 
acquire()339*b1cdbd2cSJim Jagielski     virtual void SAL_CALL acquire(  ) throw ()
340*b1cdbd2cSJim Jagielski         { SwAccessibleContext::acquire(); };
341*b1cdbd2cSJim Jagielski 
release()342*b1cdbd2cSJim Jagielski     virtual void SAL_CALL release(  ) throw ()
343*b1cdbd2cSJim Jagielski         { SwAccessibleContext::release(); };
344*b1cdbd2cSJim Jagielski 
345*b1cdbd2cSJim Jagielski 	//====== XTypeProvider ====================================================
346*b1cdbd2cSJim Jagielski 	virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes(  ) throw(::com::sun::star::uno::RuntimeException);
347*b1cdbd2cSJim Jagielski     virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId(  ) throw(::com::sun::star::uno::RuntimeException);
348*b1cdbd2cSJim Jagielski 
349*b1cdbd2cSJim Jagielski 	//=====  XAccesibleText  ==================================================
350*b1cdbd2cSJim Jagielski     virtual sal_Int32 SAL_CALL getCaretPosition(  ) throw (::com::sun::star::uno::RuntimeException);
351*b1cdbd2cSJim Jagielski     virtual sal_Bool SAL_CALL setCaretPosition( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
352*b1cdbd2cSJim Jagielski     virtual sal_Unicode SAL_CALL getCharacter( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
353*b1cdbd2cSJim Jagielski     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);
354*b1cdbd2cSJim Jagielski     virtual ::com::sun::star::awt::Rectangle SAL_CALL getCharacterBounds( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
355*b1cdbd2cSJim Jagielski     virtual sal_Int32 SAL_CALL getCharacterCount(  ) throw (::com::sun::star::uno::RuntimeException);
356*b1cdbd2cSJim Jagielski     virtual sal_Int32 SAL_CALL getIndexAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
357*b1cdbd2cSJim Jagielski     virtual ::rtl::OUString SAL_CALL getSelectedText(  ) throw (::com::sun::star::uno::RuntimeException);
358*b1cdbd2cSJim Jagielski     virtual sal_Int32 SAL_CALL getSelectionStart(  ) throw (::com::sun::star::uno::RuntimeException);
359*b1cdbd2cSJim Jagielski     virtual sal_Int32 SAL_CALL getSelectionEnd(  ) throw (::com::sun::star::uno::RuntimeException);
360*b1cdbd2cSJim Jagielski     virtual sal_Bool SAL_CALL setSelection( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
361*b1cdbd2cSJim Jagielski     virtual ::rtl::OUString SAL_CALL getText(  ) throw (::com::sun::star::uno::RuntimeException);
362*b1cdbd2cSJim Jagielski     virtual ::rtl::OUString SAL_CALL getTextRange( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
363*b1cdbd2cSJim Jagielski     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);
364*b1cdbd2cSJim Jagielski     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);
365*b1cdbd2cSJim Jagielski     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);
366*b1cdbd2cSJim Jagielski     virtual sal_Bool SAL_CALL copyText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
367*b1cdbd2cSJim Jagielski 
368*b1cdbd2cSJim Jagielski 	//=====  XAccesibleEditableText  ==========================================
369*b1cdbd2cSJim Jagielski     virtual sal_Bool SAL_CALL cutText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
370*b1cdbd2cSJim Jagielski     virtual sal_Bool SAL_CALL pasteText( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
371*b1cdbd2cSJim Jagielski     virtual sal_Bool SAL_CALL deleteText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
372*b1cdbd2cSJim Jagielski     virtual sal_Bool SAL_CALL insertText( const ::rtl::OUString& sText, sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
373*b1cdbd2cSJim Jagielski     virtual sal_Bool SAL_CALL replaceText( sal_Int32 nStartIndex, sal_Int32 nEndIndex, const ::rtl::OUString& sReplacement ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
374*b1cdbd2cSJim Jagielski     virtual sal_Bool SAL_CALL setAttributes( sal_Int32 nStartIndex, sal_Int32 nEndIndex, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aAttributeSet ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
375*b1cdbd2cSJim Jagielski     virtual sal_Bool SAL_CALL setText( const ::rtl::OUString& sText ) throw (::com::sun::star::uno::RuntimeException);
376*b1cdbd2cSJim Jagielski 
377*b1cdbd2cSJim Jagielski 	//=====  XAccessibleSelection  ============================================
378*b1cdbd2cSJim Jagielski     virtual void SAL_CALL selectAccessibleChild(
379*b1cdbd2cSJim Jagielski         sal_Int32 nChildIndex )
380*b1cdbd2cSJim Jagielski         throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
381*b1cdbd2cSJim Jagielski                 ::com::sun::star::uno::RuntimeException );
382*b1cdbd2cSJim Jagielski 
383*b1cdbd2cSJim Jagielski     virtual sal_Bool SAL_CALL isAccessibleChildSelected(
384*b1cdbd2cSJim Jagielski         sal_Int32 nChildIndex )
385*b1cdbd2cSJim Jagielski         throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
386*b1cdbd2cSJim Jagielski                 ::com::sun::star::uno::RuntimeException );
387*b1cdbd2cSJim Jagielski     virtual void SAL_CALL clearAccessibleSelection(  )
388*b1cdbd2cSJim Jagielski         throw ( ::com::sun::star::uno::RuntimeException );
389*b1cdbd2cSJim Jagielski     virtual void SAL_CALL selectAllAccessibleChildren(  )
390*b1cdbd2cSJim Jagielski         throw ( ::com::sun::star::uno::RuntimeException );
391*b1cdbd2cSJim Jagielski     virtual sal_Int32 SAL_CALL getSelectedAccessibleChildCount(  )
392*b1cdbd2cSJim Jagielski         throw ( ::com::sun::star::uno::RuntimeException );
393*b1cdbd2cSJim Jagielski     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild(
394*b1cdbd2cSJim Jagielski         sal_Int32 nSelectedChildIndex )
395*b1cdbd2cSJim Jagielski         throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
396*b1cdbd2cSJim Jagielski                 ::com::sun::star::uno::RuntimeException);
397*b1cdbd2cSJim Jagielski 
398*b1cdbd2cSJim Jagielski     // --> OD 2004-11-16 #111714# - index has to be treated as global child index.
399*b1cdbd2cSJim Jagielski     virtual void SAL_CALL deselectAccessibleChild(
400*b1cdbd2cSJim Jagielski         sal_Int32 nChildIndex )
401*b1cdbd2cSJim Jagielski         throw ( ::com::sun::star::lang::IndexOutOfBoundsException,
402*b1cdbd2cSJim Jagielski                 ::com::sun::star::uno::RuntimeException );
403*b1cdbd2cSJim Jagielski 
404*b1cdbd2cSJim Jagielski     //=====  XAccessibleHypertext  ============================================
405*b1cdbd2cSJim Jagielski     virtual sal_Int32 SAL_CALL getHyperLinkCount()
406*b1cdbd2cSJim Jagielski         throw (::com::sun::star::uno::RuntimeException);
407*b1cdbd2cSJim Jagielski     virtual ::com::sun::star::uno::Reference<
408*b1cdbd2cSJim Jagielski             ::com::sun::star::accessibility::XAccessibleHyperlink >
409*b1cdbd2cSJim Jagielski         SAL_CALL getHyperLink( sal_Int32 nLinkIndex )
410*b1cdbd2cSJim Jagielski         throw (::com::sun::star::lang::IndexOutOfBoundsException,
411*b1cdbd2cSJim Jagielski                 ::com::sun::star::uno::RuntimeException);
412*b1cdbd2cSJim Jagielski     virtual sal_Int32 SAL_CALL getHyperLinkIndex( sal_Int32 nCharIndex )
413*b1cdbd2cSJim Jagielski         throw (::com::sun::star::lang::IndexOutOfBoundsException,
414*b1cdbd2cSJim Jagielski                 ::com::sun::star::uno::RuntimeException);
415*b1cdbd2cSJim Jagielski 
416*b1cdbd2cSJim Jagielski     // --> OD 2008-05-19 #i71360#
417*b1cdbd2cSJim Jagielski     //=====  XAccesibleTextMarkup  ============================================
418*b1cdbd2cSJim Jagielski     virtual sal_Int32 SAL_CALL getTextMarkupCount( sal_Int32 nTextMarkupType )
419*b1cdbd2cSJim Jagielski             throw (::com::sun::star::lang::IllegalArgumentException,
420*b1cdbd2cSJim Jagielski                    ::com::sun::star::uno::RuntimeException);
421*b1cdbd2cSJim Jagielski 
422*b1cdbd2cSJim Jagielski     virtual ::com::sun::star::accessibility::TextSegment SAL_CALL
423*b1cdbd2cSJim Jagielski             getTextMarkup( sal_Int32 nTextMarkupIndex,
424*b1cdbd2cSJim Jagielski                            sal_Int32 nTextMarkupType )
425*b1cdbd2cSJim Jagielski             throw (::com::sun::star::lang::IndexOutOfBoundsException,
426*b1cdbd2cSJim Jagielski                    ::com::sun::star::lang::IllegalArgumentException,
427*b1cdbd2cSJim Jagielski                    ::com::sun::star::uno::RuntimeException);
428*b1cdbd2cSJim Jagielski 
429*b1cdbd2cSJim Jagielski     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::accessibility::TextSegment > SAL_CALL
430*b1cdbd2cSJim Jagielski             getTextMarkupAtIndex( sal_Int32 nCharIndex,
431*b1cdbd2cSJim Jagielski                                   sal_Int32 nTextMarkupType )
432*b1cdbd2cSJim Jagielski             throw (::com::sun::star::lang::IndexOutOfBoundsException,
433*b1cdbd2cSJim Jagielski                    ::com::sun::star::lang::IllegalArgumentException,
434*b1cdbd2cSJim Jagielski                    ::com::sun::star::uno::RuntimeException);
435*b1cdbd2cSJim Jagielski     // <--
436*b1cdbd2cSJim Jagielski 	//======   XAccessibleTextSelection  ======================================
437*b1cdbd2cSJim Jagielski 	virtual sal_Bool SAL_CALL scrollToPosition( const ::com::sun::star::awt::Point& aPoint, sal_Bool isLeftTop )
438*b1cdbd2cSJim Jagielski 		throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
439*b1cdbd2cSJim Jagielski 	virtual sal_Int32 SAL_CALL getSelectedPortionCount(  )
440*b1cdbd2cSJim Jagielski 		throw (::com::sun::star::uno::RuntimeException);
441*b1cdbd2cSJim Jagielski 	virtual sal_Int32 SAL_CALL getSeletedPositionStart( sal_Int32 nSelectedPortionIndex )
442*b1cdbd2cSJim Jagielski 		throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
443*b1cdbd2cSJim Jagielski 	virtual sal_Int32 SAL_CALL getSeletedPositionEnd( sal_Int32 nSelectedPortionIndex )
444*b1cdbd2cSJim Jagielski 		throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
445*b1cdbd2cSJim Jagielski 	virtual sal_Bool SAL_CALL removeSelection( sal_Int32 selectionIndex )
446*b1cdbd2cSJim Jagielski 		throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
447*b1cdbd2cSJim Jagielski 	virtual sal_Int32 SAL_CALL  addSelection( sal_Int32 selectionIndex, sal_Int32 startOffset, sal_Int32 endOffset)
448*b1cdbd2cSJim Jagielski 		throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
449*b1cdbd2cSJim Jagielski 	//=====  XAccessibleExtendedAttributes  ==============================================
450*b1cdbd2cSJim Jagielski     virtual ::com::sun::star::uno::Any SAL_CALL getExtendedAttributes()
451*b1cdbd2cSJim Jagielski 		throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException) ;
452*b1cdbd2cSJim Jagielski 	sal_Bool GetSelectionAtIndex(sal_Int32& nIndex, sal_Int32& nStart, sal_Int32& nEnd);
453*b1cdbd2cSJim Jagielski 	sal_Int32 GetRealHeadingLevel();
454*b1cdbd2cSJim Jagielski 	//=====  XAccessibleComponent  ============================================
455*b1cdbd2cSJim Jagielski 	sal_Bool m_bLastHasSelection;
456*b1cdbd2cSJim Jagielski 	sal_Bool tabCharInWord(sal_Int32 nIndex, com::sun::star::i18n::Boundary&  aBound);
457*b1cdbd2cSJim Jagielski     // --> OD 2008-05-29 #i89175#
458*b1cdbd2cSJim Jagielski     //=====  XAccessibleMultiLineText  ========================================
459*b1cdbd2cSJim Jagielski     virtual sal_Int32 SAL_CALL getLineNumberAtIndex( sal_Int32 nIndex )
460*b1cdbd2cSJim Jagielski             throw (::com::sun::star::lang::IndexOutOfBoundsException,
461*b1cdbd2cSJim Jagielski                    ::com::sun::star::uno::RuntimeException);
462*b1cdbd2cSJim Jagielski 
463*b1cdbd2cSJim Jagielski     virtual ::com::sun::star::accessibility::TextSegment SAL_CALL
464*b1cdbd2cSJim Jagielski             getTextAtLineNumber( sal_Int32 nLineNo )
465*b1cdbd2cSJim Jagielski             throw (::com::sun::star::lang::IndexOutOfBoundsException,
466*b1cdbd2cSJim Jagielski                    ::com::sun::star::uno::RuntimeException);
467*b1cdbd2cSJim Jagielski 
468*b1cdbd2cSJim Jagielski     virtual ::com::sun::star::accessibility::TextSegment SAL_CALL
469*b1cdbd2cSJim Jagielski             getTextAtLineWithCaret()
470*b1cdbd2cSJim Jagielski             throw (::com::sun::star::uno::RuntimeException);
471*b1cdbd2cSJim Jagielski 
472*b1cdbd2cSJim Jagielski     virtual sal_Int32 SAL_CALL getNumberOfLineWithCaret()
473*b1cdbd2cSJim Jagielski             throw (::com::sun::star::uno::RuntimeException);
474*b1cdbd2cSJim Jagielski     // <--
475*b1cdbd2cSJim Jagielski 
476*b1cdbd2cSJim Jagielski     // --> OD 2006-07-11 #i63870#
477*b1cdbd2cSJim Jagielski     //=====  XAccesibleTextAttributes  ========================================
478*b1cdbd2cSJim Jagielski     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL getDefaultAttributes( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aRequestedAttributes ) throw (::com::sun::star::uno::RuntimeException);
479*b1cdbd2cSJim Jagielski     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL getRunAttributes( sal_Int32 nIndex, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aRequestedAttributes ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
480*b1cdbd2cSJim Jagielski     // <--
481*b1cdbd2cSJim Jagielski };
482*b1cdbd2cSJim Jagielski 
operator ::com::sun::star::accessibility::XAccessibleText*()483*b1cdbd2cSJim Jagielski inline SwAccessibleParagraph::operator ::com::sun::star::accessibility::XAccessibleText *()
484*b1cdbd2cSJim Jagielski {
485*b1cdbd2cSJim Jagielski 	return static_cast<
486*b1cdbd2cSJim Jagielski 		::com::sun::star::accessibility::XAccessibleEditableText * >( this );
487*b1cdbd2cSJim Jagielski }
488*b1cdbd2cSJim Jagielski 
489*b1cdbd2cSJim Jagielski #endif
490*b1cdbd2cSJim Jagielski 
491