1*4c5491eaSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*4c5491eaSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*4c5491eaSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*4c5491eaSAndrew Rist  * distributed with this work for additional information
6*4c5491eaSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*4c5491eaSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*4c5491eaSAndrew Rist  * "License"); you may not use this file except in compliance
9*4c5491eaSAndrew Rist  * with the License.  You may obtain a copy of the License at
10*4c5491eaSAndrew Rist  *
11*4c5491eaSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*4c5491eaSAndrew Rist  *
13*4c5491eaSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*4c5491eaSAndrew Rist  * software distributed under the License is distributed on an
15*4c5491eaSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*4c5491eaSAndrew Rist  * KIND, either express or implied.  See the License for the
17*4c5491eaSAndrew Rist  * specific language governing permissions and limitations
18*4c5491eaSAndrew Rist  * under the License.
19*4c5491eaSAndrew Rist  *
20*4c5491eaSAndrew Rist  *************************************************************/
21*4c5491eaSAndrew Rist 
22*4c5491eaSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir #ifndef _EDITUNDO_HXX
25cdf0e10cSrcweir #define _EDITUNDO_HXX
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include <editdoc.hxx>
28cdf0e10cSrcweir #include <editeng/editund2.hxx>
29cdf0e10cSrcweir #include <editeng/editdata.hxx>
30cdf0e10cSrcweir 
31cdf0e10cSrcweir #define UNDO_NOACTION			0
32cdf0e10cSrcweir #define UNDO_NEWUNDO			1
33cdf0e10cSrcweir #define UNDO_UNDOSDELETED		2
34cdf0e10cSrcweir #define UNDO_EMPTYGROUPDELETED	3
35cdf0e10cSrcweir #define UNDO_INVALIDEND			4
36cdf0e10cSrcweir 
37cdf0e10cSrcweir class ImpEditEngine;
38cdf0e10cSrcweir class EditView;
39cdf0e10cSrcweir 
40cdf0e10cSrcweir // -----------------------------------------------------------------------
41cdf0e10cSrcweir // EditUndoDelContent
42cdf0e10cSrcweir // ------------------------------------------------------------------------
43cdf0e10cSrcweir class EditUndoDelContent : public EditUndo
44cdf0e10cSrcweir {
45cdf0e10cSrcweir private:
46cdf0e10cSrcweir 	sal_Bool 			bDelObject;
47cdf0e10cSrcweir 	sal_uInt16			nNode;
48cdf0e10cSrcweir 	ContentNode* 	pContentNode;	// Zeigt auf das gueltige,
49cdf0e10cSrcweir 									// nicht zerstoerte Objekt!
50cdf0e10cSrcweir 
51cdf0e10cSrcweir public:
52cdf0e10cSrcweir 					TYPEINFO();
53cdf0e10cSrcweir 					EditUndoDelContent( ImpEditEngine* pImpEE, ContentNode* pNode, sal_uInt16 nPortio );
54cdf0e10cSrcweir 					~EditUndoDelContent();
55cdf0e10cSrcweir 
56cdf0e10cSrcweir 	virtual void 	Undo();
57cdf0e10cSrcweir 	virtual void 	Redo();
58cdf0e10cSrcweir };
59cdf0e10cSrcweir 
60cdf0e10cSrcweir // -----------------------------------------------------------------------
61cdf0e10cSrcweir // EditUndoConnectParas
62cdf0e10cSrcweir // ------------------------------------------------------------------------
63cdf0e10cSrcweir class EditUndoConnectParas : public EditUndo
64cdf0e10cSrcweir {
65cdf0e10cSrcweir private:
66cdf0e10cSrcweir 	sal_uInt16			nNode;
67cdf0e10cSrcweir 	sal_uInt16			nSepPos;
68cdf0e10cSrcweir 	SfxItemSet		aLeftParaAttribs;
69cdf0e10cSrcweir 	SfxItemSet		aRightParaAttribs;
70cdf0e10cSrcweir 
71cdf0e10cSrcweir 	// 2 Pointer waeren schoener, aber dann muesste es ein SfxListener sein.
72cdf0e10cSrcweir 	String			aLeftStyleName;
73cdf0e10cSrcweir 	String			aRightStyleName;
74cdf0e10cSrcweir 	SfxStyleFamily	eLeftStyleFamily;
75cdf0e10cSrcweir 	SfxStyleFamily	eRightStyleFamily;
76cdf0e10cSrcweir 
77cdf0e10cSrcweir 	sal_Bool			bBackward;
78cdf0e10cSrcweir 
79cdf0e10cSrcweir public:
80cdf0e10cSrcweir 					TYPEINFO();
81cdf0e10cSrcweir 					EditUndoConnectParas( ImpEditEngine* pImpEE, sal_uInt16 nNode, sal_uInt16 nSepPos,
82cdf0e10cSrcweir 											const SfxItemSet& rLeftParaAttribs, const SfxItemSet& rRightParaAttribs,
83cdf0e10cSrcweir 											const SfxStyleSheet* pLeftStyle, const SfxStyleSheet* pRightStyle, sal_Bool bBackward );
84cdf0e10cSrcweir 					~EditUndoConnectParas();
85cdf0e10cSrcweir 
86cdf0e10cSrcweir 	virtual void 	Undo();
87cdf0e10cSrcweir 	virtual void 	Redo();
88cdf0e10cSrcweir };
89cdf0e10cSrcweir 
90cdf0e10cSrcweir // -----------------------------------------------------------------------
91cdf0e10cSrcweir // EditUndoSplitPara
92cdf0e10cSrcweir // ------------------------------------------------------------------------
93cdf0e10cSrcweir class EditUndoSplitPara : public EditUndo
94cdf0e10cSrcweir {
95cdf0e10cSrcweir private:
96cdf0e10cSrcweir 	sal_uInt16			nNode;
97cdf0e10cSrcweir 	sal_uInt16			nSepPos;
98cdf0e10cSrcweir 
99cdf0e10cSrcweir public:
100cdf0e10cSrcweir 					TYPEINFO();
101cdf0e10cSrcweir 					EditUndoSplitPara( ImpEditEngine* pImpEE, sal_uInt16 nNode, sal_uInt16 nSepPos );
102cdf0e10cSrcweir 					~EditUndoSplitPara();
103cdf0e10cSrcweir 
104cdf0e10cSrcweir 	virtual void 	Undo();
105cdf0e10cSrcweir 	virtual void 	Redo();
106cdf0e10cSrcweir };
107cdf0e10cSrcweir 
108cdf0e10cSrcweir // -----------------------------------------------------------------------
109cdf0e10cSrcweir // EditUndoInsertChars
110cdf0e10cSrcweir // ------------------------------------------------------------------------
111cdf0e10cSrcweir class EditUndoInsertChars : public EditUndo
112cdf0e10cSrcweir {
113cdf0e10cSrcweir private:
114cdf0e10cSrcweir 	EPaM			aEPaM;
115cdf0e10cSrcweir 	String			aText;
116cdf0e10cSrcweir 
117cdf0e10cSrcweir public:
118cdf0e10cSrcweir 					TYPEINFO();
119cdf0e10cSrcweir 					EditUndoInsertChars( ImpEditEngine* pImpEE, const EPaM& rEPaM, const String& rStr );
120cdf0e10cSrcweir 
GetEPaM()121cdf0e10cSrcweir 	const EPaM&		GetEPaM() { return aEPaM; }
GetStr()122cdf0e10cSrcweir 	String&			GetStr() { return aText; }
123cdf0e10cSrcweir 
124cdf0e10cSrcweir 	virtual void 	Undo();
125cdf0e10cSrcweir 	virtual void 	Redo();
126cdf0e10cSrcweir 
127cdf0e10cSrcweir 	virtual sal_Bool	Merge( SfxUndoAction *pNextAction );
128cdf0e10cSrcweir };
129cdf0e10cSrcweir 
130cdf0e10cSrcweir // -----------------------------------------------------------------------
131cdf0e10cSrcweir // EditUndoRemoveChars
132cdf0e10cSrcweir // ------------------------------------------------------------------------
133cdf0e10cSrcweir class EditUndoRemoveChars : public EditUndo
134cdf0e10cSrcweir {
135cdf0e10cSrcweir private:
136cdf0e10cSrcweir 	EPaM			aEPaM;
137cdf0e10cSrcweir 	String			aText;
138cdf0e10cSrcweir 
139cdf0e10cSrcweir public:
140cdf0e10cSrcweir 					TYPEINFO();
141cdf0e10cSrcweir 					EditUndoRemoveChars( ImpEditEngine* pImpEE, const EPaM& rEPaM, const String& rStr );
142cdf0e10cSrcweir 
GetEPaM()143cdf0e10cSrcweir 	const EPaM&		GetEPaM() { return aEPaM; }
GetStr()144cdf0e10cSrcweir 	String&			GetStr() { return aText; }
145cdf0e10cSrcweir 
146cdf0e10cSrcweir 	virtual void 	Undo();
147cdf0e10cSrcweir 	virtual void 	Redo();
148cdf0e10cSrcweir };
149cdf0e10cSrcweir 
150cdf0e10cSrcweir // -----------------------------------------------------------------------
151cdf0e10cSrcweir // EditUndoInsertFeature
152cdf0e10cSrcweir // ------------------------------------------------------------------------
153cdf0e10cSrcweir class EditUndoInsertFeature : public EditUndo
154cdf0e10cSrcweir {
155cdf0e10cSrcweir private:
156cdf0e10cSrcweir 	EPaM			aEPaM;
157cdf0e10cSrcweir 	SfxPoolItem*	pFeature;
158cdf0e10cSrcweir 
159cdf0e10cSrcweir public:
160cdf0e10cSrcweir 					TYPEINFO();
161cdf0e10cSrcweir 					EditUndoInsertFeature( ImpEditEngine* pImpEE, const EPaM& rEPaM,
162cdf0e10cSrcweir 											const SfxPoolItem& rFeature);
163cdf0e10cSrcweir 					~EditUndoInsertFeature();
164cdf0e10cSrcweir 
165cdf0e10cSrcweir 	virtual void 	Undo();
166cdf0e10cSrcweir 	virtual void 	Redo();
167cdf0e10cSrcweir };
168cdf0e10cSrcweir 
169cdf0e10cSrcweir // -----------------------------------------------------------------------
170cdf0e10cSrcweir // EditUndoMoveParagraphs
171cdf0e10cSrcweir // ------------------------------------------------------------------------
172cdf0e10cSrcweir class EditUndoMoveParagraphs: public EditUndo
173cdf0e10cSrcweir {
174cdf0e10cSrcweir private:
175cdf0e10cSrcweir 	Range			nParagraphs;
176cdf0e10cSrcweir 	sal_uInt16 			nDest;
177cdf0e10cSrcweir 
178cdf0e10cSrcweir public:
179cdf0e10cSrcweir 					TYPEINFO();
180cdf0e10cSrcweir 					EditUndoMoveParagraphs( ImpEditEngine* pImpEE, const Range& rParas, sal_uInt16 nDest );
181cdf0e10cSrcweir 					~EditUndoMoveParagraphs();
182cdf0e10cSrcweir 
183cdf0e10cSrcweir 	virtual void	Undo();
184cdf0e10cSrcweir 	virtual void	Redo();
185cdf0e10cSrcweir };
186cdf0e10cSrcweir 
187cdf0e10cSrcweir // -----------------------------------------------------------------------
188cdf0e10cSrcweir // EditUndoSetStyleSheet
189cdf0e10cSrcweir // ------------------------------------------------------------------------
190cdf0e10cSrcweir class EditUndoSetStyleSheet: public EditUndo
191cdf0e10cSrcweir {
192cdf0e10cSrcweir private:
193cdf0e10cSrcweir 	sal_uInt16			nPara;
194cdf0e10cSrcweir 	XubString		aPrevName;
195cdf0e10cSrcweir 	XubString		aNewName;
196cdf0e10cSrcweir 	SfxStyleFamily	ePrevFamily;
197cdf0e10cSrcweir 	SfxStyleFamily	eNewFamily;
198cdf0e10cSrcweir 	SfxItemSet		aPrevParaAttribs;
199cdf0e10cSrcweir 
200cdf0e10cSrcweir public:
201cdf0e10cSrcweir 					TYPEINFO();
202cdf0e10cSrcweir 
203cdf0e10cSrcweir 					EditUndoSetStyleSheet( ImpEditEngine* pImpEE, sal_uInt16 nPara,
204cdf0e10cSrcweir 						const XubString& rPrevName, SfxStyleFamily ePrevFamily,
205cdf0e10cSrcweir 						const XubString& rNewName, SfxStyleFamily eNewFamily,
206cdf0e10cSrcweir 						const SfxItemSet& rPrevParaAttribs );
207cdf0e10cSrcweir 					~EditUndoSetStyleSheet();
208cdf0e10cSrcweir 
209cdf0e10cSrcweir 	virtual void	Undo();
210cdf0e10cSrcweir 	virtual void	Redo();
211cdf0e10cSrcweir };
212cdf0e10cSrcweir 
213cdf0e10cSrcweir // -----------------------------------------------------------------------
214cdf0e10cSrcweir // EditUndoSetParaAttribs
215cdf0e10cSrcweir // ------------------------------------------------------------------------
216cdf0e10cSrcweir class EditUndoSetParaAttribs: public EditUndo
217cdf0e10cSrcweir {
218cdf0e10cSrcweir private:
219cdf0e10cSrcweir 	sal_uInt16			nPara;
220cdf0e10cSrcweir 	SfxItemSet		aPrevItems;
221cdf0e10cSrcweir 	SfxItemSet		aNewItems;
222cdf0e10cSrcweir 
223cdf0e10cSrcweir public:
224cdf0e10cSrcweir 					TYPEINFO();
225cdf0e10cSrcweir 					EditUndoSetParaAttribs( ImpEditEngine* pImpEE, sal_uInt16 nPara, const SfxItemSet& rPrevItems, const SfxItemSet& rNewItems );
226cdf0e10cSrcweir 					~EditUndoSetParaAttribs();
227cdf0e10cSrcweir 
228cdf0e10cSrcweir 	virtual void	Undo();
229cdf0e10cSrcweir 	virtual void	Redo();
230cdf0e10cSrcweir };
231cdf0e10cSrcweir 
232cdf0e10cSrcweir // -----------------------------------------------------------------------
233cdf0e10cSrcweir // EditUndoSetAttribs
234cdf0e10cSrcweir // ------------------------------------------------------------------------
235cdf0e10cSrcweir class EditUndoSetAttribs: public EditUndo
236cdf0e10cSrcweir {
237cdf0e10cSrcweir private:
238cdf0e10cSrcweir 	ESelection			aESel;
239cdf0e10cSrcweir 	SfxItemSet			aNewAttribs;
240cdf0e10cSrcweir 	ContentInfoArray	aPrevAttribs;
241cdf0e10cSrcweir 
242cdf0e10cSrcweir 	sal_uInt8				nSpecial;
243cdf0e10cSrcweir 	sal_Bool				bSetIsRemove;
244cdf0e10cSrcweir 	sal_Bool				bRemoveParaAttribs;
245cdf0e10cSrcweir 	sal_uInt16				nRemoveWhich;
246cdf0e10cSrcweir 
247cdf0e10cSrcweir 	void				ImpSetSelection( EditView* pView );
248cdf0e10cSrcweir 
249cdf0e10cSrcweir 
250cdf0e10cSrcweir public:
251cdf0e10cSrcweir 						TYPEINFO();
252cdf0e10cSrcweir 						EditUndoSetAttribs( ImpEditEngine* pImpEE, const ESelection& rESel, const SfxItemSet& rNewItems );
253cdf0e10cSrcweir 						~EditUndoSetAttribs();
254cdf0e10cSrcweir 
GetContentInfos()255cdf0e10cSrcweir 	ContentInfoArray&	GetContentInfos()	{ return aPrevAttribs; }
GetNewAttribs()256cdf0e10cSrcweir 	SfxItemSet&			GetNewAttribs()		{ return aNewAttribs; }
257cdf0e10cSrcweir 
SetSpecial(sal_uInt8 n)258cdf0e10cSrcweir 	void				SetSpecial( sal_uInt8 n ) 			{ nSpecial = n; }
SetRemoveAttribs(sal_Bool b)259cdf0e10cSrcweir 	void				SetRemoveAttribs( sal_Bool b ) 		{ bSetIsRemove = b; }
SetRemoveParaAttribs(sal_Bool b)260cdf0e10cSrcweir 	void				SetRemoveParaAttribs( sal_Bool b )	{ bRemoveParaAttribs = b; }
SetRemoveWhich(sal_uInt16 n)261cdf0e10cSrcweir 	void				SetRemoveWhich( sal_uInt16 n )		{ nRemoveWhich = n; }
262cdf0e10cSrcweir 
263cdf0e10cSrcweir 	virtual void		Undo();
264cdf0e10cSrcweir 	virtual void		Redo();
265cdf0e10cSrcweir };
266cdf0e10cSrcweir 
267cdf0e10cSrcweir // -----------------------------------------------------------------------
268cdf0e10cSrcweir // EditUndoTransliteration
269cdf0e10cSrcweir // ------------------------------------------------------------------------
270cdf0e10cSrcweir class EditUndoTransliteration: public EditUndo
271cdf0e10cSrcweir {
272cdf0e10cSrcweir private:
273cdf0e10cSrcweir 	ESelection			aOldESel;
274cdf0e10cSrcweir 	ESelection			aNewESel;
275cdf0e10cSrcweir 
276cdf0e10cSrcweir 	sal_Int32			nMode;
277cdf0e10cSrcweir 	EditTextObject*		pTxtObj;
278cdf0e10cSrcweir 	String				aText;
279cdf0e10cSrcweir 
280cdf0e10cSrcweir public:
281cdf0e10cSrcweir 						TYPEINFO();
282cdf0e10cSrcweir 						EditUndoTransliteration( ImpEditEngine* pImpEE, const ESelection& rESel, sal_Int32 nMode );
283cdf0e10cSrcweir 						~EditUndoTransliteration();
284cdf0e10cSrcweir 
SetText(const String & rText)285cdf0e10cSrcweir 	void				SetText( const String& rText ) { aText = rText; }
SetText(EditTextObject * pObj)286cdf0e10cSrcweir 	void				SetText( EditTextObject* pObj ) { pTxtObj = pObj; }
SetNewSelection(const ESelection & rSel)287cdf0e10cSrcweir 	void				SetNewSelection( const ESelection& rSel ) { aNewESel = rSel; }
288cdf0e10cSrcweir 
289cdf0e10cSrcweir 	virtual void		Undo();
290cdf0e10cSrcweir 	virtual void		Redo();
291cdf0e10cSrcweir };
292cdf0e10cSrcweir 
293cdf0e10cSrcweir // -----------------------------------------------------------------------
294cdf0e10cSrcweir // EditUndoMarkSelection
295cdf0e10cSrcweir // ------------------------------------------------------------------------
296cdf0e10cSrcweir class EditUndoMarkSelection: public EditUndo
297cdf0e10cSrcweir {
298cdf0e10cSrcweir private:
299cdf0e10cSrcweir 	ESelection		aSelection;
300cdf0e10cSrcweir 
301cdf0e10cSrcweir public:
302cdf0e10cSrcweir 					TYPEINFO();
303cdf0e10cSrcweir 					EditUndoMarkSelection( ImpEditEngine* pImpEE, const ESelection& rSel );
304cdf0e10cSrcweir 					~EditUndoMarkSelection();
305cdf0e10cSrcweir 
306cdf0e10cSrcweir 	virtual void	Undo();
307cdf0e10cSrcweir 	virtual void	Redo();
308cdf0e10cSrcweir };
309cdf0e10cSrcweir 
310cdf0e10cSrcweir 
311cdf0e10cSrcweir #endif // _EDITUNDO_HXX
312