Branch data Line data Source code
1 : : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : : /*************************************************************************
3 : : *
4 : : * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 : : *
6 : : * Copyright 2000, 2010 Oracle and/or its affiliates.
7 : : *
8 : : * OpenOffice.org - a multi-platform office productivity suite
9 : : *
10 : : * This file is part of OpenOffice.org.
11 : : *
12 : : * OpenOffice.org is free software: you can redistribute it and/or modify
13 : : * it under the terms of the GNU Lesser General Public License version 3
14 : : * only, as published by the Free Software Foundation.
15 : : *
16 : : * OpenOffice.org is distributed in the hope that it will be useful,
17 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 : : * GNU Lesser General Public License version 3 for more details
20 : : * (a copy is included in the LICENSE file that accompanied this code).
21 : : *
22 : : * You should have received a copy of the GNU Lesser General Public License
23 : : * version 3 along with OpenOffice.org. If not, see
24 : : * <http://www.openoffice.org/license.html>
25 : : * for a copy of the LGPLv3 License.
26 : : *
27 : : ************************************************************************/
28 : :
29 : : #ifndef _SVX_TABLEUNDO_HXX_
30 : : #define _SVX_TABLEUNDO_HXX_
31 : :
32 : : #include <com/sun/star/container/XIndexAccess.hpp>
33 : : #include <com/sun/star/table/CellContentType.hpp>
34 : :
35 : : #include "svx/svdotable.hxx"
36 : : #include "svx/svdobj.hxx"
37 : : #include "svx/svdundo.hxx"
38 : :
39 : : #include "celltypes.hxx"
40 : :
41 : : namespace sdr { namespace properties {
42 : : class TextProperties;
43 : : } }
44 : :
45 : : class OutlinerParaObject;
46 : :
47 : : // -----------------------------------------------------------------------------
48 : :
49 : : namespace sdr { namespace table {
50 : :
51 : : class CellUndo : public SdrUndoAction, public sdr::ObjectUser
52 : : {
53 : : public:
54 : : CellUndo( const SdrObjectWeakRef& xObjRef, const CellRef& xCell );
55 : : virtual ~CellUndo();
56 : :
57 : : virtual void Undo();
58 : : virtual void Redo();
59 : : virtual sal_Bool Merge( SfxUndoAction *pNextAction );
60 : :
61 : : void dispose();
62 : : virtual void ObjectInDestruction(const SdrObject& rObject);
63 : :
64 : : private:
65 : 0 : struct Data
66 : : {
67 : : sdr::properties::TextProperties* mpProperties;
68 : : OutlinerParaObject* mpOutlinerParaObject;
69 : :
70 : : ::com::sun::star::table::CellContentType mnCellContentType;
71 : :
72 : : ::rtl::OUString msFormula;
73 : : double mfValue;
74 : : ::sal_Int32 mnError;
75 : : ::sal_Bool mbMerged;
76 : : ::sal_Int32 mnRowSpan;
77 : : ::sal_Int32 mnColSpan;
78 : :
79 : 0 : Data() : mpProperties(NULL), mpOutlinerParaObject(NULL), mfValue(0) {};
80 : : };
81 : :
82 : : void setDataToCell( const Data& rData );
83 : : void getDataFromCell( Data& rData );
84 : :
85 : : SdrObjectWeakRef mxObjRef;
86 : : CellRef mxCell;
87 : : Data maUndoData;
88 : : Data maRedoData;
89 : : bool mbUndo;
90 : : };
91 : :
92 : : // -----------------------------------------------------------------------------
93 : :
94 : : class InsertRowUndo : public SdrUndoAction
95 : : {
96 : : public:
97 : : InsertRowUndo( const TableModelRef& xTable, sal_Int32 nIndex, RowVector& aNewRows );
98 : : virtual ~InsertRowUndo();
99 : :
100 : : virtual void Undo();
101 : : virtual void Redo();
102 : :
103 : : private:
104 : : TableModelRef mxTable;
105 : : sal_Int32 mnIndex;
106 : : RowVector maRows;
107 : : bool mbUndo;
108 : : };
109 : :
110 : : // -----------------------------------------------------------------------------
111 : :
112 : : class RemoveRowUndo : public SdrUndoAction
113 : : {
114 : : public:
115 : : RemoveRowUndo( const TableModelRef& xTable, sal_Int32 nIndex, RowVector& aRemovedRows );
116 : : virtual ~RemoveRowUndo();
117 : :
118 : : virtual void Undo();
119 : : virtual void Redo();
120 : :
121 : : private:
122 : : TableModelRef mxTable;
123 : : sal_Int32 mnIndex;
124 : : RowVector maRows;
125 : : bool mbUndo;
126 : : };
127 : :
128 : : // -----------------------------------------------------------------------------
129 : :
130 : : class InsertColUndo : public SdrUndoAction
131 : : {
132 : : public:
133 : : InsertColUndo( const TableModelRef& xTable, sal_Int32 nIndex, ColumnVector& aNewCols, CellVector& aCells );
134 : : virtual ~InsertColUndo();
135 : :
136 : : virtual void Undo();
137 : : virtual void Redo();
138 : :
139 : : private:
140 : : TableModelRef mxTable;
141 : : sal_Int32 mnIndex;
142 : : ColumnVector maColumns;
143 : : CellVector maCells;
144 : : bool mbUndo;
145 : : };
146 : :
147 : : // -----------------------------------------------------------------------------
148 : :
149 : : class RemoveColUndo : public SdrUndoAction
150 : : {
151 : : public:
152 : : RemoveColUndo( const TableModelRef& xTable, sal_Int32 nIndex, ColumnVector& aNewCols, CellVector& aCells );
153 : : virtual ~RemoveColUndo();
154 : :
155 : : virtual void Undo();
156 : : virtual void Redo();
157 : :
158 : : private:
159 : : TableModelRef mxTable;
160 : : sal_Int32 mnIndex;
161 : : ColumnVector maColumns;
162 : : CellVector maCells;
163 : : bool mbUndo;
164 : : };
165 : :
166 : : // -----------------------------------------------------------------------------
167 : :
168 : : class TableColumnUndo : public SdrUndoAction
169 : : {
170 : : public:
171 : : TableColumnUndo( const TableColumnRef& xCol );
172 : : virtual ~TableColumnUndo();
173 : :
174 : : virtual void Undo();
175 : : virtual void Redo();
176 : : virtual sal_Bool Merge( SfxUndoAction *pNextAction );
177 : :
178 : : private:
179 : 0 : struct Data
180 : : {
181 : : sal_Int32 mnColumn;
182 : : sal_Int32 mnWidth;
183 : : sal_Bool mbOptimalWidth;
184 : : sal_Bool mbIsVisible;
185 : : sal_Bool mbIsStartOfNewPage;
186 : : ::rtl::OUString maName;
187 : : };
188 : :
189 : : void setData( const Data& rData );
190 : : void getData( Data& rData );
191 : :
192 : : TableColumnRef mxCol;
193 : : Data maUndoData;
194 : : Data maRedoData;
195 : : bool mbHasRedoData;
196 : : };
197 : :
198 : : // -----------------------------------------------------------------------------
199 : :
200 : : class TableRowUndo : public SdrUndoAction
201 : : {
202 : : public:
203 : : TableRowUndo( const TableRowRef& xRow );
204 : : virtual ~TableRowUndo();
205 : :
206 : : virtual void Undo();
207 : : virtual void Redo();
208 : : virtual sal_Bool Merge( SfxUndoAction *pNextAction );
209 : :
210 : : private:
211 : 0 : struct Data
212 : : {
213 : : CellVector maCells;
214 : : sal_Int32 mnRow;
215 : : sal_Int32 mnHeight;
216 : : sal_Bool mbOptimalHeight;
217 : : sal_Bool mbIsVisible;
218 : : sal_Bool mbIsStartOfNewPage;
219 : : ::rtl::OUString maName;
220 : : };
221 : :
222 : : void setData( const Data& rData );
223 : : void getData( Data& rData );
224 : :
225 : : TableRowRef mxRow;
226 : : Data maUndoData;
227 : : Data maRedoData;
228 : : bool mbHasRedoData;
229 : : };
230 : :
231 : : // -----------------------------------------------------------------------------
232 : :
233 [ # # ][ # # ]: 0 : class TableStyleUndo : public SdrUndoAction
[ # # ][ # # ]
234 : : {
235 : : public:
236 : : TableStyleUndo( const SdrTableObj& rTableObj );
237 : :
238 : : virtual void Undo();
239 : : virtual void Redo();
240 : :
241 : : private:
242 : : SdrObjectWeakRef mxObjRef;
243 : :
244 : 0 : struct Data
245 : : {
246 : : TableStyleSettings maSettings;
247 : : ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > mxTableStyle;
248 : : };
249 : :
250 : : void setData( const Data& rData );
251 : : void getData( Data& rData );
252 : :
253 : : Data maUndoData;
254 : : Data maRedoData;
255 : : bool mbHasRedoData;
256 : : };
257 : :
258 : : } }
259 : :
260 : : #endif
261 : :
262 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|