11d2dbeb0SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
31d2dbeb0SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
41d2dbeb0SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
51d2dbeb0SAndrew Rist  * distributed with this work for additional information
61d2dbeb0SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
71d2dbeb0SAndrew Rist  * to you under the Apache License, Version 2.0 (the
81d2dbeb0SAndrew Rist  * "License"); you may not use this file except in compliance
91d2dbeb0SAndrew Rist  * with the License.  You may obtain a copy of the License at
101d2dbeb0SAndrew Rist  *
111d2dbeb0SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
121d2dbeb0SAndrew Rist  *
131d2dbeb0SAndrew Rist  * Unless required by applicable law or agreed to in writing,
141d2dbeb0SAndrew Rist  * software distributed under the License is distributed on an
151d2dbeb0SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
161d2dbeb0SAndrew Rist  * KIND, either express or implied.  See the License for the
171d2dbeb0SAndrew Rist  * specific language governing permissions and limitations
181d2dbeb0SAndrew Rist  * under the License.
191d2dbeb0SAndrew Rist  *
201d2dbeb0SAndrew Rist  *************************************************************/
211d2dbeb0SAndrew Rist 
221d2dbeb0SAndrew Rist 
23cdf0e10cSrcweir 
2469a74367SOliver-Rainer Wittmann #ifndef IDOCUMENTCONTENTOPERATIONS_HXX_INCLUDED
2569a74367SOliver-Rainer Wittmann #define IDOCUMENTCONTENTOPERATIONS_HXX_INCLUDED
2669a74367SOliver-Rainer Wittmann 
2769a74367SOliver-Rainer Wittmann #ifndef _SAL_TYPES_H_
2869a74367SOliver-Rainer Wittmann #include <sal/types.h>
2969a74367SOliver-Rainer Wittmann #endif
3069a74367SOliver-Rainer Wittmann 
3169a74367SOliver-Rainer Wittmann class SwPaM;
3269a74367SOliver-Rainer Wittmann struct SwPosition;
3369a74367SOliver-Rainer Wittmann class SwNode;
3469a74367SOliver-Rainer Wittmann class SwNodeRange;
3569a74367SOliver-Rainer Wittmann class String;
3669a74367SOliver-Rainer Wittmann class Graphic;
3769a74367SOliver-Rainer Wittmann class SfxItemSet;
3869a74367SOliver-Rainer Wittmann class SfxPoolItem;
3969a74367SOliver-Rainer Wittmann class GraphicObject;
4069a74367SOliver-Rainer Wittmann class SdrObject;
4169a74367SOliver-Rainer Wittmann class SwFrmFmt;
4269a74367SOliver-Rainer Wittmann class SwDrawFrmFmt;
4369a74367SOliver-Rainer Wittmann class SwFlyFrmFmt;
4469a74367SOliver-Rainer Wittmann class SwNodeIndex;
4569a74367SOliver-Rainer Wittmann class SwFmtFld;
4669a74367SOliver-Rainer Wittmann 
4769a74367SOliver-Rainer Wittmann namespace utl { class TransliterationWrapper; }
4869a74367SOliver-Rainer Wittmann namespace svt { class EmbeddedObjectRef; }
4969a74367SOliver-Rainer Wittmann 
5069a74367SOliver-Rainer Wittmann /** Text operation/manipulation interface
5169a74367SOliver-Rainer Wittmann */
5269a74367SOliver-Rainer Wittmann class IDocumentContentOperations
5369a74367SOliver-Rainer Wittmann {
5469a74367SOliver-Rainer Wittmann public:
55cdf0e10cSrcweir     enum SwMoveFlags
56cdf0e10cSrcweir     {
57cdf0e10cSrcweir         DOC_MOVEDEFAULT = 0x00,
58cdf0e10cSrcweir         DOC_MOVEALLFLYS = 0x01,
59cdf0e10cSrcweir         DOC_CREATEUNDOOBJ = 0x02,
60cdf0e10cSrcweir         DOC_MOVEREDLINES = 0x04,
61cdf0e10cSrcweir         DOC_NO_DELFRMS = 0x08
62cdf0e10cSrcweir     };
63cdf0e10cSrcweir 
64cdf0e10cSrcweir     // constants for inserting text
65cdf0e10cSrcweir     enum InsertFlags
66cdf0e10cSrcweir     {   INS_DEFAULT         = 0x00 // no extras
67cdf0e10cSrcweir     ,   INS_EMPTYEXPAND     = 0x01 // expand empty hints at insert position
68cdf0e10cSrcweir     ,   INS_NOHINTEXPAND    = 0x02 // do not expand any hints at insert pos
69cdf0e10cSrcweir     ,   INS_FORCEHINTEXPAND = 0x04 // expand all hints at insert position
70cdf0e10cSrcweir     };
71cdf0e10cSrcweir 
7269a74367SOliver-Rainer Wittmann public:
73cdf0e10cSrcweir     /** Kopieren eines Bereiches im oder in ein anderes Dokument !
7469a74367SOliver-Rainer Wittmann     Die Position kann auch im Bereich liegen !!
75cdf0e10cSrcweir     */
76cdf0e10cSrcweir     virtual bool CopyRange(SwPaM&, SwPosition&, const bool bCopyAll ) const = 0;
77cdf0e10cSrcweir 
7869a74367SOliver-Rainer Wittmann     /** Loesche die Section, in der der Node steht.
79cdf0e10cSrcweir     */
8069a74367SOliver-Rainer Wittmann     virtual void DeleteSection(SwNode* pNode) = 0;
81cdf0e10cSrcweir 
82cdf0e10cSrcweir     /** loeschen eines BereichesSwFlyFrmFmt
83cdf0e10cSrcweir     */
84cdf0e10cSrcweir     virtual bool DeleteRange(SwPaM&) = 0;
85cdf0e10cSrcweir 
86cdf0e10cSrcweir     /** loeschen gesamter Absaetze
87cdf0e10cSrcweir     */
8869a74367SOliver-Rainer Wittmann     virtual bool DelFullPara(SwPaM&) = 0;
89cdf0e10cSrcweir 
90cdf0e10cSrcweir     /** complete delete of a given PaM
91cdf0e10cSrcweir 
9269a74367SOliver-Rainer Wittmann     OD 2009-08-20 #i100466#
9369a74367SOliver-Rainer Wittmann     Add optional parameter <bForceJoinNext>, default value <false>
9469a74367SOliver-Rainer Wittmann     Needed for hiding of deletion redlines
95cdf0e10cSrcweir     */
96cdf0e10cSrcweir     virtual bool DeleteAndJoin( SwPaM&,
9769a74367SOliver-Rainer Wittmann         const bool bForceJoinNext = false ) = 0;
98cdf0e10cSrcweir 
99cdf0e10cSrcweir     /** verschieben eines Bereiches
100cdf0e10cSrcweir     */
101cdf0e10cSrcweir     virtual bool MoveRange(SwPaM&, SwPosition&, SwMoveFlags) = 0;
102cdf0e10cSrcweir 
103cdf0e10cSrcweir     /** verschieben ganzer Nodes
104cdf0e10cSrcweir     */
105cdf0e10cSrcweir     virtual bool MoveNodeRange(SwNodeRange&, SwNodeIndex&, SwMoveFlags) = 0;
106cdf0e10cSrcweir 
107cdf0e10cSrcweir     /** verschieben eines Bereiches
108cdf0e10cSrcweir     */
10969a74367SOliver-Rainer Wittmann     virtual bool MoveAndJoin(SwPaM&, SwPosition&, SwMoveFlags) = 0;
110cdf0e10cSrcweir 
11169a74367SOliver-Rainer Wittmann     /** Ueberschreiben eines Strings in einem bestehenden Textnode.
112cdf0e10cSrcweir     */
11369a74367SOliver-Rainer Wittmann     virtual bool Overwrite(const SwPaM &rRg, const String& rStr) = 0;
114cdf0e10cSrcweir 
115cdf0e10cSrcweir     /** Insert string into existing text node at position rRg.Point().
116cdf0e10cSrcweir     */
117cdf0e10cSrcweir     virtual bool InsertString(const SwPaM &rRg, const String&,
11869a74367SOliver-Rainer Wittmann         const enum InsertFlags nInsertMode = INS_EMPTYEXPAND ) = 0;
119cdf0e10cSrcweir 
12069a74367SOliver-Rainer Wittmann     /** change text to Upper/Lower/Hiragana/Katagana/...
121cdf0e10cSrcweir     */
12269a74367SOliver-Rainer Wittmann     virtual void TransliterateText(const SwPaM& rPaM, utl::TransliterationWrapper&) = 0;
123cdf0e10cSrcweir 
12469a74367SOliver-Rainer Wittmann     /** Einfuegen einer Grafik, Formel. Die XXXX werden kopiert.
125cdf0e10cSrcweir     */
12669a74367SOliver-Rainer Wittmann     virtual SwFlyFrmFmt* Insert(const SwPaM &rRg, const String& rGrfName, const String& rFltName, const Graphic* pGraphic,
12769a74367SOliver-Rainer Wittmann         const SfxItemSet* pFlyAttrSet, const SfxItemSet* pGrfAttrSet, SwFrmFmt*) = 0;
128cdf0e10cSrcweir 
129cdf0e10cSrcweir     /**
130cdf0e10cSrcweir     */
13169a74367SOliver-Rainer Wittmann     virtual SwFlyFrmFmt* Insert(const SwPaM& rRg, const GraphicObject& rGrfObj,	const SfxItemSet* pFlyAttrSet,
13269a74367SOliver-Rainer Wittmann         const SfxItemSet* pGrfAttrSet, SwFrmFmt*) = 0;
133cdf0e10cSrcweir 
13469a74367SOliver-Rainer Wittmann     /** austauschen einer Grafik (mit Undo)
135cdf0e10cSrcweir     */
13669a74367SOliver-Rainer Wittmann     virtual void ReRead(SwPaM&, const String& rGrfName, const String& rFltName, const Graphic* pGraphic, const GraphicObject* pGrfObj) = 0;
137cdf0e10cSrcweir 
13869a74367SOliver-Rainer Wittmann     /** Einfuegen eines DrawObjectes. Das Object muss bereits im DrawModel
13969a74367SOliver-Rainer Wittmann     angemeldet sein.
140cdf0e10cSrcweir     */
141*5222b95bSOliver-Rainer Wittmann     virtual SwDrawFrmFmt* InsertDrawObj( const SwPaM &rRg, SdrObject& rDrawObj, const SfxItemSet& rFlyAttrSet ) = 0;
142cdf0e10cSrcweir 
14369a74367SOliver-Rainer Wittmann     /** Einfuegen von OLE-Objecten.
144cdf0e10cSrcweir     */
145cdf0e10cSrcweir     virtual SwFlyFrmFmt* Insert(const SwPaM &rRg, const svt::EmbeddedObjectRef& xObj, const SfxItemSet* pFlyAttrSet,
14669a74367SOliver-Rainer Wittmann         const SfxItemSet* pGrfAttrSet, SwFrmFmt*) = 0;
147cdf0e10cSrcweir 
14869a74367SOliver-Rainer Wittmann     virtual SwFlyFrmFmt* InsertOLE(const SwPaM &rRg, const String& rObjName, sal_Int64 nAspect, const SfxItemSet* pFlyAttrSet,
14969a74367SOliver-Rainer Wittmann         const SfxItemSet* pGrfAttrSet, SwFrmFmt*) = 0;
150cdf0e10cSrcweir 
151cdf0e10cSrcweir     /** Aufspalten eines Nodes an rPos (nur fuer den TxtNode implementiert)
152cdf0e10cSrcweir     */
15369a74367SOliver-Rainer Wittmann     virtual bool SplitNode(const SwPosition &rPos, bool bChkTableStart) = 0;
154cdf0e10cSrcweir 
155cdf0e10cSrcweir     /**
156cdf0e10cSrcweir     */
15769a74367SOliver-Rainer Wittmann     virtual bool AppendTxtNode(SwPosition& rPos) = 0;
158cdf0e10cSrcweir 
15969a74367SOliver-Rainer Wittmann     /** Ersetz einen selektierten Bereich in einem TextNode mit dem
16069a74367SOliver-Rainer Wittmann     String. Ist fuers Suchen&Ersetzen gedacht.
16169a74367SOliver-Rainer Wittmann     bRegExpRplc - ersetze Tabs (\\t) und setze den gefundenen String
16269a74367SOliver-Rainer Wittmann     ein ( nicht \& )
16369a74367SOliver-Rainer Wittmann     z.B.: Fnd: "zzz", Repl: "xx\t\\t..&..\&"
16469a74367SOliver-Rainer Wittmann     --> "xx\t<Tab>..zzz..&"
165cdf0e10cSrcweir     */
166cdf0e10cSrcweir     virtual bool ReplaceRange(SwPaM& rPam, const String& rNewStr,
16769a74367SOliver-Rainer Wittmann         const bool bRegExReplace) = 0;
168cdf0e10cSrcweir 
169cdf0e10cSrcweir     /** Einfuegen eines Attributs. Erstreckt sich rRg ueber
17069a74367SOliver-Rainer Wittmann     mehrere Nodes, wird das Attribut aufgespaltet, sofern
17169a74367SOliver-Rainer Wittmann     dieses Sinn macht. Nodes, in denen dieses Attribut keinen
17269a74367SOliver-Rainer Wittmann     Sinn macht, werden ignoriert.  In vollstaendig in der
17369a74367SOliver-Rainer Wittmann     Selektion eingeschlossenen Nodes wird das Attribut zu
17469a74367SOliver-Rainer Wittmann     harter Formatierung, in den anderen (Text-)Nodes wird das
17569a74367SOliver-Rainer Wittmann     Attribut in das Attributearray eingefuegt. Bei einem
17669a74367SOliver-Rainer Wittmann     Zeichenattribut wird ein "leerer" Hint eingefuegt,
17769a74367SOliver-Rainer Wittmann     wenn keine Selektion
17869a74367SOliver-Rainer Wittmann     vorliegt; andernfalls wird das Attribut als harte
17969a74367SOliver-Rainer Wittmann     Formatierung dem durch rRg.Start() bezeichneten Node
18069a74367SOliver-Rainer Wittmann     hinzugefuegt.  Wenn das Attribut nicht eingefuegt werden
18169a74367SOliver-Rainer Wittmann     konnte, liefert die Methode sal_False.
18269a74367SOliver-Rainer Wittmann     */
18369a74367SOliver-Rainer Wittmann     //Modify here for #119405, by chengjh, 2012-08-16
18469a74367SOliver-Rainer Wittmann     //Add a para for the char attribute exp...
18569a74367SOliver-Rainer Wittmann     virtual bool InsertPoolItem(
18669a74367SOliver-Rainer Wittmann         const SwPaM &rRg,
18769a74367SOliver-Rainer Wittmann         const SfxPoolItem&,
18869a74367SOliver-Rainer Wittmann         const sal_uInt16 nFlags,
18969a74367SOliver-Rainer Wittmann         const bool bExpandCharToPara=false ) = 0;
19069a74367SOliver-Rainer Wittmann     //End
191cdf0e10cSrcweir 
192cdf0e10cSrcweir     /**
193cdf0e10cSrcweir     */
194cdf0e10cSrcweir     virtual bool InsertItemSet (const SwPaM &rRg, const SfxItemSet&,
19569a74367SOliver-Rainer Wittmann         const sal_uInt16 nFlags) = 0;
196cdf0e10cSrcweir 
197cdf0e10cSrcweir     /** Removes any leading white space from the paragraph
198cdf0e10cSrcweir     */
199cdf0e10cSrcweir     virtual void RemoveLeadingWhiteSpace(const SwPosition & rPos ) = 0;
200cdf0e10cSrcweir 
20169a74367SOliver-Rainer Wittmann protected:
~IDocumentContentOperations()202cdf0e10cSrcweir     virtual ~IDocumentContentOperations() {};
203cdf0e10cSrcweir };
204cdf0e10cSrcweir 
205cdf0e10cSrcweir #endif // IDOCUMENTCONTENTOPERATIONS_HXX_INCLUDED
206cdf0e10cSrcweir 
207