Пример #1
0
        public void CopyAfterBlock(Block afterBlock)
        {
            IEnumerable <Block> blocksToCopy = PrepareBlocksToMove();
            IEnumerable <Block> newBlocks    = BlockActions.Clone(blocksToCopy);

            afterBlock.AppendBlocks(newBlocks);
        }
Пример #2
0
        public void AcceptBlocks(DragQuery draggedBlocks, DragQueryResult whereTo)
        {
            if (whereTo.DropTargetContainer.CanAcceptBlocks(draggedBlocks) == null)
            {
                return;
            }

            IEnumerable <Block> toDrop;

            if (draggedBlocks.ShouldCopyInsteadOfMove)
            {
                toDrop = BlockActions.Clone(draggedBlocks);
                toDrop = IntersperseWithSeparators(toDrop, whereTo);
                if (whereTo.HowToDrop == DropTargetInfo.DropBeforeTarget)
                {
                    whereTo.DropTarget.PrependBlocks(toDrop);
                }
                else
                {
                    whereTo.DropTarget.AppendBlocks(toDrop);
                }
            }
            else
            {
                using (Root.Transaction())
                {
                    foreach (Block b in draggedBlocks)
                    {
                        b.Delete();
                    }
                    toDrop = IntersperseWithSeparators(draggedBlocks, whereTo);
                    if (whereTo.HowToDrop == DropTargetInfo.DropBeforeTarget)
                    {
                        whereTo.DropTarget.PrependBlocks(toDrop);
                    }
                    else
                    {
                        whereTo.DropTarget.AppendBlocks(toDrop);
                    }
                }
            }
        }