Files
libreoffice/dbaccess/source/ui/querydesign/QueryDesignFieldUndoAct.hxx
2010-10-27 12:33:13 +01:00

162 lines
6.3 KiB
C++

/* -*- 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.
*
************************************************************************/
#ifndef DBAUI_QUERYDESIGNFIELDUNDOACT_HXX
#define DBAUI_QUERYDESIGNFIELDUNDOACT_HXX
#include "GeneralUndo.hxx"
#include "dbu_qry.hrc"
#include "SelectionBrowseBox.hxx"
namespace dbaui
{
// ================================================================================================
// OQueryDesignFieldUndoAct - Basisklasse fuer Undos in der Feldauflistung im Abfrageentwurf
class OQueryDesignFieldUndoAct : public OCommentUndoAction
{
protected:
OSelectionBrowseBox* pOwner;
USHORT m_nColumnPostion;
virtual void Undo() = 0;
virtual void Redo() = 0;
public:
OQueryDesignFieldUndoAct(OSelectionBrowseBox* pSelBrwBox, USHORT nCommentID);
virtual ~OQueryDesignFieldUndoAct();
inline void SetColumnPosition(USHORT _nColumnPostion)
{
m_nColumnPostion = _nColumnPostion;
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!");
}
};
// ================================================================================================
// OTabFieldCellModifiedUndoAct - Undo-Klasse fuer Aendern einer Zelle einer Spaltenbeschreibung
class OTabFieldCellModifiedUndoAct : public OQueryDesignFieldUndoAct
{
protected:
String m_strNextCellContents;
sal_Int32 m_nCellIndex;
public:
OTabFieldCellModifiedUndoAct(OSelectionBrowseBox* pSelBrwBox)
: OQueryDesignFieldUndoAct(pSelBrwBox, STR_QUERY_UNDO_MODIFY_CELL)
,m_nCellIndex(BROWSER_INVALIDID){ }
inline void SetCellContents(const String& str) { m_strNextCellContents = str; }
inline void SetCellIndex(sal_Int32 nIndex) { m_nCellIndex = nIndex; }
virtual void Undo();
virtual void Redo() { Undo(); }
};
// ================================================================================================
// OTabFieldSizedUndoAct - Undo-Klasse fuer Aendern einer Spaltenbreite
class OTabFieldSizedUndoAct : public OQueryDesignFieldUndoAct
{
protected:
long m_nNextWidth;
public:
OTabFieldSizedUndoAct(OSelectionBrowseBox* pSelBrwBox) : OQueryDesignFieldUndoAct(pSelBrwBox, STR_QUERY_UNDO_SIZE_COLUMN), m_nNextWidth(0) { }
inline void SetOriginalWidth(long nWidth) { m_nNextWidth = nWidth; }
virtual void Undo();
virtual void Redo() { Undo(); }
};
// ================================================================================================
// OTabFieldUndoAct - Basisklasse fuer Undos in der Feldauflistung im Abfrageentwurf, die mit Veraendern einer kompletten Feldbeschreibung zu tun haben
class OTabFieldUndoAct : public OQueryDesignFieldUndoAct
{
protected:
OTableFieldDescRef pDescr; // geloeschte Spaltenbeschreibung
public:
OTabFieldUndoAct(OSelectionBrowseBox* pSelBrwBox, USHORT nCommentID) : OQueryDesignFieldUndoAct(pSelBrwBox, nCommentID) { }
void SetTabFieldDescr(OTableFieldDescRef pDescription) { pDescr = pDescription; }
};
// ================================================================================================
// OTabFieldDelUndoAct - Undo-Klasse fuer Loeschen eines Feldes
class OTabFieldDelUndoAct : public OTabFieldUndoAct
{
protected:
virtual void Undo() { pOwner->EnterUndoMode();pOwner->InsertColumn(pDescr, m_nColumnPostion);pOwner->LeaveUndoMode(); }
virtual void Redo() { pOwner->EnterUndoMode();pOwner->RemoveColumn(pDescr->GetColumnId());pOwner->LeaveUndoMode(); }
public:
OTabFieldDelUndoAct(OSelectionBrowseBox* pSelBrwBox) : OTabFieldUndoAct(pSelBrwBox, STR_QUERY_UNDO_TABFIELDDELETE) { }
};
// ================================================================================================
// OTabFieldDelUndoAct - Undo-Klasse fuer Anlegen eines Feldes
class OTabFieldCreateUndoAct : public OTabFieldUndoAct
{
protected:
virtual void Undo() { pOwner->EnterUndoMode();pOwner->RemoveColumn(pDescr->GetColumnId());pOwner->LeaveUndoMode();}
virtual void Redo() { pOwner->EnterUndoMode();pOwner->InsertColumn(pDescr, m_nColumnPostion);pOwner->LeaveUndoMode();}
public:
OTabFieldCreateUndoAct(OSelectionBrowseBox* pSelBrwBox) : OTabFieldUndoAct(pSelBrwBox, STR_QUERY_UNDO_TABFIELDCREATE) { }
};
// ================================================================================================
// OTabFieldMovedUndoAct - Undo-class when a field was moved inside the selection
class OTabFieldMovedUndoAct : public OTabFieldUndoAct
{
protected:
virtual void Undo();
virtual void Redo()
{
Undo();
}
public:
OTabFieldMovedUndoAct(OSelectionBrowseBox* pSelBrwBox) : OTabFieldUndoAct(pSelBrwBox, STR_QUERY_UNDO_TABFIELDMOVED) { }
};
}
#endif // DBAUI_QUERYDESIGNFIELDUNDOACT_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */