xref: /trunk/main/svx/source/table/tableundo.hxx (revision 914d351e5f5b84e4342a86d6ab8d4aca7308b9bd)
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
10cdf0e10cSrcweir  *
11*3334a7e6SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir  *
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.
19cdf0e10cSrcweir  *
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