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 
330deba7fbSSteve Yin #include "rangelst.hxx"
340deba7fbSSteve Yin #include <map>
35cdf0e10cSrcweir class ScMyAddress : public ScAddress
36cdf0e10cSrcweir {
37cdf0e10cSrcweir public:
ScMyAddress()38cdf0e10cSrcweir 	ScMyAddress() : ScAddress() {}
ScMyAddress(SCCOL nColP,SCROW nRowP,SCTAB nTabP)39cdf0e10cSrcweir     ScMyAddress(SCCOL nColP, SCROW nRowP, SCTAB nTabP) : ScAddress(nColP, nRowP, nTabP) {}
ScMyAddress(const ScAddress & rAddress)40cdf0e10cSrcweir 	ScMyAddress(const ScAddress& rAddress) : ScAddress(rAddress) {}
41cdf0e10cSrcweir 
operator <(const ScMyAddress & rAddress) const42cdf0e10cSrcweir 	sal_Bool operator< ( const ScMyAddress& rAddress ) const
43cdf0e10cSrcweir     {
44cdf0e10cSrcweir 		if( Row() != rAddress.Row() )
45cdf0e10cSrcweir 			return (Row() < rAddress.Row());
46cdf0e10cSrcweir 		else
47cdf0e10cSrcweir 			return (Col() < rAddress.Col());
48cdf0e10cSrcweir     }
49cdf0e10cSrcweir };
50cdf0e10cSrcweir 
51cdf0e10cSrcweir class ScTabViewShell;
52cdf0e10cSrcweir class ScAccessibleDocument;
53cdf0e10cSrcweir class ScAccessibleCell;
54cdf0e10cSrcweir 
55cdf0e10cSrcweir /**	@descr
56cdf0e10cSrcweir         This base class provides an implementation of the
57cdf0e10cSrcweir         <code>AccessibleTable</code> service.
58cdf0e10cSrcweir */
59cdf0e10cSrcweir class ScAccessibleSpreadsheet
60cdf0e10cSrcweir 	:	public	ScAccessibleTableBase
61cdf0e10cSrcweir {
62cdf0e10cSrcweir public:
63cdf0e10cSrcweir 	//=====  internal  ========================================================
64cdf0e10cSrcweir 	ScAccessibleSpreadsheet(
65cdf0e10cSrcweir         ScAccessibleDocument* pAccDoc,
66cdf0e10cSrcweir 		ScTabViewShell* pViewShell,
67cdf0e10cSrcweir 		SCTAB	nTab,
68cdf0e10cSrcweir 		ScSplitPos eSplitPos);
69cdf0e10cSrcweir protected:
70cdf0e10cSrcweir     ScAccessibleSpreadsheet(
71cdf0e10cSrcweir         ScAccessibleSpreadsheet& rParent,
72cdf0e10cSrcweir         const ScRange& rRange );
73cdf0e10cSrcweir 
74cdf0e10cSrcweir 	virtual ~ScAccessibleSpreadsheet();
75cdf0e10cSrcweir 
76cdf0e10cSrcweir     void ConstructScAccessibleSpreadsheet(
77cdf0e10cSrcweir         ScAccessibleDocument* pAccDoc,
78cdf0e10cSrcweir         ScTabViewShell* pViewShell,
79cdf0e10cSrcweir         SCTAB nTab,
80cdf0e10cSrcweir         ScSplitPos eSplitPos);
81cdf0e10cSrcweir 
82cdf0e10cSrcweir     using ScAccessibleTableBase::IsDefunc;
83cdf0e10cSrcweir 
84cdf0e10cSrcweir public:
85cdf0e10cSrcweir     using ScAccessibleTableBase::addEventListener;
86cdf0e10cSrcweir     using ScAccessibleTableBase::disposing;
87cdf0e10cSrcweir 
88cdf0e10cSrcweir  	virtual void SAL_CALL disposing();
89cdf0e10cSrcweir 
90cdf0e10cSrcweir 	void CompleteSelectionChanged(sal_Bool bNewState);
91cdf0e10cSrcweir 
92cdf0e10cSrcweir     virtual void LostFocus();
93cdf0e10cSrcweir 
94cdf0e10cSrcweir     virtual void GotFocus();
95cdf0e10cSrcweir 
96cdf0e10cSrcweir     void BoundingBoxChanged();
97cdf0e10cSrcweir 
98cdf0e10cSrcweir     void VisAreaChanged();
99cdf0e10cSrcweir 
100cdf0e10cSrcweir 	///=====  SfxListener  =====================================================
101cdf0e10cSrcweir 
102cdf0e10cSrcweir 	virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
103cdf0e10cSrcweir 
104cdf0e10cSrcweir 	///=====  XAccessibleTable  ================================================
105cdf0e10cSrcweir 
106cdf0e10cSrcweir     /// Returns the row headers as an AccessibleTable.
107cdf0e10cSrcweir     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleTable > SAL_CALL
108cdf0e10cSrcweir                 getAccessibleRowHeaders(  )
109cdf0e10cSrcweir                     throw (::com::sun::star::uno::RuntimeException);
110cdf0e10cSrcweir 
111cdf0e10cSrcweir     /// Returns the column headers as an AccessibleTable.
112cdf0e10cSrcweir     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleTable > SAL_CALL
113cdf0e10cSrcweir                 getAccessibleColumnHeaders(  )
114cdf0e10cSrcweir                     throw (::com::sun::star::uno::RuntimeException);
115cdf0e10cSrcweir 
116cdf0e10cSrcweir     /// Returns the selected rows in a table.
117cdf0e10cSrcweir     virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL
118cdf0e10cSrcweir     			getSelectedAccessibleRows(  )
119cdf0e10cSrcweir     				throw (::com::sun::star::uno::RuntimeException);
120cdf0e10cSrcweir 
121cdf0e10cSrcweir     /// Returns the selected columns in a table.
122cdf0e10cSrcweir     virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL
123cdf0e10cSrcweir     			getSelectedAccessibleColumns(  )
124cdf0e10cSrcweir     				throw (::com::sun::star::uno::RuntimeException);
125cdf0e10cSrcweir 
126cdf0e10cSrcweir     /// Returns a boolean value indicating whether the specified row is selected.
127cdf0e10cSrcweir     virtual sal_Bool SAL_CALL
128cdf0e10cSrcweir     			isAccessibleRowSelected( sal_Int32 nRow )
129cdf0e10cSrcweir     				throw (::com::sun::star::uno::RuntimeException,
130cdf0e10cSrcweir 				    ::com::sun::star::lang::IndexOutOfBoundsException);
131cdf0e10cSrcweir 
132cdf0e10cSrcweir     /// Returns a boolean value indicating whether the specified column is selected.
133cdf0e10cSrcweir     virtual sal_Bool SAL_CALL
134cdf0e10cSrcweir     			isAccessibleColumnSelected( sal_Int32 nColumn )
135cdf0e10cSrcweir     				throw (::com::sun::star::uno::RuntimeException,
136cdf0e10cSrcweir 				    ::com::sun::star::lang::IndexOutOfBoundsException);
137cdf0e10cSrcweir 
138cdf0e10cSrcweir 	/// Returns the Accessible at a specified row and column in the table.
139cdf0e10cSrcweir     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL
140cdf0e10cSrcweir     			getAccessibleCellAt( sal_Int32 nRow, sal_Int32 nColumn )
141cdf0e10cSrcweir     				throw (::com::sun::star::uno::RuntimeException,
142cdf0e10cSrcweir     				        ::com::sun::star::lang::IndexOutOfBoundsException);
143cdf0e10cSrcweir 
144cdf0e10cSrcweir     ScAccessibleCell* GetAccessibleCellAt(sal_Int32 nRow, sal_Int32 nColumn);
145cdf0e10cSrcweir 
146cdf0e10cSrcweir 	/// Returns a boolean value indicating whether the accessible at a specified row and column is selected.
147cdf0e10cSrcweir     virtual sal_Bool SAL_CALL
148cdf0e10cSrcweir     			isAccessibleSelected( sal_Int32 nRow, sal_Int32 nColumn )
149cdf0e10cSrcweir     				throw (::com::sun::star::uno::RuntimeException,
150cdf0e10cSrcweir 				    ::com::sun::star::lang::IndexOutOfBoundsException);
151cdf0e10cSrcweir 
152cdf0e10cSrcweir 	///=====  XAccessibleComponent  ============================================
153cdf0e10cSrcweir 
154cdf0e10cSrcweir     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
155cdf0e10cSrcweir 		SAL_CALL getAccessibleAtPoint(
156cdf0e10cSrcweir 		const ::com::sun::star::awt::Point& rPoint )
157cdf0e10cSrcweir 		throw (::com::sun::star::uno::RuntimeException);
158cdf0e10cSrcweir 
159cdf0e10cSrcweir     virtual void SAL_CALL grabFocus(  )
160cdf0e10cSrcweir 		throw (::com::sun::star::uno::RuntimeException);
161cdf0e10cSrcweir 
162cdf0e10cSrcweir     virtual sal_Int32 SAL_CALL getForeground(  )
163cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
164cdf0e10cSrcweir 
165cdf0e10cSrcweir     virtual sal_Int32 SAL_CALL getBackground(  )
166cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
167cdf0e10cSrcweir 
168cdf0e10cSrcweir     ///=====  XAccessibleContext  ==============================================
169cdf0e10cSrcweir 
170cdf0e10cSrcweir 	///	Return NULL to indicate that an empty relation set.
171cdf0e10cSrcweir 	virtual ::com::sun::star::uno::Reference<
172cdf0e10cSrcweir             ::com::sun::star::accessibility::XAccessibleRelationSet> SAL_CALL
173cdf0e10cSrcweir     	getAccessibleRelationSet(void)
174cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
175cdf0e10cSrcweir 
176cdf0e10cSrcweir     ///	Return the set of current states.
177cdf0e10cSrcweir 	virtual ::com::sun::star::uno::Reference<
178cdf0e10cSrcweir             ::com::sun::star::accessibility::XAccessibleStateSet> SAL_CALL
179cdf0e10cSrcweir     	getAccessibleStateSet(void)
180cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
181cdf0e10cSrcweir 
182cdf0e10cSrcweir 	///=====  XAccessibleSelection  ===========================================
183cdf0e10cSrcweir 
184cdf0e10cSrcweir     virtual void SAL_CALL
185cdf0e10cSrcweir 		selectAccessibleChild( sal_Int32 nChildIndex )
186cdf0e10cSrcweir 		throw (::com::sun::star::lang::IndexOutOfBoundsException,
187cdf0e10cSrcweir 		::com::sun::star::uno::RuntimeException);
188cdf0e10cSrcweir 
189cdf0e10cSrcweir     virtual void SAL_CALL
190cdf0e10cSrcweir 		clearAccessibleSelection(  )
191cdf0e10cSrcweir 		throw (::com::sun::star::uno::RuntimeException);
192cdf0e10cSrcweir 
193cdf0e10cSrcweir     virtual void SAL_CALL
194cdf0e10cSrcweir 		selectAllAccessibleChildren(  )
195cdf0e10cSrcweir 		throw (::com::sun::star::uno::RuntimeException);
196cdf0e10cSrcweir 
197cdf0e10cSrcweir     virtual sal_Int32 SAL_CALL
198cdf0e10cSrcweir 		getSelectedAccessibleChildCount(  )
199cdf0e10cSrcweir 		throw (::com::sun::star::uno::RuntimeException);
200cdf0e10cSrcweir 
201cdf0e10cSrcweir     virtual ::com::sun::star::uno::Reference<
202cdf0e10cSrcweir 		::com::sun::star::accessibility::XAccessible > SAL_CALL
203cdf0e10cSrcweir 		getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex )
204cdf0e10cSrcweir 		throw (::com::sun::star::lang::IndexOutOfBoundsException,
205cdf0e10cSrcweir 		::com::sun::star::uno::RuntimeException);
206cdf0e10cSrcweir 
207cdf0e10cSrcweir     virtual void SAL_CALL
208cdf0e10cSrcweir 		deselectAccessibleChild( sal_Int32 nChildIndex )
209cdf0e10cSrcweir 		throw (::com::sun::star::lang::IndexOutOfBoundsException,
210cdf0e10cSrcweir 		::com::sun::star::uno::RuntimeException);
211cdf0e10cSrcweir 
212cdf0e10cSrcweir 	///=====  XServiceInfo  ====================================================
213cdf0e10cSrcweir 
214cdf0e10cSrcweir     /**	Returns an identifier for the implementation of this object.
215cdf0e10cSrcweir     */
216cdf0e10cSrcweir 	virtual ::rtl::OUString SAL_CALL
217cdf0e10cSrcweir     	getImplementationName(void)
218cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
219cdf0e10cSrcweir 
220cdf0e10cSrcweir     /** Returns a list of all supported services.
221cdf0e10cSrcweir     */
222cdf0e10cSrcweir 	virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL
223cdf0e10cSrcweir     	getSupportedServiceNames(void)
224cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
225cdf0e10cSrcweir 
226cdf0e10cSrcweir 	///=====  XTypeProvider  ===================================================
227cdf0e10cSrcweir 
228cdf0e10cSrcweir     /**	Returns a implementation id.
229cdf0e10cSrcweir     */
230cdf0e10cSrcweir     virtual ::com::sun::star::uno::Sequence<sal_Int8> SAL_CALL
231cdf0e10cSrcweir         getImplementationId(void)
232cdf0e10cSrcweir         throw (::com::sun::star::uno::RuntimeException);
233cdf0e10cSrcweir 
234cdf0e10cSrcweir 	///=====  XAccessibleEventBroadcaster  =====================================
235cdf0e10cSrcweir 
236cdf0e10cSrcweir     /**	Add listener that is informed of future changes of name,
237cdf0e10cSrcweir       	description and so on events.
238cdf0e10cSrcweir     */
239cdf0e10cSrcweir 	virtual void SAL_CALL
240cdf0e10cSrcweir     	addEventListener(
241cdf0e10cSrcweir         	const ::com::sun::star::uno::Reference<
242cdf0e10cSrcweir                 ::com::sun::star::accessibility::XAccessibleEventListener>& xListener)
243cdf0e10cSrcweir         throw (com::sun::star::uno::RuntimeException);
2440deba7fbSSteve Yin 	//=====  XAccessibleTableSelection  ============================================
2450deba7fbSSteve Yin 	virtual sal_Bool SAL_CALL selectRow( sal_Int32 row )
246*4937ceefSSteve Yin 		throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException) ;
2470deba7fbSSteve Yin     virtual sal_Bool SAL_CALL selectColumn( sal_Int32 column )
248*4937ceefSSteve Yin 		throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException) ;
2490deba7fbSSteve Yin     virtual sal_Bool SAL_CALL unselectRow( sal_Int32 row )
250*4937ceefSSteve Yin 		throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException) ;
2510deba7fbSSteve Yin     virtual sal_Bool SAL_CALL unselectColumn( sal_Int32 column )
252*4937ceefSSteve Yin 		throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException) ;
253cdf0e10cSrcweir 
254cdf0e10cSrcweir protected:
255cdf0e10cSrcweir     ///	Return the object's current bounding box relative to the desktop.
256cdf0e10cSrcweir 	virtual Rectangle GetBoundingBoxOnScreen(void) const
257cdf0e10cSrcweir 		throw (::com::sun::star::uno::RuntimeException);
258cdf0e10cSrcweir 
259cdf0e10cSrcweir 	///	Return the object's current bounding box relative to the parent object.
260cdf0e10cSrcweir 	virtual Rectangle GetBoundingBox(void) const
261cdf0e10cSrcweir 		throw (::com::sun::star::uno::RuntimeException);
262cdf0e10cSrcweir private:
263cdf0e10cSrcweir 	ScTabViewShell* mpViewShell;
264cdf0e10cSrcweir 	ScRangeList*	mpMarkedRanges;
265cdf0e10cSrcweir 	std::vector<ScMyAddress>* mpSortedMarkedCells;
266cdf0e10cSrcweir     ScAccessibleDocument* mpAccDoc;
267cdf0e10cSrcweir     ScAccessibleCell*   mpAccCell;
268cdf0e10cSrcweir 	Rectangle		maVisCells;
269cdf0e10cSrcweir 	ScSplitPos 		meSplitPos;
270cdf0e10cSrcweir 	ScAddress		maActiveCell;
271cdf0e10cSrcweir     SCTAB           mnTab;
272cdf0e10cSrcweir     sal_Bool        mbIsSpreadsheet;
273cdf0e10cSrcweir 	sal_Bool		mbHasSelection;
274cdf0e10cSrcweir 	sal_Bool		mbDelIns;
275cdf0e10cSrcweir     sal_Bool        mbIsFocusSend;
276cdf0e10cSrcweir 
277cdf0e10cSrcweir 	sal_Bool IsDefunc(
278cdf0e10cSrcweir 		const com::sun::star::uno::Reference<
279cdf0e10cSrcweir 		::com::sun::star::accessibility::XAccessibleStateSet>& rxParentStates);
280cdf0e10cSrcweir 	sal_Bool IsEditable(
281cdf0e10cSrcweir 		const com::sun::star::uno::Reference<
282cdf0e10cSrcweir 		::com::sun::star::accessibility::XAccessibleStateSet>& rxParentStates);
283cdf0e10cSrcweir     sal_Bool IsFocused();
284cdf0e10cSrcweir 	sal_Bool IsCompleteSheetSelected();
285cdf0e10cSrcweir 
286cdf0e10cSrcweir 	void SelectCell(sal_Int32 nRow, sal_Int32 nCol, sal_Bool bDeselect);
287cdf0e10cSrcweir 	void CreateSortedMarkedCells();
288cdf0e10cSrcweir 	void AddMarkedRange(const ScRange& rRange);
289cdf0e10cSrcweir 
290cdf0e10cSrcweir 	ScDocument* GetDocument(ScTabViewShell* pViewShell);
291cdf0e10cSrcweir 	Rectangle	GetVisArea(ScTabViewShell* pViewShell, ScSplitPos eSplitPos);
292cdf0e10cSrcweir 	Rectangle	GetVisCells(const Rectangle& rVisArea);
2930deba7fbSSteve Yin 	//void CreateSortedMarkedCells();
2940deba7fbSSteve Yin 	//void AddMarkedRange(const ScRange& rRange);
2950deba7fbSSteve Yin 	typedef std::vector<ScMyAddress> VEC_MYADDR;
2960deba7fbSSteve Yin 
2970deba7fbSSteve Yin 	typedef std::map<ScMyAddress,com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > >
2980deba7fbSSteve Yin 		MAP_ADDR_XACC;
2990deba7fbSSteve Yin 	MAP_ADDR_XACC m_mapSelectionSend;
3000deba7fbSSteve Yin 	void RemoveSelection(ScMarkData &refScMarkData);
3010deba7fbSSteve Yin 	sal_Bool IsSameMarkCell();
3020deba7fbSSteve Yin 	void CommitFocusCell(const ScAddress &aNewCell);
3030deba7fbSSteve Yin public:
3040deba7fbSSteve Yin 	void FireFirstCellFocus();
3050deba7fbSSteve Yin private:
3060deba7fbSSteve Yin 	sal_Bool m_bFormulaMode;
3070deba7fbSSteve Yin 	sal_Bool m_bFormulaLastMode;
3080deba7fbSSteve Yin 	ScAddress m_aFormulaActiveCell;
3090deba7fbSSteve Yin 	MAP_ADDR_XACC m_mapFormulaSelectionSend;
3100deba7fbSSteve Yin 	VEC_MYADDR m_vecFormulaLastMyAddr;
3110deba7fbSSteve Yin     ScAccessibleCell*   m_pAccFormulaCell;
3120deba7fbSSteve Yin 	sal_uInt16 m_nMinX;
3130deba7fbSSteve Yin 	sal_uInt16 m_nMaxX;
3140deba7fbSSteve Yin 	sal_Int32 m_nMinY;
3150deba7fbSSteve Yin 	sal_Int32 m_nMaxY;
GetRowAll() const3160deba7fbSSteve Yin 	sal_Int32 GetRowAll() const { return m_nMaxY - m_nMinY + 1 ; }
GetColAll() const3170deba7fbSSteve Yin 	sal_uInt16  GetColAll() const { return m_nMaxX - m_nMinX + 1; }
3180deba7fbSSteve Yin 	void NotifyRefMode();
3190deba7fbSSteve Yin 	void RemoveFormulaSelection(sal_Bool bRemoveAll =sal_False);
3200deba7fbSSteve Yin 	sal_Bool CheckChildIndex(sal_Int32)const ;
3210deba7fbSSteve Yin 	ScAddress GetChildIndexAddress(sal_Int32) const;
3220deba7fbSSteve Yin     sal_Int32 GetAccessibleIndexFormula( sal_Int32 nRow, sal_Int32 nColumn );
3230deba7fbSSteve Yin 	sal_Bool GetFormulaCurrentFocusCell(ScAddress &addr);
3240deba7fbSSteve Yin public:
3250deba7fbSSteve Yin 	sal_Bool IsScAddrFormulaSel (const ScAddress &addr) const ;
3260deba7fbSSteve Yin 	sal_Bool IsFormulaMode() ;
3270deba7fbSSteve Yin 	::com::sun::star::uno::Reference < ::com::sun::star::accessibility::XAccessible > GetActiveCell();
3280deba7fbSSteve Yin 	ScRange m_aLastWithInMarkRange;
3290deba7fbSSteve Yin     String m_strCurCellValue;
3300deba7fbSSteve Yin     ScRangeList m_LastMarkedRanges;
3310deba7fbSSteve Yin     typedef std::vector<ScRange*> VEC_RANGE;
3320deba7fbSSteve Yin     VEC_RANGE m_vecTempRange;
3330deba7fbSSteve Yin     typedef std::pair<sal_uInt16,sal_uInt16> PAIR_COL;
3340deba7fbSSteve Yin     typedef std::vector<PAIR_COL> VEC_COL;
3350deba7fbSSteve Yin     VEC_COL m_vecTempCol;
3360deba7fbSSteve Yin     ScMyAddress CalcScAddressFromRangeList(ScRangeList *pMarkedRanges,sal_Int32 nSelectedChildIndex);
3370deba7fbSSteve Yin 	sal_Bool CalcScRangeDifferenceMax(ScRange *pSrc,ScRange *pDest,int nMax,VEC_MYADDR &vecRet,int &nSize);
3380deba7fbSSteve Yin 	sal_Bool CalcScRangeListDifferenceMax(ScRangeList *pSrc,ScRangeList *pDest,int nMax,VEC_MYADDR &vecRet);
3390deba7fbSSteve Yin 	String m_strOldTabName;
340cdf0e10cSrcweir };
341cdf0e10cSrcweir 
342cdf0e10cSrcweir 
343cdf0e10cSrcweir #endif
344