1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 #ifndef DBAUI_QUERYDESIGNFIELDUNDOACT_HXX
24 #define DBAUI_QUERYDESIGNFIELDUNDOACT_HXX
25 
26 #ifndef DBAUI_GENERALUNDO_HXX
27 #include "GeneralUndo.hxx"
28 #endif
29 #ifndef _DBU_QRY_HRC_
30 #include "dbu_qry.hrc"
31 #endif
32 #ifndef DBAUI_QUERYDESIGN_OSELECTIONBROWSEBOX_HXX
33 #include "SelectionBrowseBox.hxx"
34 #endif
35 
36 
37 namespace dbaui
38 {
39 	// ================================================================================================
40 	// OQueryDesignFieldUndoAct - Basisklasse fuer Undos in der Feldauflistung im Abfrageentwurf
41 
42 
43 	class OQueryDesignFieldUndoAct : public OCommentUndoAction
44 	{
45 	protected:
46 		OSelectionBrowseBox*	pOwner;
47 		sal_uInt16					m_nColumnPostion;
48 
49 		virtual void	Undo() = 0;
50 		virtual void	Redo() = 0;
51 
52 	public:
53 		OQueryDesignFieldUndoAct(OSelectionBrowseBox* pSelBrwBox, sal_uInt16 nCommentID);
54 		virtual ~OQueryDesignFieldUndoAct();
55 
SetColumnPosition(sal_uInt16 _nColumnPostion)56 		inline void SetColumnPosition(sal_uInt16 _nColumnPostion)
57 		{
58 			m_nColumnPostion = _nColumnPostion;
59 			OSL_ENSURE(m_nColumnPostion != BROWSER_INVALIDID,"Column position was not set add the undo action!");
60 			OSL_ENSURE(m_nColumnPostion < pOwner->GetColumnCount(),"Position outside the column count!");
61 		}
62 	};
63 
64 	// ================================================================================================
65 	// OTabFieldCellModifiedUndoAct - Undo-Klasse fuer Aendern einer Zelle einer Spaltenbeschreibung
66 
67 	class OTabFieldCellModifiedUndoAct : public OQueryDesignFieldUndoAct
68 	{
69 	protected:
70 		String		m_strNextCellContents;
71 		sal_Int32	m_nCellIndex;
72 
73 	public:
OTabFieldCellModifiedUndoAct(OSelectionBrowseBox * pSelBrwBox)74 		OTabFieldCellModifiedUndoAct(OSelectionBrowseBox* pSelBrwBox)
75 			: OQueryDesignFieldUndoAct(pSelBrwBox, STR_QUERY_UNDO_MODIFY_CELL)
76 			,m_nCellIndex(BROWSER_INVALIDID){ }
77 
SetCellContents(const String & str)78 		inline void SetCellContents(const String& str)	{ m_strNextCellContents = str; }
SetCellIndex(sal_Int32 nIndex)79 		inline void SetCellIndex(sal_Int32 nIndex)		{ m_nCellIndex = nIndex; }
80 
81 		virtual void Undo();
Redo()82 		virtual void Redo() { Undo(); }
83 	};
84 
85 	// ================================================================================================
86 	// OTabFieldSizedUndoAct - Undo-Klasse fuer Aendern einer Spaltenbreite
87 
88 	class OTabFieldSizedUndoAct : public OQueryDesignFieldUndoAct
89 	{
90 	protected:
91 		long		m_nNextWidth;
92 
93 	public:
OTabFieldSizedUndoAct(OSelectionBrowseBox * pSelBrwBox)94 		OTabFieldSizedUndoAct(OSelectionBrowseBox* pSelBrwBox) : OQueryDesignFieldUndoAct(pSelBrwBox, STR_QUERY_UNDO_SIZE_COLUMN), m_nNextWidth(0) { }
95 
SetOriginalWidth(long nWidth)96 		inline void SetOriginalWidth(long nWidth) { m_nNextWidth = nWidth; }
97 
98 		virtual void Undo();
Redo()99 		virtual void Redo() { Undo(); }
100 	};
101 
102 	// ================================================================================================
103 	// OTabFieldUndoAct - Basisklasse fuer Undos in der Feldauflistung im Abfrageentwurf, die mit Veraendern einer kompletten Feldbeschreibung zu tun haben
104 
105 	class OTabFieldUndoAct : public OQueryDesignFieldUndoAct
106 	{
107 	protected:
108 		OTableFieldDescRef		pDescr;		// geloeschte Spaltenbeschreibung
109 
110 	public:
OTabFieldUndoAct(OSelectionBrowseBox * pSelBrwBox,sal_uInt16 nCommentID)111 		OTabFieldUndoAct(OSelectionBrowseBox* pSelBrwBox, sal_uInt16 nCommentID) : OQueryDesignFieldUndoAct(pSelBrwBox, nCommentID) { }
112 
SetTabFieldDescr(OTableFieldDescRef pDescription)113 		void SetTabFieldDescr(OTableFieldDescRef pDescription) { pDescr = pDescription; }
114 	};
115 
116 	// ================================================================================================
117 	// OTabFieldDelUndoAct - Undo-Klasse fuer Loeschen eines Feldes
118 
119 	class OTabFieldDelUndoAct : public OTabFieldUndoAct
120 	{
121 	protected:
Undo()122 		virtual void Undo() { pOwner->EnterUndoMode();pOwner->InsertColumn(pDescr, m_nColumnPostion);pOwner->LeaveUndoMode(); }
Redo()123 		virtual void Redo() { pOwner->EnterUndoMode();pOwner->RemoveColumn(pDescr->GetColumnId());pOwner->LeaveUndoMode(); }
124 
125 	public:
OTabFieldDelUndoAct(OSelectionBrowseBox * pSelBrwBox)126 		OTabFieldDelUndoAct(OSelectionBrowseBox* pSelBrwBox) : OTabFieldUndoAct(pSelBrwBox, STR_QUERY_UNDO_TABFIELDDELETE) { }
127 	};
128 
129 	// ================================================================================================
130 	// OTabFieldDelUndoAct - Undo-Klasse fuer Anlegen eines Feldes
131 
132 	class OTabFieldCreateUndoAct : public OTabFieldUndoAct
133 	{
134 	protected:
Undo()135 		virtual void Undo() { pOwner->EnterUndoMode();pOwner->RemoveColumn(pDescr->GetColumnId());pOwner->LeaveUndoMode();}
Redo()136 		virtual void Redo() { pOwner->EnterUndoMode();pOwner->InsertColumn(pDescr, m_nColumnPostion);pOwner->LeaveUndoMode();}
137 
138 	public:
OTabFieldCreateUndoAct(OSelectionBrowseBox * pSelBrwBox)139 		OTabFieldCreateUndoAct(OSelectionBrowseBox* pSelBrwBox) : OTabFieldUndoAct(pSelBrwBox, STR_QUERY_UNDO_TABFIELDCREATE) { }
140 	};
141 
142 	// ================================================================================================
143 	// OTabFieldMovedUndoAct - Undo-class when a field was moved inside the selection
144 
145 	class OTabFieldMovedUndoAct : public OTabFieldUndoAct
146 	{
147 	protected:
148 		virtual void Undo();
Redo()149 		virtual void Redo()
150 		{
151 			Undo();
152 		}
153 
154 	public:
OTabFieldMovedUndoAct(OSelectionBrowseBox * pSelBrwBox)155 		OTabFieldMovedUndoAct(OSelectionBrowseBox* pSelBrwBox) : OTabFieldUndoAct(pSelBrwBox, STR_QUERY_UNDO_TABFIELDMOVED) { }
156 	};
157 }
158 #endif // DBAUI_QUERYDESIGNFIELDUNDOACT_HXX
159 
160 
161 
162