/// <summary>
        /// Returns all the selected rows index
        /// </summary>
        /// <returns></returns>
        public virtual int[] GetRowsIndex()
        {
            RangeMergerByRows merger = new RangeMergerByRows();

            foreach (Range range in this)
            {
                merger.AddRange(range);
            }

            IList <int> indexes = merger.GetRowsIndex();

            int[] ret = new int[indexes.Count];
            indexes.CopyTo(ret, 0);

            /*foreach (int in merger.GetRowsIndex())
             * {
             *
             * }
             *
             *
             * System.Collections.ArrayList indexList = new System.Collections.ArrayList();
             *
             * for (int iRange = 0; iRange < this.Count; iRange++)
             * {
             *      for (int r = this[iRange].Start.Row; r <= this[iRange].End.Row; r++)
             *      {
             *              if (indexList.Contains(r) == false)
             *                      indexList.Add(r);
             *      }
             * }
             * int[] ret = new int[indexList.Count];
             * indexList.CopyTo(ret, 0);*/

            return(ret);
        }
Beispiel #2
0
        public void AddRange_NotMerge()
        {
            RangeMergerByRows list = new RangeMergerByRows()
                                     .AddRange(new Range(1, 1, 1, 1))
                                     .AddRange(new Range(3, 3, 3, 3));

            Assert.AreEqual(2, list.GetSelectedRowRegions(0, 1).Count);
        }
Beispiel #3
0
        public void AddRange_Merge_Intersecting()
        {
            RangeMergerByRows list = new RangeMergerByRows()
                                     .AddRange(new Range(1, 1, 1, 1))
                                     .AddRange(new Range(1, 1, 2, 2));

            Assert.AreEqual(1, list.GetSelectedRowRegions(0, 1).Count);
            Assert.AreEqual(new Range(1, 0, 2, 1), list.GetSelectedRowRegions(0, 1)[0]);
        }
Beispiel #4
0
        public void AddRange_Merge_Overlaping()
        {
            RangeMergerByRows list = new RangeMergerByRows()
                                     .AddRange(new Range(1, 1, 5, 1))
                                     .AddRange(new Range(3, 1, 8, 1));

            Assert.AreEqual(1, list.GetSelectedRowRegions(0, 1).Count);
            Assert.AreEqual(new Range(1, 0, 8, 1), list.GetSelectedRowRegions(0, 1)[0]);
        }
Beispiel #5
0
        public void RemoveRange_ResizeFromBottom()
        {
            RangeMergerByRows list = new RangeMergerByRows()
                                     .AddRange(new Range(1, 1, 2, 1))
                                     .RemoveRange(new Range(1, 1, 1, 1));

            Assert.AreEqual(1, list.GetSelectedRowRegions(0, 1).Count);
            Assert.AreEqual(new Range(2, 0, 2, 1), list.GetSelectedRowRegions(0, 1)[0]);
        }
Beispiel #6
0
        public void RemoveRange_SplitIntoTwo()
        {
            RangeMergerByRows list = new RangeMergerByRows()
                                     .AddRange(new Range(1, 1, 3, 1))
                                     .RemoveRange(new Range(2, 1, 2, 1));

            Assert.AreEqual(2, list.GetSelectedRowRegions(0, 1).Count);
            Assert.AreEqual(new Range(1, 0, 1, 1), list.GetSelectedRowRegions(0, 1)[0]);
            Assert.AreEqual(new Range(3, 0, 3, 1), list.GetSelectedRowRegions(0, 1)[1]);
        }
Beispiel #7
0
        public void RemoveRange_RemoveFromTopAndBottom()
        {
            RangeMergerByRows list = new RangeMergerByRows()
                                     .AddRange(new Range(1, 1, 2, 1))
                                     .AddRange(new Range(4, 1, 5, 1))
                                     .RemoveRange(new Range(2, 1, 4, 1));

            List <Range> ranges = list.GetSelectedRowRegions(0, 1);

            Assert.AreEqual(2, ranges.Count);
            Assert.AreEqual(new Range(1, 0, 1, 1), ranges[0]);
            Assert.AreEqual(new Range(5, 0, 5, 1), ranges[1]);
        }
Beispiel #8
0
        /// <summary>
        /// Returns all the selected rows index
        /// </summary>
        /// <returns></returns>
        public virtual int[] GetRowsIndex()
        {
            RangeMergerByRows merger = new RangeMergerByRows();

            foreach (Range range in this)
            {
                merger.AddRange(range);
            }

            IList <int> indexes = merger.GetRowsIndex();

            int[] ret = new int[indexes.Count];
            indexes.CopyTo(ret, 0);

            return(ret);
        }
Beispiel #9
0
        public void AddRange_Merge_WhenOverlapped()
        {
            // single addition causes to range many rows at once

            // add separate ranges
            RangeMergerByRows list = new RangeMergerByRows()
                                     .AddRange(new Range(1, 1, 1, 1))
                                     .AddRange(new Range(3, 3, 3, 3))
                                     .AddRange(new Range(5, 5, 5, 5));

            Assert.AreEqual(3, list.GetSelectedRowRegions(0, 1).Count);

            // cause them all to merge
            list.AddRange(new Range(1, 1, 5, 1));
            Assert.AreEqual(1, list.GetSelectedRowRegions(0, 1).Count);
        }