Example #1
0
        ///<summary>
        /// OffsetIndices
        ///</summary>
        ///<param name="index"></param>
        ///<param name="count"></param>
        public void OffsetIndices(int index, int count)
        {
            for (int i=0; i<_Ranges.Count; i++)
            {
                SelectedRange range = _Ranges[i];

                if (range.EndIndex >= index)
                {
                    if (range.StartIndex < index)
                    {
                        SelectedRange range2 = new SelectedRange(index, range.EndIndex);

                        range.EndIndex = index - 1;

                        _Ranges.Insert(++i, range2);
                    }
                                       
                    OffsetRanges(i, count);
                    CoalesceRanges();
                    break;
                }
            }

            ValidateRanges();
        }
Example #2
0
        ///<summary>
        /// RemoveItem
        ///</summary>
        ///<param name="index"></param>
        ///<param name="range"></param>
        ///<returns></returns>
        public void RemoveItem(int index, SelectedRange range)
        {
            if (range.StartIndex == index)
            {
                range.StartIndex++;

                if (range.StartIndex > range.EndIndex)
                    _Ranges.Remove(range);
            }
            else if (range.EndIndex == index)
            {
                range.EndIndex--;

                if (range.StartIndex > range.EndIndex)
                    _Ranges.Remove(range);
            }
            else if (range.Contains(index) == true)
            {
                int i = _Ranges.IndexOf(range);
                int endIndex = range.EndIndex;

                range.EndIndex = index - 1;

                _Ranges.Insert(i + 1,
                    new SelectedRange(index + 1, endIndex));
            }

            ValidateRanges();
        }
Example #3
0
        private void AddItem(SelectedRange range, int i, int index)
        {
            if (range.StartIndex - 1 == index)
            {
                range.StartIndex--;
            }
            else if (range.EndIndex + 1 == index)
            {
                range.EndIndex++;

                if (i + 1 < _Ranges.Count)
                {
                    if (_Ranges[i + 1].StartIndex == index + 1)
                    {
                        _Ranges[i].EndIndex = _Ranges[i + 1].EndIndex;
                        _Ranges.RemoveAt(i + 1);
                    }
                }
            }
            else if (range.Contains(index) == false)
            {
                SelectedRange selRange = new SelectedRange(index, index);

                _Ranges.Insert(i, selRange);
            }

            ValidateRanges();
        }
Example #4
0
        ///<summary>
        ///</summary>
        ///<param name="startIndex"></param>
        ///<param name="endIndex"></param>
        public void AddRange(int startIndex, int endIndex)
        {
            for (int i = 0; i < _Ranges.Count; i++)
            {
                SelectedRange range = _Ranges[i];

                if (endIndex == range.StartIndex - 1)
                {
                    range.StartIndex = startIndex;

                    if (i > 0)
                    {
                        if (_Ranges[i - 1].EndIndex + 1 == startIndex)
                        {
                            _Ranges[i - 1].EndIndex = range.EndIndex;
                            _Ranges.RemoveAt(i);
                        }
                    }

                    CoalesceRanges();
                    ValidateRanges();
                    return;
                }

                if (startIndex == range.EndIndex + 1)
                {
                    range.EndIndex = endIndex;

                    if (i + 1 < _Ranges.Count)
                    {
                        if (_Ranges[i + 1].StartIndex - 1 == endIndex)
                        {
                            range.EndIndex = _Ranges[i + 1].EndIndex;
                            _Ranges.RemoveAt(i + 1);
                        }
                    }

                    CoalesceRanges();
                    ValidateRanges();
                    return;
                }
            }

            SelectedRange selRange = null;

            for (int i = 0; i < _Ranges.Count; i++)
            {
                SelectedRange range = _Ranges[i];

                if (range.StartIndex > startIndex)
                {
                    selRange = new SelectedRange(startIndex, endIndex);
                    _Ranges.Insert(i, selRange);
                    break;
                }
            }

            if (selRange == null)
            {
                selRange = new SelectedRange(startIndex, endIndex);
                _Ranges.Add(selRange);
            }

            CoalesceRanges();
        }
Example #5
0
        ///<summary>
        /// FindRange
        ///</summary>
        ///<param name="index"></param>
        ///<param name="selRange"></param>
        ///<returns></returns>
        public bool FindRange(int index, out SelectedRange selRange)
        {
            foreach (SelectedRange range in _Ranges)
            {
                if (range.Contains(index) == true)
                {
                    selRange = range;

                    return (true);
                }
            }

            selRange = null;

            return (false);
        }