138d50f7bSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
338d50f7bSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
438d50f7bSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
538d50f7bSAndrew Rist  * distributed with this work for additional information
638d50f7bSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
738d50f7bSAndrew Rist  * to you under the Apache License, Version 2.0 (the
838d50f7bSAndrew Rist  * "License"); you may not use this file except in compliance
938d50f7bSAndrew Rist  * with the License.  You may obtain a copy of the License at
1038d50f7bSAndrew Rist  *
1138d50f7bSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
1238d50f7bSAndrew Rist  *
1338d50f7bSAndrew Rist  * Unless required by applicable law or agreed to in writing,
1438d50f7bSAndrew Rist  * software distributed under the License is distributed on an
1538d50f7bSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
1638d50f7bSAndrew Rist  * KIND, either express or implied.  See the License for the
1738d50f7bSAndrew Rist  * specific language governing permissions and limitations
1838d50f7bSAndrew Rist  * under the License.
1938d50f7bSAndrew Rist  *
2038d50f7bSAndrew Rist  *************************************************************/
2138d50f7bSAndrew Rist 
2238d50f7bSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir 
25cdf0e10cSrcweir #ifndef _SC_ACCESSIBLESPREADSHEET_HXX
26cdf0e10cSrcweir #define _SC_ACCESSIBLESPREADSHEET_HXX
27cdf0e10cSrcweir 
28cdf0e10cSrcweir #include "AccessibleTableBase.hxx"
29cdf0e10cSrcweir #include "viewdata.hxx"
30cdf0e10cSrcweir 
31cdf0e10cSrcweir #include <vector>
32cdf0e10cSrcweir 
33*0deba7fbSSteve Yin //IAccessibility2 Implementation 2009-----
34*0deba7fbSSteve Yin #include "rangelst.hxx"
35*0deba7fbSSteve Yin #include <map>
36*0deba7fbSSteve Yin //-----IAccessibility2 Implementation 2009
37cdf0e10cSrcweir class ScMyAddress : public ScAddress
38cdf0e10cSrcweir {
39cdf0e10cSrcweir public:
40cdf0e10cSrcweir 	ScMyAddress() : ScAddress() {}
41cdf0e10cSrcweir     ScMyAddress(SCCOL nColP, SCROW nRowP, SCTAB nTabP) : ScAddress(nColP, nRowP, nTabP) {}
42cdf0e10cSrcweir 	ScMyAddress(const ScAddress& rAddress) : ScAddress(rAddress) {}
43cdf0e10cSrcweir 
44cdf0e10cSrcweir 	sal_Bool operator< ( const ScMyAddress& rAddress ) const
45cdf0e10cSrcweir     {
46cdf0e10cSrcweir 		if( Row() != rAddress.Row() )
47cdf0e10cSrcweir 			return (Row() < rAddress.Row());
48cdf0e10cSrcweir 		else
49cdf0e10cSrcweir 			return (Col() < rAddress.Col());
50cdf0e10cSrcweir     }
51cdf0e10cSrcweir };
52cdf0e10cSrcweir 
53cdf0e10cSrcweir class ScTabViewShell;
54cdf0e10cSrcweir class ScAccessibleDocument;
55cdf0e10cSrcweir class ScAccessibleCell;
56cdf0e10cSrcweir 
57cdf0e10cSrcweir /**	@descr
58cdf0e10cSrcweir         This base class provides an implementation of the
59cdf0e10cSrcweir         <code>AccessibleTable</code> service.
60cdf0e10cSrcweir */
61cdf0e10cSrcweir class ScAccessibleSpreadsheet
62cdf0e10cSrcweir 	:	public	ScAccessibleTableBase
63cdf0e10cSrcweir {
64cdf0e10cSrcweir public:
65cdf0e10cSrcweir 	//=====  internal  ========================================================
66cdf0e10cSrcweir 	ScAccessibleSpreadsheet(
67cdf0e10cSrcweir         ScAccessibleDocument* pAccDoc,
68cdf0e10cSrcweir 		ScTabViewShell* pViewShell,
69cdf0e10cSrcweir 		SCTAB	nTab,
70cdf0e10cSrcweir 		ScSplitPos eSplitPos);
71cdf0e10cSrcweir protected:
72cdf0e10cSrcweir     ScAccessibleSpreadsheet(
73cdf0e10cSrcweir         ScAccessibleSpreadsheet& rParent,
74cdf0e10cSrcweir         const ScRange& rRange );
75cdf0e10cSrcweir 
76cdf0e10cSrcweir 	virtual ~ScAccessibleSpreadsheet();
77cdf0e10cSrcweir 
78cdf0e10cSrcweir     void ConstructScAccessibleSpreadsheet(
79cdf0e10cSrcweir         ScAccessibleDocument* pAccDoc,
80cdf0e10cSrcweir         ScTabViewShell* pViewShell,
81cdf0e10cSrcweir         SCTAB nTab,
82cdf0e10cSrcweir         ScSplitPos eSplitPos);
83cdf0e10cSrcweir 
84cdf0e10cSrcweir     using ScAccessibleTableBase::IsDefunc;
85cdf0e10cSrcweir 
86cdf0e10cSrcweir public:
87cdf0e10cSrcweir     using ScAccessibleTableBase::addEventListener;
88cdf0e10cSrcweir     using ScAccessibleTableBase::disposing;
89cdf0e10cSrcweir 
90cdf0e10cSrcweir  	virtual void SAL_CALL disposing();
91cdf0e10cSrcweir 
92cdf0e10cSrcweir 	void CompleteSelectionChanged(sal_Bool bNewState);
93cdf0e10cSrcweir 
94cdf0e10cSrcweir     virtual void LostFocus();
95cdf0e10cSrcweir 
96cdf0e10cSrcweir     virtual void GotFocus();
97cdf0e10cSrcweir 
98cdf0e10cSrcweir     void BoundingBoxChanged();
99cdf0e10cSrcweir 
100cdf0e10cSrcweir     void VisAreaChanged();
101cdf0e10cSrcweir 
102cdf0e10cSrcweir 	///=====  SfxListener  =====================================================
103cdf0e10cSrcweir 
104cdf0e10cSrcweir 	virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
105cdf0e10cSrcweir 
106cdf0e10cSrcweir 	///=====  XAccessibleTable  ================================================
107cdf0e10cSrcweir 
108cdf0e10cSrcweir     /// Returns the row headers as an AccessibleTable.
109cdf0e10cSrcweir     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleTable > SAL_CALL
110cdf0e10cSrcweir                 getAccessibleRowHeaders(  )
111cdf0e10cSrcweir                     throw (::com::sun::star::uno::RuntimeException);
112cdf0e10cSrcweir 
113cdf0e10cSrcweir     /// Returns the column headers as an AccessibleTable.
114cdf0e10cSrcweir     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleTable > SAL_CALL
115cdf0e10cSrcweir                 getAccessibleColumnHeaders(  )
116cdf0e10cSrcweir                     throw (::com::sun::star::uno::RuntimeException);
117cdf0e10cSrcweir 
118cdf0e10cSrcweir     /// Returns the selected rows in a table.
119cdf0e10cSrcweir     virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL
120cdf0e10cSrcweir     			getSelectedAccessibleRows(  )
121cdf0e10cSrcweir     				throw (::com::sun::star::uno::RuntimeException);
122cdf0e10cSrcweir 
123cdf0e10cSrcweir     /// Returns the selected columns in a table.
124cdf0e10cSrcweir     virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL
125cdf0e10cSrcweir     			getSelectedAccessibleColumns(  )
126cdf0e10cSrcweir     				throw (::com::sun::star::uno::RuntimeException);
127cdf0e10cSrcweir 
128cdf0e10cSrcweir     /// Returns a boolean value indicating whether the specified row is selected.
129cdf0e10cSrcweir     virtual sal_Bool SAL_CALL
130cdf0e10cSrcweir     			isAccessibleRowSelected( sal_Int32 nRow )
131cdf0e10cSrcweir     				throw (::com::sun::star::uno::RuntimeException,
132cdf0e10cSrcweir 				    ::com::sun::star::lang::IndexOutOfBoundsException);
133cdf0e10cSrcweir 
134cdf0e10cSrcweir     /// Returns a boolean value indicating whether the specified column is selected.
135cdf0e10cSrcweir     virtual sal_Bool SAL_CALL
136cdf0e10cSrcweir     			isAccessibleColumnSelected( sal_Int32 nColumn )
137cdf0e10cSrcweir     				throw (::com::sun::star::uno::RuntimeException,
138cdf0e10cSrcweir 				    ::com::sun::star::lang::IndexOutOfBoundsException);
139cdf0e10cSrcweir 
140cdf0e10cSrcweir 	/// Returns the Accessible at a specified row and column in the table.
141cdf0e10cSrcweir     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL
142cdf0e10cSrcweir     			getAccessibleCellAt( sal_Int32 nRow, sal_Int32 nColumn )
143cdf0e10cSrcweir     				throw (::com::sun::star::uno::RuntimeException,
144cdf0e10cSrcweir     				        ::com::sun::star::lang::IndexOutOfBoundsException);
145cdf0e10cSrcweir 
146cdf0e10cSrcweir     ScAccessibleCell* GetAccessibleCellAt(sal_Int32 nRow, sal_Int32 nColumn);
147cdf0e10cSrcweir 
148cdf0e10cSrcweir 	/// Returns a boolean value indicating whether the accessible at a specified row and column is selected.
149cdf0e10cSrcweir     virtual sal_Bool SAL_CALL
150cdf0e10cSrcweir     			isAccessibleSelected( sal_Int32 nRow, sal_Int32 nColumn )
151cdf0e10cSrcweir     				throw (::com::sun::star::uno::RuntimeException,
152cdf0e10cSrcweir 				    ::com::sun::star::lang::IndexOutOfBoundsException);
153cdf0e10cSrcweir 
154cdf0e10cSrcweir 	///=====  XAccessibleComponent  ============================================
155cdf0e10cSrcweir 
156cdf0e10cSrcweir     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
157cdf0e10cSrcweir 		SAL_CALL getAccessibleAtPoint(
158cdf0e10cSrcweir 		const ::com::sun::star::awt::Point& rPoint )
159cdf0e10cSrcweir 		throw (::com::sun::star::uno::RuntimeException);
160cdf0e10cSrcweir 
161cdf0e10cSrcweir     virtual void SAL_CALL grabFocus(  )
162cdf0e10cSrcweir 		throw (::com::sun::star::uno::RuntimeException);
163cdf0e10cSrcweir 
164cdf0e10cSrcweir     virtual sal_Int32 SAL_CALL getForeground(  )
165cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
166cdf0e10cSrcweir 
167cdf0e10cSrcweir     virtual sal_Int32 SAL_CALL getBackground(  )
168cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
169cdf0e10cSrcweir 
170cdf0e10cSrcweir     ///=====  XAccessibleContext  ==============================================
171cdf0e10cSrcweir 
172cdf0e10cSrcweir 	///	Return NULL to indicate that an empty relation set.
173cdf0e10cSrcweir 	virtual ::com::sun::star::uno::Reference<
174cdf0e10cSrcweir             ::com::sun::star::accessibility::XAccessibleRelationSet> SAL_CALL
175cdf0e10cSrcweir     	getAccessibleRelationSet(void)
176cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
177cdf0e10cSrcweir 
178cdf0e10cSrcweir     ///	Return the set of current states.
179cdf0e10cSrcweir 	virtual ::com::sun::star::uno::Reference<
180cdf0e10cSrcweir             ::com::sun::star::accessibility::XAccessibleStateSet> SAL_CALL
181cdf0e10cSrcweir     	getAccessibleStateSet(void)
182cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
183cdf0e10cSrcweir 
184cdf0e10cSrcweir 	///=====  XAccessibleSelection  ===========================================
185cdf0e10cSrcweir 
186cdf0e10cSrcweir     virtual void SAL_CALL
187cdf0e10cSrcweir 		selectAccessibleChild( sal_Int32 nChildIndex )
188cdf0e10cSrcweir 		throw (::com::sun::star::lang::IndexOutOfBoundsException,
189cdf0e10cSrcweir 		::com::sun::star::uno::RuntimeException);
190cdf0e10cSrcweir 
191cdf0e10cSrcweir     virtual void SAL_CALL
192cdf0e10cSrcweir 		clearAccessibleSelection(  )
193cdf0e10cSrcweir 		throw (::com::sun::star::uno::RuntimeException);
194cdf0e10cSrcweir 
195cdf0e10cSrcweir     virtual void SAL_CALL
196cdf0e10cSrcweir 		selectAllAccessibleChildren(  )
197cdf0e10cSrcweir 		throw (::com::sun::star::uno::RuntimeException);
198cdf0e10cSrcweir 
199cdf0e10cSrcweir     virtual sal_Int32 SAL_CALL
200cdf0e10cSrcweir 		getSelectedAccessibleChildCount(  )
201cdf0e10cSrcweir 		throw (::com::sun::star::uno::RuntimeException);
202cdf0e10cSrcweir 
203cdf0e10cSrcweir     virtual ::com::sun::star::uno::Reference<
204cdf0e10cSrcweir 		::com::sun::star::accessibility::XAccessible > SAL_CALL
205cdf0e10cSrcweir 		getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex )
206cdf0e10cSrcweir 		throw (::com::sun::star::lang::IndexOutOfBoundsException,
207cdf0e10cSrcweir 		::com::sun::star::uno::RuntimeException);
208cdf0e10cSrcweir 
209cdf0e10cSrcweir     virtual void SAL_CALL
210cdf0e10cSrcweir 		deselectAccessibleChild( sal_Int32 nChildIndex )
211cdf0e10cSrcweir 		throw (::com::sun::star::lang::IndexOutOfBoundsException,
212cdf0e10cSrcweir 		::com::sun::star::uno::RuntimeException);
213cdf0e10cSrcweir 
214cdf0e10cSrcweir 	///=====  XServiceInfo  ====================================================
215cdf0e10cSrcweir 
216cdf0e10cSrcweir     /**	Returns an identifier for the implementation of this object.
217cdf0e10cSrcweir     */
218cdf0e10cSrcweir 	virtual ::rtl::OUString SAL_CALL
219cdf0e10cSrcweir     	getImplementationName(void)
220cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
221cdf0e10cSrcweir 
222cdf0e10cSrcweir     /** Returns a list of all supported services.
223cdf0e10cSrcweir     */
224cdf0e10cSrcweir 	virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL
225cdf0e10cSrcweir     	getSupportedServiceNames(void)
226cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
227cdf0e10cSrcweir 
228cdf0e10cSrcweir 	///=====  XTypeProvider  ===================================================
229cdf0e10cSrcweir 
230cdf0e10cSrcweir     /**	Returns a implementation id.
231cdf0e10cSrcweir     */
232cdf0e10cSrcweir     virtual ::com::sun::star::uno::Sequence<sal_Int8> SAL_CALL
233cdf0e10cSrcweir         getImplementationId(void)
234cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
235cdf0e10cSrcweir 
236cdf0e10cSrcweir 	///=====  XAccessibleEventBroadcaster  =====================================
237cdf0e10cSrcweir 
238cdf0e10cSrcweir     /**	Add listener that is informed of future changes of name,
239cdf0e10cSrcweir       	description and so on events.
240cdf0e10cSrcweir     */
241cdf0e10cSrcweir 	virtual void SAL_CALL
242cdf0e10cSrcweir     	addEventListener(
243cdf0e10cSrcweir         	const ::com::sun::star::uno::Reference<
244cdf0e10cSrcweir                 ::com::sun::star::accessibility::XAccessibleEventListener>& xListener)
245cdf0e10cSrcweir         throw (com::sun::star::uno::RuntimeException);
246*0deba7fbSSteve Yin //IAccessibility2 Implementation 2009-----
247*0deba7fbSSteve Yin 	//=====  XAccessibleTableSelection  ============================================
248*0deba7fbSSteve Yin 	virtual sal_Bool SAL_CALL selectRow( sal_Int32 row )
249*0deba7fbSSteve Yin 		throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException) ;
250*0deba7fbSSteve Yin     virtual sal_Bool SAL_CALL selectColumn( sal_Int32 column )
251*0deba7fbSSteve Yin 		throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException) ;
252*0deba7fbSSteve Yin     virtual sal_Bool SAL_CALL unselectRow( sal_Int32 row )
253*0deba7fbSSteve Yin 		throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException) ;
254*0deba7fbSSteve Yin     virtual sal_Bool SAL_CALL unselectColumn( sal_Int32 column )
255*0deba7fbSSteve Yin 		throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException) ;
256*0deba7fbSSteve Yin //-----IAccessibility2 Implementation 2009
257cdf0e10cSrcweir 
258cdf0e10cSrcweir protected:
259cdf0e10cSrcweir     ///	Return the object's current bounding box relative to the desktop.
260cdf0e10cSrcweir 	virtual Rectangle GetBoundingBoxOnScreen(void) const
261cdf0e10cSrcweir 		throw (::com::sun::star::uno::RuntimeException);
262cdf0e10cSrcweir 
263cdf0e10cSrcweir 	///	Return the object's current bounding box relative to the parent object.
264cdf0e10cSrcweir 	virtual Rectangle GetBoundingBox(void) const
265cdf0e10cSrcweir 		throw (::com::sun::star::uno::RuntimeException);
266cdf0e10cSrcweir private:
267cdf0e10cSrcweir 	ScTabViewShell* mpViewShell;
268cdf0e10cSrcweir 	ScRangeList*	mpMarkedRanges;
269cdf0e10cSrcweir 	std::vector<ScMyAddress>* mpSortedMarkedCells;
270cdf0e10cSrcweir     ScAccessibleDocument* mpAccDoc;
271cdf0e10cSrcweir     ScAccessibleCell*   mpAccCell;
272cdf0e10cSrcweir 	Rectangle		maVisCells;
273cdf0e10cSrcweir 	ScSplitPos 		meSplitPos;
274cdf0e10cSrcweir 	ScAddress		maActiveCell;
275cdf0e10cSrcweir     SCTAB           mnTab;
276cdf0e10cSrcweir     sal_Bool        mbIsSpreadsheet;
277cdf0e10cSrcweir 	sal_Bool		mbHasSelection;
278cdf0e10cSrcweir 	sal_Bool		mbDelIns;
279cdf0e10cSrcweir     sal_Bool        mbIsFocusSend;
280cdf0e10cSrcweir 
281cdf0e10cSrcweir 	sal_Bool IsDefunc(
282cdf0e10cSrcweir 		const com::sun::star::uno::Reference<
283cdf0e10cSrcweir 		::com::sun::star::accessibility::XAccessibleStateSet>& rxParentStates);
284cdf0e10cSrcweir 	sal_Bool IsEditable(
285cdf0e10cSrcweir 		const com::sun::star::uno::Reference<
286cdf0e10cSrcweir 		::com::sun::star::accessibility::XAccessibleStateSet>& rxParentStates);
287cdf0e10cSrcweir     sal_Bool IsFocused();
288cdf0e10cSrcweir 	sal_Bool IsCompleteSheetSelected();
289cdf0e10cSrcweir 
290cdf0e10cSrcweir 	void SelectCell(sal_Int32 nRow, sal_Int32 nCol, sal_Bool bDeselect);
291cdf0e10cSrcweir 	void CreateSortedMarkedCells();
292cdf0e10cSrcweir 	void AddMarkedRange(const ScRange& rRange);
293cdf0e10cSrcweir 
294cdf0e10cSrcweir 	ScDocument* GetDocument(ScTabViewShell* pViewShell);
295cdf0e10cSrcweir 	Rectangle	GetVisArea(ScTabViewShell* pViewShell, ScSplitPos eSplitPos);
296cdf0e10cSrcweir 	Rectangle	GetVisCells(const Rectangle& rVisArea);
297*0deba7fbSSteve Yin //IAccessibility2 Implementation 2009-----
298*0deba7fbSSteve Yin 	//void CreateSortedMarkedCells();
299*0deba7fbSSteve Yin 	//void AddMarkedRange(const ScRange& rRange);
300*0deba7fbSSteve Yin 	typedef std::vector<ScMyAddress> VEC_MYADDR;
301*0deba7fbSSteve Yin 
302*0deba7fbSSteve Yin 	typedef std::map<ScMyAddress,com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > >
303*0deba7fbSSteve Yin 		MAP_ADDR_XACC;
304*0deba7fbSSteve Yin 	MAP_ADDR_XACC m_mapSelectionSend;
305*0deba7fbSSteve Yin 	void RemoveSelection(ScMarkData &refScMarkData);
306*0deba7fbSSteve Yin 	sal_Bool IsSameMarkCell();
307*0deba7fbSSteve Yin 	void CommitFocusCell(const ScAddress &aNewCell);
308*0deba7fbSSteve Yin public:
309*0deba7fbSSteve Yin 	void FireFirstCellFocus();
310*0deba7fbSSteve Yin private:
311*0deba7fbSSteve Yin 	sal_Bool m_bFormulaMode;
312*0deba7fbSSteve Yin 	sal_Bool m_bFormulaLastMode;
313*0deba7fbSSteve Yin 	ScAddress m_aFormulaActiveCell;
314*0deba7fbSSteve Yin 	MAP_ADDR_XACC m_mapFormulaSelectionSend;
315*0deba7fbSSteve Yin 	VEC_MYADDR m_vecFormulaLastMyAddr;
316*0deba7fbSSteve Yin     ScAccessibleCell*   m_pAccFormulaCell;
317*0deba7fbSSteve Yin 	sal_uInt16 m_nMinX;
318*0deba7fbSSteve Yin 	sal_uInt16 m_nMaxX;
319*0deba7fbSSteve Yin 	sal_Int32 m_nMinY;
320*0deba7fbSSteve Yin 	sal_Int32 m_nMaxY;
321*0deba7fbSSteve Yin 	sal_Int32 GetRowAll() const { return m_nMaxY - m_nMinY + 1 ; }
322*0deba7fbSSteve Yin 	sal_uInt16  GetColAll() const { return m_nMaxX - m_nMinX + 1; }
323*0deba7fbSSteve Yin 	void NotifyRefMode();
324*0deba7fbSSteve Yin 	void RemoveFormulaSelection(sal_Bool bRemoveAll =sal_False);
325*0deba7fbSSteve Yin 	sal_Bool CheckChildIndex(sal_Int32)const ;
326*0deba7fbSSteve Yin 	ScAddress GetChildIndexAddress(sal_Int32) const;
327*0deba7fbSSteve Yin     sal_Int32 GetAccessibleIndexFormula( sal_Int32 nRow, sal_Int32 nColumn );
328*0deba7fbSSteve Yin 	sal_Bool GetFormulaCurrentFocusCell(ScAddress &addr);
329*0deba7fbSSteve Yin public:
330*0deba7fbSSteve Yin 	sal_Bool IsScAddrFormulaSel (const ScAddress &addr) const ;
331*0deba7fbSSteve Yin 	sal_Bool IsFormulaMode() ;
332*0deba7fbSSteve Yin 	::com::sun::star::uno::Reference < ::com::sun::star::accessibility::XAccessible > GetActiveCell();
333*0deba7fbSSteve Yin 	ScRange m_aLastWithInMarkRange;
334*0deba7fbSSteve Yin     String m_strCurCellValue;
335*0deba7fbSSteve Yin     ScRangeList m_LastMarkedRanges;
336*0deba7fbSSteve Yin     typedef std::vector<ScRange*> VEC_RANGE;
337*0deba7fbSSteve Yin     VEC_RANGE m_vecTempRange;
338*0deba7fbSSteve Yin     typedef std::pair<sal_uInt16,sal_uInt16> PAIR_COL;
339*0deba7fbSSteve Yin     typedef std::vector<PAIR_COL> VEC_COL;
340*0deba7fbSSteve Yin     VEC_COL m_vecTempCol;
341*0deba7fbSSteve Yin     ScMyAddress CalcScAddressFromRangeList(ScRangeList *pMarkedRanges,sal_Int32 nSelectedChildIndex);
342*0deba7fbSSteve Yin 	sal_Bool CalcScRangeDifferenceMax(ScRange *pSrc,ScRange *pDest,int nMax,VEC_MYADDR &vecRet,int &nSize);
343*0deba7fbSSteve Yin 	sal_Bool CalcScRangeListDifferenceMax(ScRangeList *pSrc,ScRangeList *pDest,int nMax,VEC_MYADDR &vecRet);
344*0deba7fbSSteve Yin 	String m_strOldTabName;
345*0deba7fbSSteve Yin //-----IAccessibility2 Implementation 2009
346cdf0e10cSrcweir };
347cdf0e10cSrcweir 
348cdf0e10cSrcweir 
349cdf0e10cSrcweir #endif
350