xref: /AOO41X/main/dbaccess/source/ui/querydesign/QueryTabWinUndoAct.cxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir 
28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
29*cdf0e10cSrcweir #include "precompiled_dbaccess.hxx"
30*cdf0e10cSrcweir #ifndef DBAUI_OQueryTabWinUndoAct_HXX
31*cdf0e10cSrcweir #include "QueryTabWinUndoAct.hxx"
32*cdf0e10cSrcweir #endif
33*cdf0e10cSrcweir #ifndef _OSL_DIAGNOSE_H_
34*cdf0e10cSrcweir #include <osl/diagnose.h>
35*cdf0e10cSrcweir #endif
36*cdf0e10cSrcweir #ifndef DBAUI_QUERY_TABLEWINDOW_HXX
37*cdf0e10cSrcweir #include "QTableWindow.hxx"
38*cdf0e10cSrcweir #endif
39*cdf0e10cSrcweir #ifndef DBAUI_QUERY_TABLEWINDOWDATA_HXX
40*cdf0e10cSrcweir #include "QTableWindowData.hxx"
41*cdf0e10cSrcweir #endif
42*cdf0e10cSrcweir #ifndef DBAUI_TABLECONNECTION_HXX
43*cdf0e10cSrcweir #include "TableConnection.hxx"
44*cdf0e10cSrcweir #endif
45*cdf0e10cSrcweir #ifndef DBAUI_TABLECONNECTIONDATA_HXX
46*cdf0e10cSrcweir #include "TableConnectionData.hxx"
47*cdf0e10cSrcweir #endif
48*cdf0e10cSrcweir #ifndef DBAUI_QUERYDESIGNFIELDUNDOACT_HXX
49*cdf0e10cSrcweir #include "QueryDesignFieldUndoAct.hxx"
50*cdf0e10cSrcweir #endif
51*cdf0e10cSrcweir #ifndef DBAUI_QUERYTABLEVIEW_HXX
52*cdf0e10cSrcweir #include "QueryTableView.hxx"
53*cdf0e10cSrcweir #endif
54*cdf0e10cSrcweir 
55*cdf0e10cSrcweir 
56*cdf0e10cSrcweir using namespace dbaui;
57*cdf0e10cSrcweir DBG_NAME(OQueryDesignFieldUndoAct)
58*cdf0e10cSrcweir OQueryDesignFieldUndoAct::OQueryDesignFieldUndoAct(OSelectionBrowseBox* pSelBrwBox, sal_uInt16 nCommentID)
59*cdf0e10cSrcweir 	: OCommentUndoAction(nCommentID)
60*cdf0e10cSrcweir 	, pOwner(pSelBrwBox)
61*cdf0e10cSrcweir 	, m_nColumnPostion(BROWSER_INVALIDID)
62*cdf0e10cSrcweir {
63*cdf0e10cSrcweir 	DBG_CTOR(OQueryDesignFieldUndoAct,NULL);
64*cdf0e10cSrcweir }
65*cdf0e10cSrcweir // -----------------------------------------------------------------------------
66*cdf0e10cSrcweir OQueryDesignFieldUndoAct::~OQueryDesignFieldUndoAct()
67*cdf0e10cSrcweir {
68*cdf0e10cSrcweir 	DBG_DTOR(OQueryDesignFieldUndoAct,NULL);
69*cdf0e10cSrcweir 	pOwner = NULL;
70*cdf0e10cSrcweir }
71*cdf0e10cSrcweir // -----------------------------------------------------------------------------
72*cdf0e10cSrcweir 
73*cdf0e10cSrcweir DBG_NAME(OQueryTabWinUndoAct )
74*cdf0e10cSrcweir // ------------------------------------------------------------------------------------------------
75*cdf0e10cSrcweir OQueryTabWinUndoAct::OQueryTabWinUndoAct(OQueryTableView* pOwner, sal_uInt16 nCommentID)
76*cdf0e10cSrcweir 	:OQueryDesignUndoAction(pOwner, nCommentID)
77*cdf0e10cSrcweir 	,m_pTabWin(NULL)
78*cdf0e10cSrcweir {
79*cdf0e10cSrcweir 	DBG_CTOR(OQueryTabWinUndoAct ,NULL);
80*cdf0e10cSrcweir }
81*cdf0e10cSrcweir //==============================================================================
82*cdf0e10cSrcweir OQueryTabWinUndoAct::~OQueryTabWinUndoAct()
83*cdf0e10cSrcweir {
84*cdf0e10cSrcweir 	DBG_DTOR(OQueryTabWinUndoAct ,NULL);
85*cdf0e10cSrcweir 	if (m_bOwnerOfObjects)
86*cdf0e10cSrcweir 	{	// wenn ich der alleinige Owner des Fenster bin, muss ich dafuer sorgen, dass es geloescht wird
87*cdf0e10cSrcweir 		OSL_ENSURE(m_pTabWin != NULL, "OQueryTabWinUndoAct::~OQueryTabWinUndoAct() : m_pTabWin sollte nicht NULL sein");
88*cdf0e10cSrcweir 		OSL_ENSURE(!m_pTabWin->IsVisible(), "OQueryTabWinUndoAct::~OQueryTabWinUndoAct() : *m_pTabWin sollte nicht sichtbar sein");
89*cdf0e10cSrcweir 
90*cdf0e10cSrcweir 		if ( m_pTabWin )
91*cdf0e10cSrcweir 			m_pTabWin->clearListBox();
92*cdf0e10cSrcweir 		delete m_pTabWin;
93*cdf0e10cSrcweir 
94*cdf0e10cSrcweir 		// und natuerlich auch die entsprechenden Connections
95*cdf0e10cSrcweir 		::std::vector<OTableConnection*>::iterator aIter = m_vTableConnection.begin();
96*cdf0e10cSrcweir         ::std::vector<OTableConnection*>::iterator aEnd = m_vTableConnection.end();
97*cdf0e10cSrcweir 		for(;aIter != aEnd;++aIter)
98*cdf0e10cSrcweir 		{
99*cdf0e10cSrcweir 			m_pOwner->DeselectConn(*aIter);
100*cdf0e10cSrcweir 			delete (*aIter);
101*cdf0e10cSrcweir 		}
102*cdf0e10cSrcweir 		m_vTableConnection.clear();
103*cdf0e10cSrcweir 	}
104*cdf0e10cSrcweir }
105*cdf0e10cSrcweir //------------------------------------------------------------------------------
106*cdf0e10cSrcweir void OTabFieldCellModifiedUndoAct::Undo()
107*cdf0e10cSrcweir {
108*cdf0e10cSrcweir 	pOwner->EnterUndoMode();
109*cdf0e10cSrcweir 	OSL_ENSURE(m_nColumnPostion != BROWSER_INVALIDID,"Column position was not set add the undo action!");
110*cdf0e10cSrcweir 	OSL_ENSURE(m_nColumnPostion < pOwner->GetColumnCount(),"Position outside the column count!");
111*cdf0e10cSrcweir 	if ( m_nColumnPostion != BROWSER_INVALIDID )
112*cdf0e10cSrcweir 	{
113*cdf0e10cSrcweir 		sal_uInt16 nColumnId = pOwner->GetColumnId(m_nColumnPostion);
114*cdf0e10cSrcweir 		String strNext = pOwner->GetCellContents(m_nCellIndex, nColumnId);
115*cdf0e10cSrcweir 		pOwner->SetCellContents(m_nCellIndex, nColumnId, m_strNextCellContents);
116*cdf0e10cSrcweir 		m_strNextCellContents = strNext;
117*cdf0e10cSrcweir 	}
118*cdf0e10cSrcweir 	pOwner->LeaveUndoMode();
119*cdf0e10cSrcweir }
120*cdf0e10cSrcweir 
121*cdf0e10cSrcweir //------------------------------------------------------------------------------
122*cdf0e10cSrcweir void OTabFieldSizedUndoAct::Undo()
123*cdf0e10cSrcweir {
124*cdf0e10cSrcweir 	pOwner->EnterUndoMode();
125*cdf0e10cSrcweir 	OSL_ENSURE(m_nColumnPostion != BROWSER_INVALIDID,"Column position was not set add the undo action!");
126*cdf0e10cSrcweir 	if ( m_nColumnPostion != BROWSER_INVALIDID )
127*cdf0e10cSrcweir 	{
128*cdf0e10cSrcweir 		sal_uInt16 nColumnId = pOwner->GetColumnId(m_nColumnPostion);
129*cdf0e10cSrcweir 		long nNextWidth = pOwner->GetColumnWidth(nColumnId);
130*cdf0e10cSrcweir 		pOwner->SetColWidth(nColumnId, m_nNextWidth);
131*cdf0e10cSrcweir 		m_nNextWidth = nNextWidth;
132*cdf0e10cSrcweir 	}
133*cdf0e10cSrcweir 	pOwner->LeaveUndoMode();
134*cdf0e10cSrcweir }
135*cdf0e10cSrcweir // -----------------------------------------------------------------------------
136*cdf0e10cSrcweir void OTabFieldMovedUndoAct::Undo()
137*cdf0e10cSrcweir {
138*cdf0e10cSrcweir 	pOwner->EnterUndoMode();
139*cdf0e10cSrcweir 	OSL_ENSURE(m_nColumnPostion != BROWSER_INVALIDID,"Column position was not set add the undo action!");
140*cdf0e10cSrcweir 	if ( m_nColumnPostion != BROWSER_INVALIDID )
141*cdf0e10cSrcweir 	{
142*cdf0e10cSrcweir 		sal_uInt16 nId = pDescr->GetColumnId();
143*cdf0e10cSrcweir 		sal_uInt16 nOldPos = pOwner->GetColumnPos(nId);
144*cdf0e10cSrcweir 		pOwner->SetColumnPos(nId,m_nColumnPostion);
145*cdf0e10cSrcweir 		pOwner->ColumnMoved(nId,sal_False);
146*cdf0e10cSrcweir 		m_nColumnPostion = nOldPos;
147*cdf0e10cSrcweir 	}
148*cdf0e10cSrcweir 	pOwner->LeaveUndoMode();
149*cdf0e10cSrcweir }
150*cdf0e10cSrcweir // -----------------------------------------------------------------------------
151*cdf0e10cSrcweir 
152*cdf0e10cSrcweir 
153*cdf0e10cSrcweir 
154*cdf0e10cSrcweir 
155*cdf0e10cSrcweir 
156