xref: /trunk/main/dbaccess/source/ui/querydesign/QueryDesignFieldUndoAct.hxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 #ifndef DBAUI_QUERYDESIGNFIELDUNDOACT_HXX
28 #define DBAUI_QUERYDESIGNFIELDUNDOACT_HXX
29 
30 #ifndef DBAUI_GENERALUNDO_HXX
31 #include "GeneralUndo.hxx"
32 #endif
33 #ifndef _DBU_QRY_HRC_
34 #include "dbu_qry.hrc"
35 #endif
36 #ifndef DBAUI_QUERYDESIGN_OSELECTIONBROWSEBOX_HXX
37 #include "SelectionBrowseBox.hxx"
38 #endif
39 
40 
41 namespace dbaui
42 {
43     // ================================================================================================
44     // OQueryDesignFieldUndoAct - Basisklasse fuer Undos in der Feldauflistung im Abfrageentwurf
45 
46 
47     class OQueryDesignFieldUndoAct : public OCommentUndoAction
48     {
49     protected:
50         OSelectionBrowseBox*    pOwner;
51         sal_uInt16                  m_nColumnPostion;
52 
53         virtual void    Undo() = 0;
54         virtual void    Redo() = 0;
55 
56     public:
57         OQueryDesignFieldUndoAct(OSelectionBrowseBox* pSelBrwBox, sal_uInt16 nCommentID);
58         virtual ~OQueryDesignFieldUndoAct();
59 
60         inline void SetColumnPosition(sal_uInt16 _nColumnPostion)
61         {
62             m_nColumnPostion = _nColumnPostion;
63             OSL_ENSURE(m_nColumnPostion != BROWSER_INVALIDID,"Column position was not set add the undo action!");
64             OSL_ENSURE(m_nColumnPostion < pOwner->GetColumnCount(),"Position outside the column count!");
65         }
66     };
67 
68     // ================================================================================================
69     // OTabFieldCellModifiedUndoAct - Undo-Klasse fuer Aendern einer Zelle einer Spaltenbeschreibung
70 
71     class OTabFieldCellModifiedUndoAct : public OQueryDesignFieldUndoAct
72     {
73     protected:
74         String      m_strNextCellContents;
75         sal_Int32   m_nCellIndex;
76 
77     public:
78         OTabFieldCellModifiedUndoAct(OSelectionBrowseBox* pSelBrwBox)
79             : OQueryDesignFieldUndoAct(pSelBrwBox, STR_QUERY_UNDO_MODIFY_CELL)
80             ,m_nCellIndex(BROWSER_INVALIDID){ }
81 
82         inline void SetCellContents(const String& str)  { m_strNextCellContents = str; }
83         inline void SetCellIndex(sal_Int32 nIndex)      { m_nCellIndex = nIndex; }
84 
85         virtual void Undo();
86         virtual void Redo() { Undo(); }
87     };
88 
89     // ================================================================================================
90     // OTabFieldSizedUndoAct - Undo-Klasse fuer Aendern einer Spaltenbreite
91 
92     class OTabFieldSizedUndoAct : public OQueryDesignFieldUndoAct
93     {
94     protected:
95         long        m_nNextWidth;
96 
97     public:
98         OTabFieldSizedUndoAct(OSelectionBrowseBox* pSelBrwBox) : OQueryDesignFieldUndoAct(pSelBrwBox, STR_QUERY_UNDO_SIZE_COLUMN), m_nNextWidth(0) { }
99 
100         inline void SetOriginalWidth(long nWidth) { m_nNextWidth = nWidth; }
101 
102         virtual void Undo();
103         virtual void Redo() { Undo(); }
104     };
105 
106     // ================================================================================================
107     // OTabFieldUndoAct - Basisklasse fuer Undos in der Feldauflistung im Abfrageentwurf, die mit Veraendern einer kompletten Feldbeschreibung zu tun haben
108 
109     class OTabFieldUndoAct : public OQueryDesignFieldUndoAct
110     {
111     protected:
112         OTableFieldDescRef      pDescr;     // geloeschte Spaltenbeschreibung
113 
114     public:
115         OTabFieldUndoAct(OSelectionBrowseBox* pSelBrwBox, sal_uInt16 nCommentID) : OQueryDesignFieldUndoAct(pSelBrwBox, nCommentID) { }
116 
117         void SetTabFieldDescr(OTableFieldDescRef pDescription) { pDescr = pDescription; }
118     };
119 
120     // ================================================================================================
121     // OTabFieldDelUndoAct - Undo-Klasse fuer Loeschen eines Feldes
122 
123     class OTabFieldDelUndoAct : public OTabFieldUndoAct
124     {
125     protected:
126         virtual void Undo() { pOwner->EnterUndoMode();pOwner->InsertColumn(pDescr, m_nColumnPostion);pOwner->LeaveUndoMode(); }
127         virtual void Redo() { pOwner->EnterUndoMode();pOwner->RemoveColumn(pDescr->GetColumnId());pOwner->LeaveUndoMode(); }
128 
129     public:
130         OTabFieldDelUndoAct(OSelectionBrowseBox* pSelBrwBox) : OTabFieldUndoAct(pSelBrwBox, STR_QUERY_UNDO_TABFIELDDELETE) { }
131     };
132 
133     // ================================================================================================
134     // OTabFieldDelUndoAct - Undo-Klasse fuer Anlegen eines Feldes
135 
136     class OTabFieldCreateUndoAct : public OTabFieldUndoAct
137     {
138     protected:
139         virtual void Undo() { pOwner->EnterUndoMode();pOwner->RemoveColumn(pDescr->GetColumnId());pOwner->LeaveUndoMode();}
140         virtual void Redo() { pOwner->EnterUndoMode();pOwner->InsertColumn(pDescr, m_nColumnPostion);pOwner->LeaveUndoMode();}
141 
142     public:
143         OTabFieldCreateUndoAct(OSelectionBrowseBox* pSelBrwBox) : OTabFieldUndoAct(pSelBrwBox, STR_QUERY_UNDO_TABFIELDCREATE) { }
144     };
145 
146     // ================================================================================================
147     // OTabFieldMovedUndoAct - Undo-class when a field was moved inside the selection
148 
149     class OTabFieldMovedUndoAct : public OTabFieldUndoAct
150     {
151     protected:
152         virtual void Undo();
153         virtual void Redo()
154         {
155             Undo();
156         }
157 
158     public:
159         OTabFieldMovedUndoAct(OSelectionBrowseBox* pSelBrwBox) : OTabFieldUndoAct(pSelBrwBox, STR_QUERY_UNDO_TABFIELDMOVED) { }
160     };
161 }
162 #endif // DBAUI_QUERYDESIGNFIELDUNDOACT_HXX
163 
164 
165 
166