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