summaryrefslogtreecommitdiff
path: root/dbaccess/source/ui/querydesign/QueryTabWinUndoAct.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'dbaccess/source/ui/querydesign/QueryTabWinUndoAct.cxx')
-rw-r--r--dbaccess/source/ui/querydesign/QueryTabWinUndoAct.cxx137
1 files changed, 137 insertions, 0 deletions
diff --git a/dbaccess/source/ui/querydesign/QueryTabWinUndoAct.cxx b/dbaccess/source/ui/querydesign/QueryTabWinUndoAct.cxx
new file mode 100644
index 000000000000..599afe015379
--- /dev/null
+++ b/dbaccess/source/ui/querydesign/QueryTabWinUndoAct.cxx
@@ -0,0 +1,137 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_dbaccess.hxx"
+#include "QueryTabWinUndoAct.hxx"
+#include <osl/diagnose.h>
+#include "QTableWindow.hxx"
+#include "QTableWindowData.hxx"
+#include "TableConnection.hxx"
+#include "TableConnectionData.hxx"
+#include "QueryDesignFieldUndoAct.hxx"
+#include "QueryTableView.hxx"
+
+
+using namespace dbaui;
+DBG_NAME(OQueryDesignFieldUndoAct)
+OQueryDesignFieldUndoAct::OQueryDesignFieldUndoAct(OSelectionBrowseBox* pSelBrwBox, sal_uInt16 nCommentID)
+ : OCommentUndoAction(nCommentID)
+ , pOwner(pSelBrwBox)
+ , m_nColumnPostion(BROWSER_INVALIDID)
+{
+ DBG_CTOR(OQueryDesignFieldUndoAct,NULL);
+}
+// -----------------------------------------------------------------------------
+OQueryDesignFieldUndoAct::~OQueryDesignFieldUndoAct()
+{
+ DBG_DTOR(OQueryDesignFieldUndoAct,NULL);
+ pOwner = NULL;
+}
+// -----------------------------------------------------------------------------
+
+DBG_NAME(OQueryTabWinUndoAct )
+// ------------------------------------------------------------------------------------------------
+OQueryTabWinUndoAct::OQueryTabWinUndoAct(OQueryTableView* pOwner, sal_uInt16 nCommentID)
+ :OQueryDesignUndoAction(pOwner, nCommentID)
+ ,m_pTabWin(NULL)
+{
+ DBG_CTOR(OQueryTabWinUndoAct ,NULL);
+}
+//==============================================================================
+OQueryTabWinUndoAct::~OQueryTabWinUndoAct()
+{
+ DBG_DTOR(OQueryTabWinUndoAct ,NULL);
+ if (m_bOwnerOfObjects)
+ { // wenn ich der alleinige Owner des Fenster bin, muss ich dafuer sorgen, dass es geloescht wird
+ OSL_ENSURE(m_pTabWin != NULL, "OQueryTabWinUndoAct::~OQueryTabWinUndoAct() : m_pTabWin sollte nicht NULL sein");
+ OSL_ENSURE(!m_pTabWin->IsVisible(), "OQueryTabWinUndoAct::~OQueryTabWinUndoAct() : *m_pTabWin sollte nicht sichtbar sein");
+
+ if ( m_pTabWin )
+ m_pTabWin->clearListBox();
+ delete m_pTabWin;
+
+ // und natuerlich auch die entsprechenden Connections
+ ::std::vector<OTableConnection*>::iterator aIter = m_vTableConnection.begin();
+ ::std::vector<OTableConnection*>::iterator aEnd = m_vTableConnection.end();
+ for(;aIter != aEnd;++aIter)
+ {
+ m_pOwner->DeselectConn(*aIter);
+ delete (*aIter);
+ }
+ m_vTableConnection.clear();
+ }
+}
+//------------------------------------------------------------------------------
+void OTabFieldCellModifiedUndoAct::Undo()
+{
+ pOwner->EnterUndoMode();
+ OSL_ENSURE(m_nColumnPostion != BROWSER_INVALIDID,"Column position was not set add the undo action!");
+ OSL_ENSURE(m_nColumnPostion < pOwner->GetColumnCount(),"Position outside the column count!");
+ if ( m_nColumnPostion != BROWSER_INVALIDID )
+ {
+ sal_uInt16 nColumnId = pOwner->GetColumnId(m_nColumnPostion);
+ String strNext = pOwner->GetCellContents(m_nCellIndex, nColumnId);
+ pOwner->SetCellContents(m_nCellIndex, nColumnId, m_strNextCellContents);
+ m_strNextCellContents = strNext;
+ }
+ pOwner->LeaveUndoMode();
+}
+
+//------------------------------------------------------------------------------
+void OTabFieldSizedUndoAct::Undo()
+{
+ pOwner->EnterUndoMode();
+ OSL_ENSURE(m_nColumnPostion != BROWSER_INVALIDID,"Column position was not set add the undo action!");
+ if ( m_nColumnPostion != BROWSER_INVALIDID )
+ {
+ sal_uInt16 nColumnId = pOwner->GetColumnId(m_nColumnPostion);
+ long nNextWidth = pOwner->GetColumnWidth(nColumnId);
+ pOwner->SetColWidth(nColumnId, m_nNextWidth);
+ m_nNextWidth = nNextWidth;
+ }
+ pOwner->LeaveUndoMode();
+}
+// -----------------------------------------------------------------------------
+void OTabFieldMovedUndoAct::Undo()
+{
+ pOwner->EnterUndoMode();
+ OSL_ENSURE(m_nColumnPostion != BROWSER_INVALIDID,"Column position was not set add the undo action!");
+ if ( m_nColumnPostion != BROWSER_INVALIDID )
+ {
+ sal_uInt16 nId = pDescr->GetColumnId();
+ sal_uInt16 nOldPos = pOwner->GetColumnPos(nId);
+ pOwner->SetColumnPos(nId,m_nColumnPostion);
+ pOwner->ColumnMoved(nId,sal_False);
+ m_nColumnPostion = nOldPos;
+ }
+ pOwner->LeaveUndoMode();
+}
+// -----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */