summaryrefslogtreecommitdiff
path: root/sw/source/core/inc/MarkManager.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'sw/source/core/inc/MarkManager.hxx')
-rw-r--r--sw/source/core/inc/MarkManager.hxx97
1 files changed, 97 insertions, 0 deletions
diff --git a/sw/source/core/inc/MarkManager.hxx b/sw/source/core/inc/MarkManager.hxx
new file mode 100644
index 000000000000..1a5cd1724050
--- /dev/null
+++ b/sw/source/core/inc/MarkManager.hxx
@@ -0,0 +1,97 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SW_BOOKMARK_MARKMANAGER_HXX
+#define _SW_BOOKMARK_MARKMANAGER_HXX
+
+#include <IMark.hxx>
+#include <IDocumentMarkAccess.hxx>
+
+namespace sw { namespace mark
+{
+ class MarkManager
+ : private ::boost::noncopyable
+ , virtual public IDocumentMarkAccess
+ {
+ public:
+ MarkManager(/*[in/out]*/ SwDoc& rDoc);
+
+ void dumpFieldmarks( ) const;
+
+ // IDocumentMarkAccess
+ virtual ::sw::mark::IMark* makeMark(const SwPaM& rPaM, const ::rtl::OUString& rName, IDocumentMarkAccess::MarkType eMark);
+
+ virtual sw::mark::IFieldmark* makeFieldBookmark( const SwPaM& rPaM,
+ const rtl::OUString& rName,
+ const rtl::OUString& rType);
+ virtual sw::mark::IFieldmark* makeNoTextFieldBookmark( const SwPaM& rPaM,
+ const rtl::OUString& rName,
+ const rtl::OUString& rType);
+
+ virtual ::sw::mark::IMark* getMarkForTxtNode(const SwTxtNode& rTxtNode, IDocumentMarkAccess::MarkType eMark);
+
+ virtual void repositionMark(::sw::mark::IMark* io_pMark, const SwPaM& rPaM);
+ virtual bool renameMark(::sw::mark::IMark* io_pMark, const ::rtl::OUString& rNewName);
+ virtual void correctMarksAbsolute(const SwNodeIndex& rOldNode, const SwPosition& rNewPos, const xub_StrLen nOffset);
+ virtual void correctMarksRelative(const SwNodeIndex& rOldNode, const SwPosition& rNewPos, const xub_StrLen nOffset);
+
+ virtual void deleteMarks(const SwNodeIndex& rStt, const SwNodeIndex& rEnd, ::std::vector< ::sw::mark::SaveBookmark>* pSaveBkmk, const SwIndex* pSttIdx, const SwIndex* pEndIdx);
+
+ // deleters
+ virtual void deleteMark(const const_iterator_t ppMark);
+ virtual void deleteMark(const ::sw::mark::IMark* const pMark);
+ virtual void clearAllMarks();
+
+ // marks
+ virtual const_iterator_t getMarksBegin() const;
+ virtual const_iterator_t getMarksEnd() const;
+ virtual sal_Int32 getMarksCount() const;
+ virtual const_iterator_t findMark(const ::rtl::OUString& rName) const;
+
+ // bookmarks
+ virtual const_iterator_t getBookmarksBegin() const;
+ virtual const_iterator_t getBookmarksEnd() const;
+ virtual sal_Int32 getBookmarksCount() const;
+ virtual const_iterator_t findBookmark(const ::rtl::OUString& rName) const;
+
+ // Fieldmarks
+ virtual ::sw::mark::IFieldmark* getFieldmarkFor(const SwPosition& rPos) const;
+ virtual ::sw::mark::IFieldmark* getFieldmarkBefore(const SwPosition& rPos) const;
+ virtual ::sw::mark::IFieldmark* getFieldmarkAfter(const SwPosition& rPos) const;
+
+ private:
+ // make names
+ ::rtl::OUString getUniqueMarkName(const ::rtl::OUString& rName) const;
+ void sortMarks();
+
+ container_t m_vMarks;
+ container_t m_vBookmarks;
+ container_t m_vFieldmarks;
+ SwDoc * const m_pDoc;
+ };
+}}
+#endif