Update ooo320-m1
[ooovba.git] / sw / source / core / undo / unbkmk.cxx
blob6bc403478d54cdafb4e49f4d5cd70f66c2f66c54
1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: unbkmk.cxx,v $
10 * $Revision: 1.10 $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
31 // MARKER(update_precomp.py): autogen include statement, do not remove
32 #include "precompiled_sw.hxx"
35 #include "doc.hxx"
36 #include "docary.hxx"
37 #include "swundo.hxx" // fuer die UndoIds
38 #include "pam.hxx"
40 #include "undobj.hxx"
41 #include "IMark.hxx"
42 #include "rolbck.hxx"
44 #include "SwRewriter.hxx"
47 inline SwDoc& SwUndoIter::GetDoc() const { return *pAktPam->GetDoc(); }
50 SwUndoBookmark::SwUndoBookmark( SwUndoId nUndoId,
51 const ::sw::mark::IMark& rBkmk )
52 : SwUndo( nUndoId )
53 , m_pHistoryBookmark(new SwHistoryBookmark(rBkmk, true, rBkmk.IsExpanded()))
57 SwUndoBookmark::~SwUndoBookmark()
61 void SwUndoBookmark::SetInDoc( SwDoc* pDoc )
63 m_pHistoryBookmark->SetInDoc( pDoc, false );
67 void SwUndoBookmark::ResetInDoc( SwDoc* pDoc )
69 IDocumentMarkAccess* const pMarkAccess = pDoc->getIDocumentMarkAccess();
70 for (IDocumentMarkAccess::const_iterator_t ppBkmk =
71 pMarkAccess->getMarksBegin();
72 ppBkmk != pMarkAccess->getMarksEnd();
73 ++ppBkmk)
75 if ( m_pHistoryBookmark->IsEqualBookmark( **ppBkmk ) )
77 pMarkAccess->deleteMark( ppBkmk );
78 break;
83 SwRewriter SwUndoBookmark::GetRewriter() const
85 SwRewriter aResult;
87 aResult.AddRule(UNDO_ARG1, m_pHistoryBookmark->GetName());
89 return aResult;
92 //----------------------------------------------------------------------
94 SwUndoDelBookmark::SwUndoDelBookmark( const ::sw::mark::IMark& rBkmk )
95 : SwUndoBookmark( UNDO_DELBOOKMARK, rBkmk )
100 void SwUndoDelBookmark::Undo( SwUndoIter& rUndoIter )
102 SetInDoc( &rUndoIter.GetDoc() );
106 void SwUndoDelBookmark::Redo( SwUndoIter& rUndoIter )
108 ResetInDoc( &rUndoIter.GetDoc() );
112 SwUndoInsBookmark::SwUndoInsBookmark( const ::sw::mark::IMark& rBkmk )
113 : SwUndoBookmark( UNDO_INSBOOKMARK, rBkmk )
118 void SwUndoInsBookmark::Undo( SwUndoIter& rUndoIter )
120 ResetInDoc( &rUndoIter.GetDoc() );
124 void SwUndoInsBookmark::Redo( SwUndoIter& rUndoIter )
126 SetInDoc( &rUndoIter.GetDoc() );