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