xref: /aoo41x/main/svx/source/table/tableundo.hxx (revision 3334a7e6)
1*3334a7e6SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*3334a7e6SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*3334a7e6SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*3334a7e6SAndrew Rist  * distributed with this work for additional information
6*3334a7e6SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*3334a7e6SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*3334a7e6SAndrew Rist  * "License"); you may not use this file except in compliance
9*3334a7e6SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*3334a7e6SAndrew Rist  *
11*3334a7e6SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*3334a7e6SAndrew Rist  *
13*3334a7e6SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*3334a7e6SAndrew Rist  * software distributed under the License is distributed on an
15*3334a7e6SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*3334a7e6SAndrew Rist  * KIND, either express or implied.  See the License for the
17*3334a7e6SAndrew Rist  * specific language governing permissions and limitations
18*3334a7e6SAndrew Rist  * under the License.
19*3334a7e6SAndrew Rist  *
20*3334a7e6SAndrew Rist  *************************************************************/
21*3334a7e6SAndrew Rist 
22*3334a7e6SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir #ifndef _SVX_TABLEUNDO_HXX_
25cdf0e10cSrcweir #define _SVX_TABLEUNDO_HXX_
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include <com/sun/star/container/XIndexAccess.hpp>
28cdf0e10cSrcweir #include <com/sun/star/table/CellContentType.hpp>
29cdf0e10cSrcweir 
30cdf0e10cSrcweir #include "svx/svdotable.hxx"
31cdf0e10cSrcweir #include "svx/svdobj.hxx"
32cdf0e10cSrcweir #include "svx/svdundo.hxx"
33cdf0e10cSrcweir 
34cdf0e10cSrcweir #include "celltypes.hxx"
35cdf0e10cSrcweir 
36cdf0e10cSrcweir namespace sdr { namespace properties {
37cdf0e10cSrcweir 	class TextProperties;
38cdf0e10cSrcweir } }
39cdf0e10cSrcweir 
40cdf0e10cSrcweir class OutlinerParaObject;
41cdf0e10cSrcweir 
42cdf0e10cSrcweir // -----------------------------------------------------------------------------
43cdf0e10cSrcweir 
44cdf0e10cSrcweir namespace sdr { namespace table {
45cdf0e10cSrcweir 
46cdf0e10cSrcweir class CellUndo : public SdrUndoAction, public sdr::ObjectUser
47cdf0e10cSrcweir {
48cdf0e10cSrcweir public:
49cdf0e10cSrcweir 	CellUndo( const SdrObjectWeakRef& xObjRef, const CellRef& xCell );
50cdf0e10cSrcweir 	virtual ~CellUndo();
51cdf0e10cSrcweir 
52cdf0e10cSrcweir 	virtual void			Undo();
53cdf0e10cSrcweir 	virtual void			Redo();
54cdf0e10cSrcweir 	virtual sal_Bool			Merge( SfxUndoAction *pNextAction );
55cdf0e10cSrcweir 
56cdf0e10cSrcweir     void dispose();
57cdf0e10cSrcweir     virtual void ObjectInDestruction(const SdrObject& rObject);
58cdf0e10cSrcweir 
59cdf0e10cSrcweir private:
60cdf0e10cSrcweir 	struct Data
61cdf0e10cSrcweir 	{
62cdf0e10cSrcweir 		sdr::properties::TextProperties* mpProperties;
63cdf0e10cSrcweir 		OutlinerParaObject* mpOutlinerParaObject;
64cdf0e10cSrcweir 
65cdf0e10cSrcweir 		::com::sun::star::table::CellContentType mnCellContentType;
66cdf0e10cSrcweir 
67cdf0e10cSrcweir 		::rtl::OUString	msFormula;
68cdf0e10cSrcweir 		double			mfValue;
69cdf0e10cSrcweir 		::sal_Int32		mnError;
70cdf0e10cSrcweir 		::sal_Bool		mbMerged;
71cdf0e10cSrcweir 		::sal_Int32		mnRowSpan;
72cdf0e10cSrcweir 		::sal_Int32		mnColSpan;
73cdf0e10cSrcweir 
Datasdr::table::CellUndo::Data74cdf0e10cSrcweir 		Data() : mpProperties(0), mpOutlinerParaObject(0) {};
75cdf0e10cSrcweir 	};
76cdf0e10cSrcweir 
77cdf0e10cSrcweir 	void setDataToCell( const Data& rData );
78cdf0e10cSrcweir 	void getDataFromCell( Data& rData );
79cdf0e10cSrcweir 
80cdf0e10cSrcweir 	SdrObjectWeakRef mxObjRef;
81cdf0e10cSrcweir 	CellRef mxCell;
82cdf0e10cSrcweir 	Data maUndoData;
83cdf0e10cSrcweir 	Data maRedoData;
84cdf0e10cSrcweir 	bool mbUndo;
85cdf0e10cSrcweir };
86cdf0e10cSrcweir 
87cdf0e10cSrcweir // -----------------------------------------------------------------------------
88cdf0e10cSrcweir 
89cdf0e10cSrcweir class InsertRowUndo : public SdrUndoAction
90cdf0e10cSrcweir {
91cdf0e10cSrcweir public:
92cdf0e10cSrcweir 	InsertRowUndo( const TableModelRef& xTable, sal_Int32 nIndex, RowVector& aNewRows );
93cdf0e10cSrcweir 	virtual ~InsertRowUndo();
94cdf0e10cSrcweir 
95cdf0e10cSrcweir 	virtual void			Undo();
96cdf0e10cSrcweir 	virtual void			Redo();
97cdf0e10cSrcweir 
98cdf0e10cSrcweir private:
99cdf0e10cSrcweir 	TableModelRef mxTable;
100cdf0e10cSrcweir 	sal_Int32 mnIndex;
101cdf0e10cSrcweir 	RowVector maRows;
102cdf0e10cSrcweir 	bool mbUndo;
103cdf0e10cSrcweir };
104cdf0e10cSrcweir 
105cdf0e10cSrcweir // -----------------------------------------------------------------------------
106cdf0e10cSrcweir 
107cdf0e10cSrcweir class RemoveRowUndo : public SdrUndoAction
108cdf0e10cSrcweir {
109cdf0e10cSrcweir public:
110cdf0e10cSrcweir 	RemoveRowUndo( const TableModelRef& xTable, sal_Int32 nIndex, RowVector& aRemovedRows );
111cdf0e10cSrcweir 	virtual ~RemoveRowUndo();
112cdf0e10cSrcweir 
113cdf0e10cSrcweir 	virtual void			Undo();
114cdf0e10cSrcweir 	virtual void			Redo();
115cdf0e10cSrcweir 
116cdf0e10cSrcweir private:
117cdf0e10cSrcweir 	TableModelRef mxTable;
118cdf0e10cSrcweir 	sal_Int32 mnIndex;
119cdf0e10cSrcweir 	RowVector maRows;
120cdf0e10cSrcweir 	bool mbUndo;
121cdf0e10cSrcweir };
122cdf0e10cSrcweir 
123cdf0e10cSrcweir // -----------------------------------------------------------------------------
124cdf0e10cSrcweir 
125cdf0e10cSrcweir class InsertColUndo : public SdrUndoAction
126cdf0e10cSrcweir {
127cdf0e10cSrcweir public:
128cdf0e10cSrcweir 	InsertColUndo( const TableModelRef& xTable, sal_Int32 nIndex, ColumnVector& aNewCols, CellVector& aCells );
129cdf0e10cSrcweir 	virtual ~InsertColUndo();
130cdf0e10cSrcweir 
131cdf0e10cSrcweir 	virtual void			Undo();
132cdf0e10cSrcweir 	virtual void			Redo();
133cdf0e10cSrcweir 
134cdf0e10cSrcweir private:
135cdf0e10cSrcweir 	TableModelRef mxTable;
136cdf0e10cSrcweir 	sal_Int32 mnIndex;
137cdf0e10cSrcweir 	ColumnVector maColumns;
138cdf0e10cSrcweir 	CellVector maCells;
139cdf0e10cSrcweir 	bool mbUndo;
140cdf0e10cSrcweir };
141cdf0e10cSrcweir 
142cdf0e10cSrcweir // -----------------------------------------------------------------------------
143cdf0e10cSrcweir 
144cdf0e10cSrcweir class RemoveColUndo : public SdrUndoAction
145cdf0e10cSrcweir {
146cdf0e10cSrcweir public:
147cdf0e10cSrcweir 	RemoveColUndo( const TableModelRef& xTable, sal_Int32 nIndex, ColumnVector& aNewCols, CellVector& aCells );
148cdf0e10cSrcweir 	virtual ~RemoveColUndo();
149cdf0e10cSrcweir 
150cdf0e10cSrcweir 	virtual void			Undo();
151cdf0e10cSrcweir 	virtual void			Redo();
152cdf0e10cSrcweir 
153cdf0e10cSrcweir private:
154cdf0e10cSrcweir 	TableModelRef mxTable;
155cdf0e10cSrcweir 	sal_Int32 mnIndex;
156cdf0e10cSrcweir 	ColumnVector maColumns;
157cdf0e10cSrcweir 	CellVector maCells;
158cdf0e10cSrcweir 	bool mbUndo;
159cdf0e10cSrcweir };
160cdf0e10cSrcweir 
161cdf0e10cSrcweir // -----------------------------------------------------------------------------
162cdf0e10cSrcweir 
163cdf0e10cSrcweir class TableColumnUndo : public SdrUndoAction
164cdf0e10cSrcweir {
165cdf0e10cSrcweir public:
166cdf0e10cSrcweir 	TableColumnUndo( const TableColumnRef& xCol );
167cdf0e10cSrcweir 	virtual ~TableColumnUndo();
168cdf0e10cSrcweir 
169cdf0e10cSrcweir 	virtual void			Undo();
170cdf0e10cSrcweir 	virtual void			Redo();
171cdf0e10cSrcweir 	virtual sal_Bool			Merge( SfxUndoAction *pNextAction );
172cdf0e10cSrcweir 
173cdf0e10cSrcweir private:
174cdf0e10cSrcweir 	struct Data
175cdf0e10cSrcweir 	{
176cdf0e10cSrcweir 		sal_Int32	mnColumn;
177cdf0e10cSrcweir 		sal_Int32	mnWidth;
178cdf0e10cSrcweir 		sal_Bool	mbOptimalWidth;
179cdf0e10cSrcweir 		sal_Bool	mbIsVisible;
180cdf0e10cSrcweir 		sal_Bool	mbIsStartOfNewPage;
181cdf0e10cSrcweir 		::rtl::OUString	maName;
182cdf0e10cSrcweir 	};
183cdf0e10cSrcweir 
184cdf0e10cSrcweir 	void setData( const Data& rData );
185cdf0e10cSrcweir 	void getData( Data& rData );
186cdf0e10cSrcweir 
187cdf0e10cSrcweir 	TableColumnRef mxCol;
188cdf0e10cSrcweir 	Data maUndoData;
189cdf0e10cSrcweir 	Data maRedoData;
190cdf0e10cSrcweir 	bool mbHasRedoData;
191cdf0e10cSrcweir };
192cdf0e10cSrcweir 
193cdf0e10cSrcweir // -----------------------------------------------------------------------------
194cdf0e10cSrcweir 
195cdf0e10cSrcweir class TableRowUndo : public SdrUndoAction
196cdf0e10cSrcweir {
197cdf0e10cSrcweir public:
198cdf0e10cSrcweir 	TableRowUndo( const TableRowRef& xRow );
199cdf0e10cSrcweir 	virtual ~TableRowUndo();
200cdf0e10cSrcweir 
201cdf0e10cSrcweir 	virtual void			Undo();
202cdf0e10cSrcweir 	virtual void			Redo();
203cdf0e10cSrcweir 	virtual sal_Bool			Merge( SfxUndoAction *pNextAction );
204cdf0e10cSrcweir 
205cdf0e10cSrcweir private:
206cdf0e10cSrcweir 	struct Data
207cdf0e10cSrcweir 	{
208cdf0e10cSrcweir 		CellVector	maCells;
209cdf0e10cSrcweir 		sal_Int32	mnRow;
210cdf0e10cSrcweir 		sal_Int32	mnHeight;
211cdf0e10cSrcweir 		sal_Bool	mbOptimalHeight;
212cdf0e10cSrcweir 		sal_Bool	mbIsVisible;
213cdf0e10cSrcweir 		sal_Bool	mbIsStartOfNewPage;
214cdf0e10cSrcweir 		::rtl::OUString maName;
215cdf0e10cSrcweir 	};
216cdf0e10cSrcweir 
217cdf0e10cSrcweir 	void setData( const Data& rData );
218cdf0e10cSrcweir 	void getData( Data& rData );
219cdf0e10cSrcweir 
220cdf0e10cSrcweir 	TableRowRef mxRow;
221cdf0e10cSrcweir 	Data maUndoData;
222cdf0e10cSrcweir 	Data maRedoData;
223cdf0e10cSrcweir 	bool mbHasRedoData;
224cdf0e10cSrcweir };
225cdf0e10cSrcweir 
226cdf0e10cSrcweir // -----------------------------------------------------------------------------
227cdf0e10cSrcweir 
228cdf0e10cSrcweir class TableStyleUndo : public SdrUndoAction
229cdf0e10cSrcweir {
230cdf0e10cSrcweir public:
231cdf0e10cSrcweir 	TableStyleUndo( const SdrTableObj& rTableObj );
232cdf0e10cSrcweir 
233cdf0e10cSrcweir 	virtual void			Undo();
234cdf0e10cSrcweir 	virtual void			Redo();
235cdf0e10cSrcweir 
236cdf0e10cSrcweir private:
237cdf0e10cSrcweir 	SdrObjectWeakRef mxObjRef;
238cdf0e10cSrcweir 
239cdf0e10cSrcweir 	struct Data
240cdf0e10cSrcweir 	{
241cdf0e10cSrcweir 		TableStyleSettings maSettings;
242cdf0e10cSrcweir 		::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > mxTableStyle;
243cdf0e10cSrcweir 	};
244cdf0e10cSrcweir 
245cdf0e10cSrcweir 	void setData( const Data& rData );
246cdf0e10cSrcweir 	void getData( Data& rData );
247cdf0e10cSrcweir 
248cdf0e10cSrcweir 	Data maUndoData;
249cdf0e10cSrcweir 	Data maRedoData;
250cdf0e10cSrcweir 	bool mbHasRedoData;
251cdf0e10cSrcweir };
252cdf0e10cSrcweir 
253cdf0e10cSrcweir } }
254cdf0e10cSrcweir 
255cdf0e10cSrcweir #endif
256