/// <summary>
        /// Register a new undo command. Use this method after your
        /// application has performed an operation/command that is
        /// undoable.
        /// </summary>
        /// <param name="cmd">New command to add to the manager.</param>
        public void AddUndoCommand(UndoCommand cmd)
        {
            Debug.Assert(cmd != null);
            Debug.Assert(m_undoList.Count <= m_maxUndoLevel);

            if (m_maxUndoLevel == 0)
            {
                return;
            }

            UndoInfo info = null;

            if (m_undoList.Count == m_maxUndoLevel)
            {
                // Remove the oldest entry from the undo list to make room.
                info = (UndoInfo)m_undoList[0];
                m_undoList.RemoveAt(0);
            }

            // Insert the new undoable command into the undo list.
            if (info == null)
            {
                info = new UndoInfo();
            }
            info.m_undoCommand = cmd;
            info.m_undoHandler = null;
            m_undoList.Add(info);

            // Clear the redo stack.
            ClearRedo();
        }
        /// <summary>
        /// Get the text value of the next redo command. Use this method
        /// to update the Text property of your "Redo" menu item if desired.
        /// For example, the text value for a command might be "Draw Line".
        /// This allows you to change your menu item text to "&Redo Draw Line".
        /// </summary>
        /// <returns>Text value of the next redo command.</returns>
        public string GetRedoText()
        {
            UndoCommand cmd = GetNextRedoCommand();

            if (cmd == null)
            {
                return("");
            }
            return(cmd.GetText());
        }
        /// <summary>
        /// Register a new undo command along with an undo handler. The
        /// undo handler is used to perform the actual undo or redo
        /// operation later when requested.
        /// </summary>
        /// <param name="cmd">New command to add to the manager.</param>
        /// <param name="undoHandler">Undo handler to perform the actual undo/redo operation.</param>
        public void AddUndoCommand(UndoCommand cmd, IUndoHandler undoHandler)
        {
            AddUndoCommand(cmd);

            if (m_undoList.Count > 0)
            {
                UndoInfo info = (UndoInfo)m_undoList[m_undoList.Count - 1];
                Debug.Assert(info != null);
                info.m_undoHandler = undoHandler;
                undoHandler.refreshHistory(m_undoList);
            }
        }
        /// <summary>
        /// Retrieve all of the redo commands. Useful for debugging,
        /// to analyze the contents of the redo stack.
        /// </summary>
        /// <returns>Array of commands for redo.</returns>
        public UndoCommand[] GetRedoCommands()
        {
            if (m_redoStack.Count == 0)
            {
                return(null);
            }

            UndoCommand[] cmdList = new UndoCommand[m_redoStack.Count];
            object[]      objList = m_redoStack.ToArray();
            for (int i = 0; i < objList.Length; i++)
            {
                UndoInfo info = (UndoInfo)objList[i];
                cmdList[i] = info.m_undoCommand;
            }

            return(cmdList);
        }
 void IUndoHandler.Redo(UndoCommand cmd)
 {
     if (cmd is FillRandomPointsCommand)
     {
         FillRandomPointsCommand fillPointsCmd = (FillRandomPointsCommand)cmd;
         FillPointHistory pointCmd = null;
         MapElement mapElement = fillPointsCmd.getMapElement();
         for (int i = 0; i < fillPointsCmd.getPointsCount(); i++)
         {
             pointCmd = fillPointsCmd.getPoint(i);
             //Object oldElement = pointCmd.getTileElement_Org();
             Object newElement = pointCmd.getTileElement_New();
             int tileIndex_X = pointCmd.getTileIndex_X();
             int tileIndex_Y = pointCmd.getTileIndex_Y();
             short tileLevel = pointCmd.getTileLevel();
             fillPoint(pointCmd.getMapElement(), mapBufferW, mapBufferH, zoomLevel, tileIndex_X, tileIndex_Y, tileLevel, newElement, true, pointCmd.getStageID());
         }
         if (mapElement != null && !mapElement.Equals(currentMap))
         {
             setCurrentMap(mapElement.getID());
             updateMap_Refresh();
         }
         else
         {
             this.updateMap();
         }
     }
 }
 public UndoInfo()
 {
     m_undoCommand = null;
     m_undoHandler = null;
 }
        /// <summary>
        /// Retrieve all of the redo commands. Useful for debugging,
        /// to analyze the contents of the redo stack.
        /// </summary>
        /// <returns>Array of commands for redo.</returns>
        public UndoCommand[] GetRedoCommands()
        {
            if (m_redoStack.Count == 0)
                return null;

            UndoCommand[] cmdList = new UndoCommand[m_redoStack.Count];
            object[] objList = m_redoStack.ToArray();
            for (int i = 0; i < objList.Length; i++)
            {
                UndoInfo info = (UndoInfo)objList[i];
                cmdList[i] = info.m_undoCommand;
            }

            return cmdList;
        }
        /// <summary>
        /// Register a new undo command along with an undo handler. The
        /// undo handler is used to perform the actual undo or redo
        /// operation later when requested.
        /// </summary>
        /// <param name="cmd">New command to add to the manager.</param>
        /// <param name="undoHandler">Undo handler to perform the actual undo/redo operation.</param>
        public void AddUndoCommand(UndoCommand cmd, IUndoHandler undoHandler)
        {
            AddUndoCommand(cmd);

            if (m_undoList.Count > 0)
            {
                UndoInfo info = (UndoInfo)m_undoList[m_undoList.Count - 1];
                Debug.Assert(info != null);
                info.m_undoHandler = undoHandler;
                undoHandler.refreshHistory(m_undoList);
            }
        }
        /// <summary>
        /// Register a new undo command. Use this method after your
        /// application has performed an operation/command that is
        /// undoable.
        /// </summary>
        /// <param name="cmd">New command to add to the manager.</param>
        public void AddUndoCommand(UndoCommand cmd)
        {
            Debug.Assert(cmd != null);
            Debug.Assert(m_undoList.Count <= m_maxUndoLevel);

            if (m_maxUndoLevel == 0)
                return;

            UndoInfo info = null;
            if (m_undoList.Count == m_maxUndoLevel)
            {
                // Remove the oldest entry from the undo list to make room.
                info = (UndoInfo)m_undoList[0];
                m_undoList.RemoveAt(0);
            }

            // Insert the new undoable command into the undo list.
            if (info == null)
                info = new UndoInfo();
            info.m_undoCommand = cmd;
            info.m_undoHandler = null;
            m_undoList.Add(info);

            // Clear the redo stack.
            ClearRedo();
        }
Beispiel #10
0
 public UndoInfo()
 {
     m_undoCommand = null;
     m_undoHandler = null;
 }