コード例 #1
0
        public void Paste(IListSelectionData <T> values, bool insert)
        {
            if (!CanPaste)
            {
                return;
            }

            var e = new CancelEventArgs();

            OnBeginPaste(e);
            if (e.Cancel)
            {
                return;
            }

            if (insert)
            {
                InsertSelection(values);
            }
            else
            {
                WriteSelection(values);
            }

            OnPasteComplete(EventArgs.Empty);
        }
コード例 #2
0
        public static void InsertSelection <T>(
            this IList <T> list,
            IListSelectionData <T> values)
        {
            if (values is null)
            {
                throw new ArgumentNullException(nameof(values));
            }

            if (values.Selection.MaxIndex >= list.Count)
            {
                throw new ArgumentException();
            }

            IncreaseSize(list, values.Count);

            var current = list.Count;

            for (var i = values.Count; --i >= 0;)
            {
                var freeIndex = values.Selection[i];
                while (--current != freeIndex)
                {
                    list[current] = list[current - (i + 1)];
                }

                list[current] = values[freeIndex];
            }
        }
コード例 #3
0
ファイル: ListEditor.cs プロジェクト: Maseya/MushROMs
        public void WriteSelection(IListSelectionData <T> values)
        {
            if (values is null)
            {
                throw new ArgumentNullException(nameof(values));
            }

            if (values.Count == 0)
            {
                return;
            }

            var copy      = values.Copy();
            var oldValues = BaseList.GetSelectionData(copy.Selection);

            WriteData(
                () => BaseList.WriteSelection(copy),
                () => BaseList.WriteSelection(oldValues));
        }
コード例 #4
0
ファイル: ListEditor.cs プロジェクト: Maseya/MushROMs
        public void InsertSelection(IListSelectionData <T> values)
        {
            if (values is null)
            {
                throw new ArgumentNullException(nameof(values));
            }

            if (values.Count == 0)
            {
                return;
            }

            var copy = values.Copy();

            WriteData(
                () => BaseList.InsertSelection(copy),
                () => BaseList.RemoveSelection(copy.Selection));

            OnSizeChanged(EventArgs.Empty);
        }
コード例 #5
0
ファイル: ListEditor.cs プロジェクト: Maseya/MushROMs
        public void Paste(IListSelectionData <T> values, bool insert)
        {
            if (!CanPaste)
            {
                return;
            }

            var e = new CancelEventArgs();

            OnBeginPaste(e);
            if (e.Cancel)
            {
                return;
            }

            if (values is null)
            {
                throw new ArgumentNullException(nameof(values));
            }

            if (values.Count == 0)
            {
                return;
            }

            if (insert)
            {
                InsertSelection(values);
            }
            else
            {
                WriteSelection(values);
            }

            OnPasteComplete(EventArgs.Empty);
        }
コード例 #6
0
        public static void WriteSelection <T>(
            this IList <T> list,
            IListSelectionData <T> values)
        {
            if (list is null)
            {
                throw new ArgumentNullException(nameof(list));
            }

            if (values is null)
            {
                throw new ArgumentNullException(nameof(values));
            }

            if (values.Selection.MaxIndex >= list.Count)
            {
                throw new ArgumentException();
            }

            foreach (var kvp in values)
            {
                list[kvp.Key] = kvp.Value;
            }
        }
コード例 #7
0
ファイル: SharedListParent.cs プロジェクト: Maseya/MushROMs
 public void WriteSelection(IListSelectionData <byte> values)
 {
     BaseList.WriteSelection(values);
 }
コード例 #8
0
ファイル: SharedListParent.cs プロジェクト: Maseya/MushROMs
 public void InsertSelection(IListSelectionData <byte> values)
 {
     BaseList.InsertSelection(values);
 }