public void MoveUp(IDataReplacer replacer)
        {
            if (replacer == null)
            {
                return;
            }

            var prev2 = GetPrevious(replacer);
            var prev1 = GetPrevious(prev2);
            var next  = replacer.NextReplacer;

            if (prev2 != null)
            {
                prev2.NextReplacer    = next;
                replacer.NextReplacer = prev2;

                if (prev1 != null)
                {
                    prev1.NextReplacer = replacer;
                }

                if (Root == prev2)
                {
                    Root = replacer;
                }
            }
        }
        public void MoveDown(IDataReplacer replacer)
        {
            if (replacer == null)
            {
                return;
            }

            var next1 = replacer.NextReplacer;
            var next2 = next1?.NextReplacer ?? null;
            var prev  = GetPrevious(replacer);

            replacer.NextReplacer = next2;

            if (next1 != null)
            {
                next1.NextReplacer = replacer;

                if (Root == replacer)
                {
                    Root = next1;
                }

                if (prev != null)
                {
                    prev.NextReplacer = next1;
                }
            }
        }
        public void Test_Add()
        {
            var mockReplacer1 = new Mock <IDataReplacer>();
            var mockReplacer2 = new Mock <IDataReplacer>();

            IDataReplacer next1 = null, next2 = null;

            mockReplacer1.SetupSet(x => x.NextReplacer = It.IsAny <IDataReplacer>()).Callback <IDataReplacer>(value => next1 = value);
            mockReplacer1.SetupGet(x => x.NextReplacer).Returns(() => { return(next1); });

            mockReplacer2.SetupSet(x => x.NextReplacer = It.IsAny <IDataReplacer>()).Callback <IDataReplacer>(value => next2 = value);
            mockReplacer2.SetupGet(x => x.NextReplacer).Returns(() => { return(next2); });

            var chain = new ReplacerChain();

            chain.Add(mockReplacer1.Object);
            Assert.Equal(mockReplacer1.Object, chain.Root);
            Assert.Null(next1);
            Assert.Null(next2);

            chain.Add(mockReplacer2.Object);
            Assert.Equal(mockReplacer1.Object, chain.Root);
            Assert.Equal(mockReplacer2.Object, next1);
            Assert.Null(next2);
        }
示例#4
0
        private void SelectReplacer(IDataReplacer replacer)
        {
            var row = gridReplacers.Rows
                      .Cast <DataGridViewRow>()
                      .Where(x => ((ReplacerItem)x.DataBoundItem).Replacer == replacer)
                      .FirstOrDefault();

            gridReplacers.ClearSelection();
            if (row != null)
            {
                row.Selected = true;
                gridReplacers.CurrentCell = row.Cells[0];
            }
        }
        public void Add(IDataReplacer replacer)
        {
            if (replacer == null)
            {
                return;
            }

            var last = Last;

            if (last != null)
            {
                last.NextReplacer = replacer;
            }
            else
            {
                Root = replacer;
            }
        }
        public IDataReplacer GetPrevious(IDataReplacer replacer)
        {
            var current = Root;

            if (current == null || replacer == null)
            {
                return(null);
            }

            while (current != null)
            {
                if (current.NextReplacer == replacer)
                {
                    return(current);
                }

                current = current.NextReplacer;
            }
            return(null);
        }
        public void Remove(IDataReplacer replacer)
        {
            if (replacer == null)
            {
                return;
            }

            var next = replacer.NextReplacer;

            replacer.NextReplacer = null;

            var prev = GetPrevious(replacer);

            if (prev != null)
            {
                prev.NextReplacer = next;
            }
            else
            {
                Root = next;
            }
        }
 public IDataReplacer GetNext(IDataReplacer replacer)
 {
     return(replacer?.NextReplacer ?? null);
 }