| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| #ifndef SW_UNDO_TABLE_HXX |
| #define SW_UNDO_TABLE_HXX |
| |
| #include <undobj.hxx> |
| |
| #ifndef _SVSTDARR_HXX |
| #define _SVSTDARR_USHORTS |
| #define _SVSTDARR_ULONGS |
| #define _SVSTDARR_BOOLS |
| #define _SVSTDARR_BYTES |
| #define _SVSTDARR_USHORTSSORT |
| #include <svl/svstdarr.hxx> |
| #endif |
| |
| #include <swtypes.hxx> |
| #include <itabenum.hxx> |
| |
| |
| class SfxItemSet; |
| |
| struct SwSaveRowSpan; |
| class _SaveTable; |
| class SwDDEFieldType; |
| class SwUndoSaveSections; |
| class SwUndoMoves; |
| class SwUndoDelete; |
| class SwSelBoxes; |
| class SwTblToTxtSaves; |
| class SwTable; |
| class SwTableBox; |
| class SwStartNode; |
| class SwTableNode; |
| class SwTableAutoFmt; |
| class SwTableSortBoxes; |
| |
| |
| class SwUndoInsTbl : public SwUndo |
| { |
| String sTblNm; |
| SwInsertTableOptions aInsTblOpts; |
| SwDDEFieldType* pDDEFldType; |
| SvUShorts* pColWidth; |
| SwRedlineData* pRedlData; |
| SwTableAutoFmt* pAutoFmt; |
| sal_uLong nSttNode; |
| sal_uInt16 nRows, nCols; |
| sal_uInt16 nAdjust; |
| |
| public: |
| SwUndoInsTbl( const SwPosition&, sal_uInt16 nCols, sal_uInt16 nRows, |
| sal_uInt16 eAdjust, const SwInsertTableOptions& rInsTblOpts, |
| const SwTableAutoFmt* pTAFmt, const SvUShorts* pColArr, |
| const String & rName); |
| |
| virtual ~SwUndoInsTbl(); |
| |
| virtual void UndoImpl( ::sw::UndoRedoContext & ); |
| virtual void RedoImpl( ::sw::UndoRedoContext & ); |
| virtual void RepeatImpl( ::sw::RepeatContext & ); |
| |
| virtual SwRewriter GetRewriter() const; |
| |
| }; |
| |
| class SwUndoTxtToTbl : public SwUndo, public SwUndRng |
| { |
| String sTblNm; |
| SwInsertTableOptions aInsTblOpts; |
| SvULongs* pDelBoxes; |
| SwTableAutoFmt* pAutoFmt; |
| SwHistory* pHistory; |
| sal_Unicode cTrenner; |
| sal_uInt16 nAdjust; |
| sal_Bool bSplitEnd : 1; |
| |
| public: |
| SwUndoTxtToTbl( const SwPaM&, const SwInsertTableOptions&, sal_Unicode, |
| sal_uInt16, |
| const SwTableAutoFmt* pAFmt ); |
| |
| virtual ~SwUndoTxtToTbl(); |
| |
| |
| virtual void UndoImpl( ::sw::UndoRedoContext & ); |
| virtual void RedoImpl( ::sw::UndoRedoContext & ); |
| virtual void RepeatImpl( ::sw::RepeatContext & ); |
| |
| SwHistory& GetHistory(); // will be created if necessary |
| void AddFillBox( const SwTableBox& rBox ); |
| }; |
| |
| class SwUndoTblToTxt : public SwUndo |
| { |
| String sTblNm; |
| SwDDEFieldType* pDDEFldType; |
| _SaveTable* pTblSave; |
| SwTblToTxtSaves* pBoxSaves; |
| SwHistory* pHistory; |
| sal_uLong nSttNd, nEndNd; |
| sal_uInt16 nAdjust; |
| sal_Unicode cTrenner; |
| sal_uInt16 nHdlnRpt; |
| sal_Bool bCheckNumFmt : 1; |
| |
| public: |
| SwUndoTblToTxt( const SwTable& rTbl, sal_Unicode cCh ); |
| |
| virtual ~SwUndoTblToTxt(); |
| |
| virtual void UndoImpl( ::sw::UndoRedoContext & ); |
| virtual void RedoImpl( ::sw::UndoRedoContext & ); |
| virtual void RepeatImpl( ::sw::RepeatContext & ); |
| |
| void SetRange( const SwNodeRange& ); |
| void AddBoxPos( SwDoc& rDoc, sal_uLong nNdIdx, sal_uLong nEndIdx, |
| xub_StrLen nCntntIdx = STRING_MAXLEN); |
| }; |
| |
| class SwUndoAttrTbl : public SwUndo |
| { |
| sal_uLong nSttNode; |
| _SaveTable* pSaveTbl; |
| sal_Bool bClearTabCol : 1; |
| public: |
| SwUndoAttrTbl( const SwTableNode& rTblNd, sal_Bool bClearTabCols = sal_False ); |
| |
| virtual ~SwUndoAttrTbl(); |
| |
| virtual void UndoImpl( ::sw::UndoRedoContext & ); |
| virtual void RedoImpl( ::sw::UndoRedoContext & ); |
| }; |
| |
| class SwUndoTblNumFmt; |
| |
| class SwUndoTblAutoFmt : public SwUndo |
| { |
| sal_uLong nSttNode; |
| _SaveTable* pSaveTbl; |
| ::std::vector< ::boost::shared_ptr<SwUndoTblNumFmt> > m_Undos; |
| sal_Bool bSaveCntntAttr; |
| |
| void UndoRedo(bool const bUndo, ::sw::UndoRedoContext & rContext); |
| |
| public: |
| SwUndoTblAutoFmt( const SwTableNode& rTblNd, const SwTableAutoFmt& ); |
| |
| virtual ~SwUndoTblAutoFmt(); |
| |
| virtual void UndoImpl( ::sw::UndoRedoContext & ); |
| virtual void RedoImpl( ::sw::UndoRedoContext & ); |
| |
| void SaveBoxCntnt( const SwTableBox& rBox ); |
| }; |
| |
| class SwUndoTblNdsChg : public SwUndo |
| { |
| _SaveTable* pSaveTbl; |
| SvULongs aBoxes; |
| |
| union { |
| SvULongs* pNewSttNds; |
| SwUndoSaveSections* pDelSects; |
| } Ptrs; |
| SvBools aMvBoxes; // for SplitRow (split Nodes of Box) |
| long nMin, nMax; // for redo of delete column |
| sal_uLong nSttNode, nCurrBox; |
| sal_uInt16 nCount, nRelDiff, nAbsDiff, nSetColType; |
| sal_Bool bFlag; |
| sal_Bool bSameHeight; // only used for SplitRow |
| public: |
| SwUndoTblNdsChg( SwUndoId UndoId, |
| const SwSelBoxes& rBoxes, |
| const SwTableNode& rTblNd, |
| long nMn, long nMx, |
| sal_uInt16 nCnt, sal_Bool bFlg, sal_Bool bSameHeight ); |
| |
| // for SetColWidth |
| SwUndoTblNdsChg( SwUndoId UndoId, const SwSelBoxes& rBoxes, |
| const SwTableNode& rTblNd ); |
| |
| virtual ~SwUndoTblNdsChg(); |
| |
| virtual void UndoImpl( ::sw::UndoRedoContext & ); |
| virtual void RedoImpl( ::sw::UndoRedoContext & ); |
| |
| void SaveNewBoxes( const SwTableNode& rTblNd, const SwTableSortBoxes& rOld ); |
| void SaveNewBoxes( const SwTableNode& rTblNd, const SwTableSortBoxes& rOld, |
| const SwSelBoxes& rBoxes, const SvULongs& rNodeCnts ); |
| void SaveSection( SwStartNode* pSttNd ); |
| void ReNewBoxes( const SwSelBoxes& rBoxes ); |
| |
| |
| void SetColWidthParam( sal_uLong nBoxIdx, sal_uInt16 nMode, sal_uInt16 nType, |
| SwTwips nAbsDif, SwTwips nRelDif ) |
| { |
| nCurrBox = nBoxIdx; |
| nCount = nMode; |
| nSetColType = nType; |
| nAbsDiff = (sal_uInt16)nAbsDif; |
| nRelDiff = (sal_uInt16)nRelDif; |
| } |
| |
| }; |
| |
| class SwUndoTblMerge : public SwUndo, private SwUndRng |
| { |
| sal_uLong nTblNode; |
| _SaveTable* pSaveTbl; |
| SvULongs aBoxes, aNewSttNds; |
| SwUndoMoves* pMoves; |
| SwHistory* pHistory; |
| |
| public: |
| SwUndoTblMerge( const SwPaM& rTblSel ); |
| |
| virtual ~SwUndoTblMerge(); |
| |
| virtual void UndoImpl( ::sw::UndoRedoContext & ); |
| virtual void RedoImpl( ::sw::UndoRedoContext & ); |
| |
| void MoveBoxCntnt( SwDoc* pDoc, SwNodeRange& rRg, SwNodeIndex& rPos ); |
| |
| void SetSelBoxes( const SwSelBoxes& rBoxes ); |
| |
| void AddNewBox( sal_uLong nSttNdIdx ) |
| { aNewSttNds.Insert( nSttNdIdx, aNewSttNds.Count() ); } |
| |
| void SaveCollection( const SwTableBox& rBox ); |
| |
| }; |
| |
| |
| class SwUndoTblNumFmt : public SwUndo |
| { |
| SfxItemSet *pBoxSet; |
| SwHistory* pHistory; |
| String aStr, aNewFml; |
| |
| sal_uLong nFmtIdx, nNewFmtIdx; |
| double fNum, fNewNum; |
| sal_uLong nNode; |
| sal_uLong nNdPos; |
| |
| sal_Bool bNewFmt : 1; |
| sal_Bool bNewFml : 1; |
| sal_Bool bNewValue : 1; |
| |
| public: |
| SwUndoTblNumFmt( const SwTableBox& rBox, const SfxItemSet* pNewSet = 0 ); |
| |
| virtual ~SwUndoTblNumFmt(); |
| |
| virtual void UndoImpl( ::sw::UndoRedoContext & ); |
| virtual void RedoImpl( ::sw::UndoRedoContext & ); |
| |
| void SetNumFmt( sal_uLong nNewNumFmtIdx, const double& rNewNumber ) |
| { nFmtIdx = nNewNumFmtIdx; fNum = rNewNumber; } |
| void SetBox( const SwTableBox& rBox ); |
| }; |
| |
| class _UndoTblCpyTbl_Entries; |
| |
| class SwUndoTblCpyTbl : public SwUndo |
| { |
| _UndoTblCpyTbl_Entries* pArr; |
| SwUndoTblNdsChg* pInsRowUndo; |
| |
| //b6341295: When redlining is active, PrepareRedline has to create the |
| //redlining attributes for the new and the old table cell content |
| SwUndo* PrepareRedline( SwDoc* pDoc, const SwTableBox& rBox, |
| const SwPosition& rPos, bool& rJoin, bool bRedo ); |
| public: |
| SwUndoTblCpyTbl(); |
| |
| virtual ~SwUndoTblCpyTbl(); |
| |
| virtual void UndoImpl( ::sw::UndoRedoContext & ); |
| virtual void RedoImpl( ::sw::UndoRedoContext & ); |
| |
| void AddBoxBefore( const SwTableBox& rBox, sal_Bool bDelCntnt ); |
| void AddBoxAfter( const SwTableBox& rBox, const SwNodeIndex& rIdx, |
| sal_Bool bDelCntnt ); |
| |
| sal_Bool IsEmpty() const; |
| sal_Bool InsertRow( SwTable& rTbl, const SwSelBoxes& rBoxes, sal_uInt16 nCnt ); |
| }; |
| |
| class SwUndoCpyTbl : public SwUndo |
| { |
| SwUndoDelete* pDel; |
| sal_uLong nTblNode; |
| public: |
| SwUndoCpyTbl(); |
| |
| virtual ~SwUndoCpyTbl(); |
| |
| virtual void UndoImpl( ::sw::UndoRedoContext & ); |
| virtual void RedoImpl( ::sw::UndoRedoContext & ); |
| |
| void SetTableSttIdx( sal_uLong nIdx ) { nTblNode = nIdx; } |
| }; |
| |
| class SwUndoSplitTbl : public SwUndo |
| { |
| sal_uLong nTblNode, nOffset; |
| SwSaveRowSpan* mpSaveRowSpan; // stores row span values at the splitting row |
| _SaveTable* pSavTbl; |
| SwHistory* pHistory; |
| sal_uInt16 nMode, nFmlEnd; |
| sal_Bool bCalcNewSize; |
| public: |
| SwUndoSplitTbl( const SwTableNode& rTblNd, SwSaveRowSpan* pRowSp, |
| sal_uInt16 nMode, sal_Bool bCalcNewSize ); |
| |
| virtual ~SwUndoSplitTbl(); |
| |
| virtual void UndoImpl( ::sw::UndoRedoContext & ); |
| virtual void RedoImpl( ::sw::UndoRedoContext & ); |
| virtual void RepeatImpl( ::sw::RepeatContext & ); |
| |
| void SetTblNodeOffset( sal_uLong nIdx ) { nOffset = nIdx - nTblNode; } |
| SwHistory* GetHistory() { return pHistory; } |
| void SaveFormula( SwHistory& rHistory ); |
| }; |
| |
| class SwUndoMergeTbl : public SwUndo |
| { |
| String aName; |
| sal_uLong nTblNode; |
| _SaveTable* pSavTbl, *pSavHdl; |
| SwHistory* pHistory; |
| sal_uInt16 nMode; |
| sal_Bool bWithPrev; |
| public: |
| SwUndoMergeTbl( const SwTableNode& rTblNd, const SwTableNode& rDelTblNd, |
| sal_Bool bWithPrev, sal_uInt16 nMode ); |
| |
| virtual ~SwUndoMergeTbl(); |
| |
| virtual void UndoImpl( ::sw::UndoRedoContext & ); |
| virtual void RedoImpl( ::sw::UndoRedoContext & ); |
| virtual void RepeatImpl( ::sw::RepeatContext & ); |
| |
| void SaveFormula( SwHistory& rHistory ); |
| }; |
| |
| |
| //-------------------------------------------------------------------- |
| |
| class SwUndoTblHeadline : public SwUndo |
| { |
| sal_uLong nTblNd; |
| sal_uInt16 nOldHeadline; |
| sal_uInt16 nNewHeadline; |
| public: |
| SwUndoTblHeadline( const SwTable&, sal_uInt16 nOldHdl, sal_uInt16 nNewHdl ); |
| |
| virtual void UndoImpl( ::sw::UndoRedoContext & ); |
| virtual void RedoImpl( ::sw::UndoRedoContext & ); |
| virtual void RepeatImpl( ::sw::RepeatContext & ); |
| }; |
| |
| #endif // SW_UNDO_TABLE_HXX |
| |