public TextSampleForm()
        {
            InitializeComponent();

            m_recorder = new TextEditor(textBox1);

            ChainManager.IniParams iniParams = new ChainManager.IniParams();
            iniParams.RecordCollection.Add(m_recorder);
            iniParams.DontRecordWhenStatusError = true;
            m_chainManager = new ChainManager(iniParams);
        }
        public MultiActorSampleForm()
        {
            InitializeComponent();

            m_textEdiorRecorder1 = new TextEditor(textBox1);
            m_textEdiorRecorder2 = new TextEditor(textBox2);

            ChainManager.IniParams param = new ChainManager.IniParams()
            {
                DontRecordWhenStatusError = true,
            };

            param.RecordCollection.Add(m_textEdiorRecorder1);
            param.RecordCollection.Add(m_textEdiorRecorder2);

            m_chainManager = new ChainManager(param);
            CheckUndoRedoStatus();
        }
        public void TestChainManager()
        {
            List<int> lst = new List<int>();

            RecorderTester trr = new RecorderTester(lst);
            ChainManager.IniParams p = new ChainManager.IniParams();
            p.RecordCollection.Add(trr);
            ChainManager cm = new ChainManager(p);

            // Start End Test
            cm.StartRecord();

            trr.Add(1);
            trr.Add(2);

            cm.EndRecord();

            List<int> result1 = new List<int> { 1, 2 };

            if (result1.SequenceEqual(lst) == false)
            {
                throw new NotImplementedException();
            }

            cm.StartRecord();

            trr.Add(3);
            trr.Add(4);

            cm.EndRecord();

            List<int> result2 = new List<int> { 1, 2, 3, 4 };

            if (result2.SequenceEqual(lst) == false)
            {
                throw new NotImplementedException();
            }

            // Undo Test
            cm.Undo();

            if (result1.SequenceEqual(lst) == false)
            {
                throw new NotImplementedException();
            }

            // Redo Test
            cm.Redo();

            if (result2.SequenceEqual(lst) == false)
            {
                throw new NotImplementedException();
            }

            // Cut Test
            cm.StartRecord();

            trr.Add(3);
            trr.Add(4);

            cm.CutRecord();

            if (result2.SequenceEqual(lst) == false)
            {
                throw new NotImplementedException();
            }

            // Rollback Test
            cm.Rollback();

            if (result1.SequenceEqual(lst) == false)
            {
                throw new NotImplementedException();
            }
        }