Exemple #1
0
        void InsertRangeCore(int index, List <RleItem <T> > rangeItems, IRleCollectionValueConverter <T> valueConverter)
        {
            int count          = rangeItems[rangeItems.Count - 1].EndIndex + 1;
            int firstItemIndex = InsertIndexRange(index, count);
            int lastItemIndex  = firstItemIndex - 1;

            if (valueConverter == null)
            {
                foreach (RleItem <T> item in rangeItems)
                {
                    lastItemIndex++;
                    items.Insert(lastItemIndex, new RleItem <T>(item.Value, item.StartIndex + index, item.EndIndex + index));
                }
            }
            else
            {
                foreach (RleItem <T> item in rangeItems)
                {
                    lastItemIndex++;
                    items.Insert(lastItemIndex, new RleItem <T>(valueConverter.Convert(item.Value), item.StartIndex + index, item.EndIndex + index));
                }
            }
            TryMergeWithNext(lastItemIndex);
            TryMergeWithPrevious(firstItemIndex);
        }
Exemple #2
0
 public UndoableRleCollectionInsertRangeHistoryItem(IDocumentModel documentModel, RleCollection <T> collection, int index, IRleCollection <T> range, IRleCollectionValueConverter <T> valueConverter)
     : base(documentModel.MainPart)
 {
     this.collection     = collection;
     this.index          = index;
     this.newRange       = range;
     this.valueConverter = valueConverter;
 }
Exemple #3
0
        public void Insert(int index, IRleCollection <T> range, IRleCollectionValueConverter <T> valueConverter)
        {
            Guard.ArgumentNotNull(range, "range");
            CheckIndexAndCount(index, range.Length);
            UndoableRleCollectionInsertRangeHistoryItem <T> historyItem = new UndoableRleCollectionInsertRangeHistoryItem <T>(DocumentModel, innerCollection, index, range, valueConverter);

            History.Add(historyItem);
            historyItem.Execute();
        }
Exemple #4
0
        public void SetRange(int startIndex, IRleCollection <T> range, IRleCollectionValueConverter <T> valueConverter)
        {
            Guard.ArgumentNotNull(range, "range");
            CheckRangeIndexes(startIndex, startIndex + range.Length - 1);
            UndoableRleCollectionSetRangeHistoryItem <T> historyItem = new UndoableRleCollectionSetRangeHistoryItem <T>(DocumentModel, innerCollection, startIndex, range, valueConverter);

            History.Add(historyItem);
            historyItem.Execute();
        }
Exemple #5
0
 public void Insert(int index, IRleCollection <T> range, IRleCollectionValueConverter <T> valueConverter)
 {
     Guard.ArgumentNotNull(range, "range");
     CheckIndexAndCount(index, range.Length);
     InsertRangeCore(index, range.Implementation.items, valueConverter);
 }
Exemple #6
0
 public void SetRange(int startIndex, IRleCollection <T> range, IRleCollectionValueConverter <T> valueConverter)
 {
     Guard.ArgumentNotNull(range, "range");
     CheckRangeIndexes(startIndex, startIndex + range.Length - 1);
     SetRangeCore(startIndex, range.Implementation.items, valueConverter);
 }