You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
653 lines
27 KiB
C
653 lines
27 KiB
C
2 years ago
|
// XTPFlowGraphUndoManager.h: interface for the CXTPFlowGraphUndoManager class.
|
||
|
//
|
||
|
// This file is a part of the XTREME TOOLKIT PRO MFC class library.
|
||
|
// (c)1998-2012 Codejock Software, All Rights Reserved.
|
||
|
//
|
||
|
// THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
|
||
|
// RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
|
||
|
// CONSENT OF CODEJOCK SOFTWARE.
|
||
|
//
|
||
|
// THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
|
||
|
// IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
|
||
|
// YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
|
||
|
// SINGLE COMPUTER.
|
||
|
//
|
||
|
// CONTACT INFORMATION:
|
||
|
// support@codejock.com
|
||
|
// http://www.codejock.com
|
||
|
//
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
//{{AFX_CODEJOCK_PRIVATE
|
||
|
#if !defined(__XTPFLOWGRAPHUNDOMANAGER_H__)
|
||
|
#define __XTPFLOWGRAPHUNDOMANAGER_H__
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
#if _MSC_VER > 1000
|
||
|
#pragma once
|
||
|
#endif // _MSC_VER > 1000
|
||
|
|
||
|
const int XTP_ID_FLOWGRAPHUNDO_GROUP = -1; // The undo group command.
|
||
|
const int XTP_ID_FLOWGRAPHUNDO_ADDNODE = 1003; // The undo add Node command.
|
||
|
const int XTP_ID_FLOWGRAPHUNDO_DELETENODE = 1004; // The undo delete Node command.
|
||
|
const int XTP_ID_FLOWGRAPHUNDO_SETNODEPOSITION = 1005; // The undo set Node position command.
|
||
|
const int XTP_ID_FLOWGRAPHUNDO_DELETECONNECTION= 1006; // The undo delete Connection command.
|
||
|
const int XTP_ID_FLOWGRAPHUNDO_SETCONNECTIONPOSITION = 1007; // The undo set Connection position command.
|
||
|
const int XTP_ID_FLOWGRAPHUNDO_ADDCONNECTION = 1008; // The undo add Connection command.
|
||
|
const int XTP_ID_FLOWGRAPHUNDO_SETNODECAPTION = 1009; // The set node caption command.
|
||
|
const int XTP_ID_FLOWGRAPHUNDO_SETNODESIZE = 1010; // The set node size command.
|
||
|
const int XTP_ID_FLOWGRAPHUNDO_DELETECONNECTIONPOINT = 1011;// The undo delete point command.
|
||
|
const int XTP_ID_FLOWGRAPHUNDO_ADDCONNECTIONPOINT = 1012; // The undo add point command.
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This class abstracts the undo command.
|
||
|
//-----------------------------------------------------------------------
|
||
|
class _XTP_EXT_CLASS CXTPFlowGraphUndoCommand
|
||
|
{
|
||
|
protected:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Constructor, creates a CXTPFlowGraphUndoCommand object.
|
||
|
// Parameters:
|
||
|
// nID - The command id.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPFlowGraphUndoCommand(int nID);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// CXTPFlowGraphUndoCommand destructor, does the cleanups.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual ~CXTPFlowGraphUndoCommand();
|
||
|
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to get the command id associated with this object.
|
||
|
// Returns:
|
||
|
// An integer value denoting the contained command id.
|
||
|
//-----------------------------------------------------------------------
|
||
|
int GetID() const;
|
||
|
protected:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Use this function to do the undo operation.
|
||
|
// Remarks:
|
||
|
// It a virtual function, so the derived classes can give their
|
||
|
// specific implementations
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void Undo();
|
||
|
|
||
|
protected:
|
||
|
const int m_nID; //The command id.
|
||
|
|
||
|
friend class CXTPFlowGraphUndoManager;
|
||
|
friend class CXTPFlowGraphUndoGroupCommand;
|
||
|
};
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This class abstracts the undo commands in a group.
|
||
|
//-----------------------------------------------------------------------
|
||
|
class _XTP_EXT_CLASS CXTPFlowGraphUndoGroupCommand : public CXTPFlowGraphUndoCommand
|
||
|
{
|
||
|
protected:
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Constructor, creates a CXTPFlowGraphUndoCommand object.
|
||
|
// Parameters:
|
||
|
// pManager - Pointer to the FlowGraph undo manager.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPFlowGraphUndoGroupCommand(CXTPFlowGraphUndoManager* pManager);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// CXTPFlowGraphUndoGroupCommand destructor, does the cleanups.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual ~CXTPFlowGraphUndoGroupCommand();
|
||
|
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to do the undo operation.
|
||
|
// Remarks:
|
||
|
// It a virtual function, so the derived classes can give their
|
||
|
// specific implementations
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void Undo();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to get the number of command objects in this
|
||
|
// group.
|
||
|
// Returns:
|
||
|
// An integer value denoting the number of commands in the group.
|
||
|
// specific implementations
|
||
|
//-----------------------------------------------------------------------
|
||
|
int GetCount() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to add a command to the command group.
|
||
|
// Parameters:
|
||
|
// pCommand - A pointer to the undo command object.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void Add(CXTPFlowGraphUndoCommand* pCommand);
|
||
|
|
||
|
|
||
|
protected:
|
||
|
CArray<CXTPFlowGraphUndoCommand*, CXTPFlowGraphUndoCommand*> m_arrUndoCommands; //The command collection.
|
||
|
CXTPFlowGraphUndoManager* m_pManager; //The undo manager.
|
||
|
friend class CXTPFlowGraphUndoManager;
|
||
|
|
||
|
};
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This class abstracts the undo delete Node command.This is a kind of
|
||
|
// CXTPFlowGraphUndoCommand.
|
||
|
//-----------------------------------------------------------------------
|
||
|
class _XTP_EXT_CLASS CXTPFlowGraphUndoDeleteNodeCommand : public CXTPFlowGraphUndoCommand
|
||
|
{
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Constructor, creates a CXTPFlowGraphUndoDeleteNodeCommand object.
|
||
|
// Parameters:
|
||
|
// pNode - Pointer to the FlowGraph node object.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPFlowGraphUndoDeleteNodeCommand(CXTPFlowGraphNode* pNode);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// CXTPFlowGraphUndoDeleteNodeCommand destructor, does the cleanups.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual ~CXTPFlowGraphUndoDeleteNodeCommand();
|
||
|
|
||
|
protected:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Use this function to do the undo operation.
|
||
|
// Remarks:
|
||
|
// It a virtual function, so the derived classes can give their
|
||
|
// specific implementations
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void Undo();
|
||
|
|
||
|
protected:
|
||
|
CXTPFlowGraphNode* m_pNode; //The FlowGraph Node object.
|
||
|
CXTPFlowGraphPage* m_pPage; //The FlowGraph Page object.
|
||
|
};
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This class abstracts the undo delete Commection Point command.This is a kind of
|
||
|
// CXTPFlowGraphUndoCommand.
|
||
|
//-----------------------------------------------------------------------
|
||
|
class _XTP_EXT_CLASS CXTPFlowGraphUndoDeleteConnectionPointCommand : public CXTPFlowGraphUndoCommand
|
||
|
{
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Constructor, creates a CXTPFlowGraphUndoDeleteConnectionPointCommand object.
|
||
|
// Parameters:
|
||
|
// pConnectionPoint - Pointer to the FlowGraph point object.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPFlowGraphUndoDeleteConnectionPointCommand(CXTPFlowGraphConnectionPoint* pConnectionPoint);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// CXTPFlowGraphUndoDeleteConnectionPointCommand destructor, does the cleanups.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual ~CXTPFlowGraphUndoDeleteConnectionPointCommand();
|
||
|
|
||
|
protected:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Use this function to do the undo operation.
|
||
|
// Remarks:
|
||
|
// It a virtual function, so the derived classes can give their
|
||
|
// specific implementations
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void Undo();
|
||
|
|
||
|
protected:
|
||
|
CXTPFlowGraphNode* m_pNode; //The FlowGraph Node object.
|
||
|
CXTPFlowGraphConnectionPoint* m_pConnectionPoint; //The FlowGraph Connection point object.
|
||
|
int m_nIndex;
|
||
|
};
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This class abstracts the undo delete Connection command.This is a kind of
|
||
|
// CXTPFlowGraphUndoCommand.
|
||
|
//-----------------------------------------------------------------------
|
||
|
class _XTP_EXT_CLASS CXTPFlowGraphUndoDeleteConnectionCommand : public CXTPFlowGraphUndoCommand
|
||
|
{
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Constructor, creates a CXTPFlowGraphUndoDeleteConnectionCommand object.
|
||
|
// Parameters:
|
||
|
// pNode - Pointer to the FlowGraph node object.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPFlowGraphUndoDeleteConnectionCommand(CXTPFlowGraphConnection* pConnection);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// CXTPFlowGraphUndoDeleteConnectionCommand destructor, does the cleanups.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual ~CXTPFlowGraphUndoDeleteConnectionCommand();
|
||
|
|
||
|
protected:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Use this function to do the undo operation.
|
||
|
// Remarks:
|
||
|
// It a virtual function, so the derived classes can give their
|
||
|
// specific implementations
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void Undo();
|
||
|
|
||
|
protected:
|
||
|
CXTPFlowGraphConnection* m_pConnection; //The FlowGraph Connection object.
|
||
|
CXTPFlowGraphConnectionPoint* m_pInputPoint;
|
||
|
CXTPFlowGraphConnectionPoint* m_pOutputPoint;
|
||
|
CXTPFlowGraphPage* m_pPage; //The FlowGraph Page object.
|
||
|
};
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This class abstracts the undo add Node command.This is a kind of
|
||
|
// CXTPFlowGraphUndoCommand.
|
||
|
//-----------------------------------------------------------------------
|
||
|
class _XTP_EXT_CLASS CXTPFlowGraphUndoAddNodeCommand : public CXTPFlowGraphUndoCommand
|
||
|
{
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Constructor, creates a CXTPFlowGraphUndoAddNodeCommand object.
|
||
|
// Parameters:
|
||
|
// pNode - Pointer to the FlowGraph Node object.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPFlowGraphUndoAddNodeCommand(CXTPFlowGraphNode* pNode);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// CXTPFlowGraphUndoAddNodeCommand destructor, does the cleanups.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual ~CXTPFlowGraphUndoAddNodeCommand();
|
||
|
|
||
|
protected:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Use this function to do the undo operation.
|
||
|
// Remarks:
|
||
|
// It a virtual function, so the derived classes can give their
|
||
|
// specific implementations
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void Undo();
|
||
|
|
||
|
protected:
|
||
|
CXTPFlowGraphNode* m_pNode; //Pointer to the FlowGraph Node object.
|
||
|
};
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This class abstracts the undo add Point command.This is a kind of
|
||
|
// CXTPFlowGraphUndoCommand.
|
||
|
//-----------------------------------------------------------------------
|
||
|
class _XTP_EXT_CLASS CXTPFlowGraphUndoAddConnectionPointCommand : public CXTPFlowGraphUndoCommand
|
||
|
{
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Constructor, creates a CXTPFlowGraphUndoAddConnectionPointCommand object.
|
||
|
// Parameters:
|
||
|
// pConnectionPoint - Pointer to the FlowGraph Point object.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPFlowGraphUndoAddConnectionPointCommand(CXTPFlowGraphConnectionPoint* pConnectionPoint);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// CXTPFlowGraphUndoAddConnectionPointCommand destructor, does the cleanups.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual ~CXTPFlowGraphUndoAddConnectionPointCommand();
|
||
|
|
||
|
protected:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Use this function to do the undo operation.
|
||
|
// Remarks:
|
||
|
// It a virtual function, so the derived classes can give their
|
||
|
// specific implementations
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void Undo();
|
||
|
|
||
|
protected:
|
||
|
CXTPFlowGraphConnectionPoint* m_pConnectionPoint; //Pointer to the FlowGraph Point object.
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This class abstracts the undo add Node command.This is a kind of
|
||
|
// CXTPFlowGraphUndoCommand.
|
||
|
//-----------------------------------------------------------------------
|
||
|
class _XTP_EXT_CLASS CXTPFlowGraphUndoAddConnectionCommand : public CXTPFlowGraphUndoCommand
|
||
|
{
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Constructor, creates a CXTPFlowGraphUndoAddConnectionCommand object.
|
||
|
// Parameters:
|
||
|
// pNode - Pointer to the FlowGraph Node object.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPFlowGraphUndoAddConnectionCommand(CXTPFlowGraphConnection* pConnection);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// CXTPFlowGraphUndoAddConnectionCommand destructor, does the cleanups.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual ~CXTPFlowGraphUndoAddConnectionCommand();
|
||
|
|
||
|
protected:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Use this function to do the undo operation.
|
||
|
// Remarks:
|
||
|
// It a virtual function, so the derived classes can give their
|
||
|
// specific implementations
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void Undo();
|
||
|
|
||
|
protected:
|
||
|
CXTPFlowGraphConnection* m_pConnection; //Pointer to the FlowGraph Node object.
|
||
|
};
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This class abstracts the undo set Node position command.This is a
|
||
|
// kind of CXTPFlowGraphUndoCommand.
|
||
|
//-----------------------------------------------------------------------
|
||
|
class _XTP_EXT_CLASS CXTPFlowGraphUndoSetNodePositionCommand : public CXTPFlowGraphUndoCommand
|
||
|
{
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Constructor, creates a CXTPFlowGraphUndoSetNodePositionCommand object.
|
||
|
// Parameters:
|
||
|
// pNode - Pointer to the FlowGraph Node object.
|
||
|
// nOldPosition - The old position of the Node.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPFlowGraphUndoSetNodePositionCommand(CXTPFlowGraphNode* pNode, CPoint ptOldPosition);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// CXTPFlowGraphUndoSetNodePositionCommand destructor, does the cleanups.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual ~CXTPFlowGraphUndoSetNodePositionCommand();
|
||
|
|
||
|
protected:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Use this function to do the undo operation.
|
||
|
// Remarks:
|
||
|
// It a virtual function, so the derived classes can give their
|
||
|
// specific implementations
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void Undo();
|
||
|
|
||
|
protected:
|
||
|
CXTPFlowGraphNode* m_pNode; //Pointer to the FlowGraph Node object.
|
||
|
CPoint m_ptOldPosition; //Old position of the Node.
|
||
|
};
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This class abstracts the undo set Node size command.This is a
|
||
|
// kind of CXTPFlowGraphUndoCommand.
|
||
|
//-----------------------------------------------------------------------
|
||
|
class _XTP_EXT_CLASS CXTPFlowGraphUndoSetNodeSizeCommand : public CXTPFlowGraphUndoCommand
|
||
|
{
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Constructor, creates a CXTPFlowGraphUndoSetNodeSizeCommand object.
|
||
|
// Parameters:
|
||
|
// pNode - Pointer to the FlowGraph Node object.
|
||
|
// nOldPosition - The old position of the Node.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPFlowGraphUndoSetNodeSizeCommand(CXTPFlowGraphNode* pNode, CSize szOldSize);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// CXTPFlowGraphUndoSetNodeSizeCommand destructor, does the cleanups.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual ~CXTPFlowGraphUndoSetNodeSizeCommand();
|
||
|
|
||
|
protected:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Use this function to do the undo operation.
|
||
|
// Remarks:
|
||
|
// It a virtual function, so the derived classes can give their
|
||
|
// specific implementations
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void Undo();
|
||
|
|
||
|
protected:
|
||
|
CXTPFlowGraphNode* m_pNode; //Pointer to the FlowGraph Node object.
|
||
|
CPoint m_szOldSize; //Old size of the Node.
|
||
|
};
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This class abstracts the undo set Node position command.This is a
|
||
|
// kind of CXTPFlowGraphUndoCommand.
|
||
|
//-----------------------------------------------------------------------
|
||
|
class _XTP_EXT_CLASS CXTPFlowGraphUndoSetNodeCaptionCommand : public CXTPFlowGraphUndoCommand
|
||
|
{
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Constructor, creates a CXTPFlowGraphUndoSetNodeCaptionCommand object.
|
||
|
// Parameters:
|
||
|
// pNode - Pointer to the FlowGraph Node object.
|
||
|
// strOldCaption - The old caption of the Node.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPFlowGraphUndoSetNodeCaptionCommand(CXTPFlowGraphElement* pNode, CString strOldCaption);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// CXTPFlowGraphUndoSetNodeCaptionCommand destructor, does the cleanups.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual ~CXTPFlowGraphUndoSetNodeCaptionCommand();
|
||
|
|
||
|
protected:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Use this function to do the undo operation.
|
||
|
// Remarks:
|
||
|
// It a virtual function, so the derived classes can give their
|
||
|
// specific implementations
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void Undo();
|
||
|
|
||
|
protected:
|
||
|
CXTPFlowGraphElement* m_pNode; //Pointer to the FlowGraph Node object.
|
||
|
CString m_strOldCaption; //Old position of the Node.
|
||
|
};
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This class abstracts the undo set Node position command.This is a
|
||
|
// kind of CXTPFlowGraphUndoCommand.
|
||
|
//-----------------------------------------------------------------------
|
||
|
class _XTP_EXT_CLASS CXTPFlowGraphUndoSetConnectionPositionCommand : public CXTPFlowGraphUndoCommand
|
||
|
{
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Constructor, creates a CXTPFlowGraphUndoSetConnectionPositionCommand object.
|
||
|
// Parameters:
|
||
|
// pNode - Pointer to the FlowGraph Node object.
|
||
|
// nOldPosition - The old position of the Node.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPFlowGraphUndoSetConnectionPositionCommand(CXTPFlowGraphConnection* pConnection, CPoint ptOldPosition);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// CXTPFlowGraphUndoSetNodePositionCommand destructor, does the cleanups.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual ~CXTPFlowGraphUndoSetConnectionPositionCommand();
|
||
|
|
||
|
protected:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Use this function to do the undo operation.
|
||
|
// Remarks:
|
||
|
// It a virtual function, so the derived classes can give their
|
||
|
// specific implementations
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void Undo();
|
||
|
|
||
|
protected:
|
||
|
CXTPFlowGraphConnection* m_pConnection; //Pointer to the FlowGraph Connection object.
|
||
|
CPoint m_ptOldPosition; //Old position of the Node.
|
||
|
};
|
||
|
|
||
|
|
||
|
// ---------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This class abstracts an undo manager.It manages all the undo
|
||
|
// \operations of the FlowGraph contorl.This is a kind of
|
||
|
// CXTPCmdTarget.
|
||
|
// Remarks:
|
||
|
// The FlowGraphUndoManager allows certain edit operations to be
|
||
|
// undone and re-done in the Flow Graph. Supported operations are
|
||
|
// Add/Remove/Move/Resize Nodes/Move Connector Lines/Rename
|
||
|
// Nodes/Grouping. If any of these operations are performed they can
|
||
|
// easily be undone\\re-done using the methods of the
|
||
|
// FlowGraphUndoManager.
|
||
|
//
|
||
|
// StartGroup and EndGroup are used to "group" a set of "undoable"
|
||
|
// \operations together. Grouping the operations together is useful
|
||
|
// as grouped operations can be Undone or Re-done with a single call
|
||
|
// to Undo or Redo. If the operations are not grouped you would have
|
||
|
// to call Undo or Redo for each operation performed.
|
||
|
//
|
||
|
// Any "undoable" operations performed between StartGroup and
|
||
|
// EndGroup will be undone\\re-done with a single call to Undo or
|
||
|
// Redo.
|
||
|
// ---------------------------------------------------------------------
|
||
|
class _XTP_EXT_CLASS CXTPFlowGraphUndoManager : public CXTPCmdTarget
|
||
|
{
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Constructor, creates a CXTPFlowGraphUndoManager object.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPFlowGraphUndoManager();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// CXTPFlowGraphUndoManager destructor, does the cleanups.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual ~CXTPFlowGraphUndoManager();
|
||
|
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Use this function to do the undo operation.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void Undo();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Use this function to do the redo operation.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void Redo();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to check whether the undo operation is possible
|
||
|
// at the current context.
|
||
|
// Returns:
|
||
|
// TRUE if undo is possible, FALSE else.
|
||
|
//-----------------------------------------------------------------------
|
||
|
BOOL CanUndo() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to check whether the redo operation is possible
|
||
|
// at the current context.
|
||
|
// Returns:
|
||
|
// TRUE if undo is possible, FALSE else.
|
||
|
//-----------------------------------------------------------------------
|
||
|
BOOL CanRedo() const;
|
||
|
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to clear the list of undo and redo operations.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void Clear();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Use this function to add an undo command to the collection of undo
|
||
|
// commands.
|
||
|
// Parameters:
|
||
|
// pCommand - A pointer to the FlowGraph undo command object.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void AddUndoCommand(CXTPFlowGraphUndoCommand* pCommand);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to start an undo group command.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void StartGroup();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to end an undo group command.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void EndGroup();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Use this function to enable or disable the undo manager.
|
||
|
// Parameters:
|
||
|
// bEnabled - TRUE to enable, FALSE to disable.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void EnableUndoManager(BOOL bEnabled);
|
||
|
|
||
|
protected:
|
||
|
CArray<CXTPFlowGraphUndoCommand*, CXTPFlowGraphUndoCommand*> m_arrUndoCommands; //The undo commands array.
|
||
|
CArray<CXTPFlowGraphUndoCommand*, CXTPFlowGraphUndoCommand*> m_arrRedoCommands; //The redo command array.
|
||
|
|
||
|
CArray<CXTPFlowGraphUndoGroupCommand*, CXTPFlowGraphUndoGroupCommand*> m_arrGroupStack; // The groups stack.
|
||
|
|
||
|
int m_nUndoContext; //The undo context.
|
||
|
BOOL m_bEnabled; // Specifies whether the undo manager is enabled or disabled.
|
||
|
CXTPFlowGraphUndoGroupCommand* m_pUndoGroup; //The undo group command.
|
||
|
|
||
|
|
||
|
};
|
||
|
|
||
|
AFX_INLINE int CXTPFlowGraphUndoCommand::GetID() const {
|
||
|
return m_nID;
|
||
|
}
|
||
|
AFX_INLINE void CXTPFlowGraphUndoManager::EnableUndoManager(BOOL bEnabled) {
|
||
|
m_bEnabled = bEnabled;
|
||
|
}
|
||
|
|
||
|
#endif //#if !defined(__XTPFLOWGRAPHUNDOMANAGER_H__)
|