Beispiel #1
0
        //initiate the move of selected row
        private void svc_PreviewDragDrop(object sender, RadDropEventArgs e)
        {
            GridDataRowElement rowElement = e.DragInstance as GridDataRowElement;

            if (rowElement == null)
            {
                return;
            }
            e.Handled = true;

            RadItem     dropTarget = e.HitTarget as RadItem;
            RadGridView targetGrid = dropTarget.ElementTree.Control as RadGridView;

            if (targetGrid == null)
            {
                return;
            }

            var dragGrid = rowElement.ElementTree.Control as RadGridView;

            if (targetGrid == dragGrid)
            {
                e.Handled = true;

                GridDataRowElement dropTargetRow = dropTarget as GridDataRowElement;
                int index = dropTargetRow != null?this.GetTargetRowIndex(dropTargetRow, e.DropLocation) : targetGrid.RowCount;

                GridViewRowInfo rowToDrag = dragGrid.SelectedRows[0];
                this.MoveRows(dragGrid, rowToDrag, index);
            }
        }
        protected override void OnPreviewDragDrop(RadDropEventArgs e)
        {
            base.OnPreviewDragDrop(e);
            if (e.Handled || !(e.DragInstance is GanttGraphicalViewBaseTaskElement))
            {
                return;
            }
            GanttGraphicalViewBaseItemElement hitTarget = e.HitTarget as GanttGraphicalViewBaseItemElement;

            if (hitTarget == null)
            {
                return;
            }
            DateTime dateTime = this.Owner.GraphicalViewElement.TimelineBehavior.AdjustedTimelineStart.AddSeconds((double)(this.Owner.GraphicalViewElement.HorizontalScrollBarElement.Value + e.DropLocation.X - this.xOutlineFormOffset) * this.Owner.GraphicalViewElement.OnePixelTime.TotalSeconds);

            if (dateTime == hitTarget.Data.Start)
            {
                return;
            }
            TimeSpan timeSpan = hitTarget.Data.End - hitTarget.Data.Start;

            hitTarget.Data.Start = dateTime;
            hitTarget.Data.End   = dateTime + timeSpan;
            hitTarget.GraphicalViewElement.CalculateLinkLines(hitTarget.Data);
        }
        /// <summary>
        /// The drag drop service_ preview drag drop.
        /// </summary>
        /// <param name="sender">
        /// The sender.
        /// </param>
        /// <param name="e">
        /// The e.
        /// </param>
        private void dragDropService_PreviewDragDrop(object sender, RadDropEventArgs e)
        {
            e.Handled = true;

            var rowElement = e.DragInstance as GridDataRowElement;
            if (rowElement == null)
            {
                return;
            }

            var dropTarget = e.HitTarget as RadItem;
            var targetGrid = dropTarget.ElementTree.Control as RadGridView;
            if (targetGrid == null)
            {
                return;
            }

            var dragGrid = rowElement.ElementTree.Control as RadGridView;

            if (targetGrid != dragGrid)
            {

                e.Handled = true;
                var dropTargetCell = dropTarget as GridDataCellElement;
                int index = this.GetTargetCellIndex(dropTargetCell, e.DropLocation);
                this.MoveRows(targetGrid, dragGrid, dropTargetCell);
            }
        }
Beispiel #4
0
        private void DragDropService_PreviewDragDrop(object sender, RadDropEventArgs e)
        {
            DiagramListViewVisualItem dragItem   = e.DragInstance as DiagramListViewVisualItem;
            RadDiagramElement         dropTarget = e.HitTarget as RadDiagramElement;

            if (dragItem != null && dropTarget != null && dragItem.Data.Key == "Image")
            {
                e.Handled = true;

                RadDiagramShape shape = dropTarget.Shapes.Last() as RadDiagramShape;
                shape.DiagramShapeElement.Shape = null;
                shape.BackColor = Color.Transparent;


                try
                {
                    OpenFileDialog open = new OpenFileDialog();
                    open.Filter = "Image Files(*.jpg; *.jpeg; *.gif; *.bmp)|*.jpg; *.jpeg; *.gif; *.bmp";
                    if (open.ShowDialog() == DialogResult.OK)
                    {
                        Bitmap bit = new Bitmap(open.FileName);
                        shape.DiagramShapeElement.Image = bit;
                    }
                }
                catch (Exception)
                {
                    throw new ApplicationException("Failed loading image");
                }


                shape.DiagramShapeElement.ImageLayout = dragItem.ImageLayout;
            }
            ;
        }
Beispiel #5
0
        private void dragDropService_PreviewDragDrop(object sender, RadDropEventArgs e)
        {
            SnapshotDragItem dragInstance = e.DragInstance as SnapshotDragItem;

            if (dragInstance == null)
            {
                return;
            }

            RadItem     dropTarget = e.HitTarget as RadItem;
            RadGridView targetGrid = dropTarget.ElementTree.Control as RadGridView;

            if (targetGrid == null)
            {
                return;
            }

            RadGridView dragGrid = dragInstance.Item.ElementTree.Control as RadGridView;

            if (targetGrid != dragGrid)
            {
                e.Handled = true;

                CustomGridBehavior behavior      = (CustomGridBehavior)dragGrid.GridBehavior;
                GridDataRowElement dropTargetRow = dropTarget as GridDataRowElement;
                int index = dropTargetRow != null?this.GetTargetRowIndex(dropTargetRow, e.DropLocation) : targetGrid.RowCount;

                this.MoveRows(targetGrid, dragGrid, behavior.SelectedRows, index);
            }
        }
        protected override void OnPreviewDragDrop(RadDropEventArgs e)
        {
            base.OnPreviewDragDrop(e);
            this.scrollTimer.Stop();
            if (!this.owner.ShowGroups)
            {
                this.HandleUngroupedDragDrop(e);
            }
            else
            {
                this.HandleGroupedDragDrop(e);
            }
            RadTileElement context   = this.Context as RadTileElement;
            RadElement     hitTarget = e.HitTarget as RadElement;
            Point          point     = e.DropLocation;

            if (context == null)
            {
                return;
            }
            if (hitTarget != null)
            {
                point = hitTarget.PointToControl(point);
            }
            Point location = context.ControlBoundingRectangle.Location;
            SizeF sizeF    = new SizeF((float)(point.X - location.X), (float)(point.Y - location.Y));

            context.Visibility = ElementVisibility.Visible;
            new AnimatedPropertySetting(RadElement.PositionOffsetProperty, (object)sizeF, (object)SizeF.Empty, 5, 10)
            {
                RemoveAfterApply = true
            }.ApplyValue((RadObject)context);
            ControlTraceMonitor.TrackAtomicFeature(hitTarget, "Reordering");
        }
Beispiel #7
0
 protected override void OnPreviewDragDrop(RadDropEventArgs e)
 {
     base.OnPreviewDragDrop(e);
     if (e.Handled || this.owner.ListSource.IsDataBound)
     {
         return;
     }
     if ((this.owner.EnableGrouping || this.owner.EnableCustomGrouping) && this.owner.ShowGroups || (this.owner.EnableSorting || this.owner.ListSource.IsDataBound))
     {
         int num = (int)RadMessageBox.Show("DragDrop is not supported in grouped, sorted or data-bound mode. \nPlease handle the ListViewElement.DragDropService.PreviewDragDrop event manually \nand set e.Handled = true  or just set the AllowDragDrop property to false to disable this message.", "Error", MessageBoxButtons.OK, RadMessageIcon.Error);
     }
     else
     {
         RadElement             hitTarget1         = e.HitTarget as RadElement;
         BaseListViewVisualItem listViewVisualItem = e.HitTarget as BaseListViewVisualItem;
         BaseListViewElement    hitTarget2         = e.HitTarget as BaseListViewElement;
         if (hitTarget1 != null)
         {
             Point control = hitTarget1.PointToControl(e.DropLocation);
             if (listViewVisualItem == null)
             {
                 listViewVisualItem = this.owner.ViewElement.GetVisualItemAt(control);
             }
         }
         if (listViewVisualItem != null && listViewVisualItem.Data.Owner != this.owner || hitTarget2 != null && hitTarget2.Owner != this.owner)
         {
             this.HandleDropBetweenListViews(e);
         }
         else
         {
             this.HandleDragDrop(e);
         }
         this.owner.InvalidateMeasure(true);
     }
 }
        protected virtual void HandleUngroupedDragDrop(RadDropEventArgs e)
        {
            RadElement     hitTarget = e.HitTarget as RadElement;
            RadTileElement context   = this.Context as RadTileElement;
            Point          point     = e.DropLocation;

            point.Offset(-(int)this.owner.TileLayout.PositionOffset.Width, -(int)this.owner.TileLayout.PositionOffset.Height);
            if (hitTarget != null)
            {
                point = hitTarget.PointToControl(point);
            }
            if (context == null || hitTarget == null)
            {
                return;
            }
            Point targetCell = this.GetTargetCell(context, point);

            if (targetCell.X == -1)
            {
                return;
            }
            targetCell.X   = Math.Min(targetCell.X, this.owner.RowsCount - context.RowSpan);
            context.Row    = targetCell.X;
            context.Column = targetCell.Y;
            int colSpan = context.ColSpan;

            context.ColSpan = 0;
            this.OffsetTiles(context, colSpan);
            context.ColSpan = colSpan;
            context.Column -= colSpan;
            this.owner.InvalidateMeasure(true);
            this.owner.UpdateLayout();
        }
Beispiel #9
0
        private void dragDropService_PreviewDragDrop(object sender, RadDropEventArgs e)
        {
            GridDataRowElement rowElement = e.DragInstance as GridDataRowElement;

            if (rowElement == null)
            {
                return;
            }
            string          sourceText        = rowElement.RowInfo.Cells[0].Value.ToString();
            TreeNodeElement targetNodeElement = e.HitTarget as TreeNodeElement;

            if (targetNodeElement != null)
            {
                RadTreeViewElement treeViewElement = targetNodeElement.TreeViewElement;
                RadTreeNode        targetNode      = targetNodeElement.Data;
                DropPosition       dropPosition    = this.GetDropPosition(e.DropLocation, targetNodeElement);

                switch (dropPosition)
                {
                case DropPosition.None:
                    break;

                case DropPosition.BeforeNode:
                    radGridView1.Rows.Remove(rowElement.RowInfo);

                    RadTreeNodeCollection nodes = targetNode.Parent == null ? treeViewElement.Nodes : targetNode.Parent.Nodes;
                    nodes.Insert(targetNode.Index, new RadTreeNode(sourceText));

                    break;

                case DropPosition.AfterNode:
                    radGridView1.Rows.Remove(rowElement.RowInfo);

                    RadTreeNodeCollection nodes1 = targetNode.Parent == null ? treeViewElement.Nodes : targetNode.Parent.Nodes;
                    int targetIndex = targetNodeElement.Data.Index <= treeViewElement.Nodes.Count - 1 ?
                                      (targetNodeElement.Data.Index + 1) : treeViewElement.Nodes.Count - 1;
                    nodes1.Insert(targetIndex, new RadTreeNode(sourceText));

                    break;

                case DropPosition.AsChildNode:
                    radGridView1.Rows.Remove(rowElement.RowInfo);

                    targetNode.Nodes.Add(new RadTreeNode(sourceText));

                    break;
                }
            }

            RadTreeViewElement treeElement = e.HitTarget as RadTreeViewElement;

            if (treeElement != null)
            {
                radGridView1.Rows.Remove(rowElement.RowInfo);
                radTreeView1.Nodes.Add(new RadTreeNode(sourceText));
            }
        }
        protected override void OnPreviewDragDrop(RadDropEventArgs e)
        {
            RadListVisualItem dragedItem    = e.DragInstance as RadListVisualItem;
            RadListElement    targetList    = e.HitTarget as RadListElement;
            RadListVisualItem targetElement = targetList.ElementTree.GetElementAtPoint(e.DropLocation) as RadListVisualItem;

            this.OnPreviewDragDropCore(dragedItem, targetList, targetElement);

            base.OnPreviewDragDrop(e);
        }
Beispiel #11
0
        protected override void OnPreviewDragDrop(RadDropEventArgs e)
        {
            StackLayoutElement dropTarget    = e.HitTarget as StackLayoutElement;
            TaskElement        draggedObject = e.DragInstance as TaskElement;

            if (draggedObject != null && dropTarget != null)
            {
                draggedObject.Parent.Children.Remove(draggedObject);
                dropTarget.Children.Add(draggedObject);
            }

            base.OnPreviewDragDrop(e);
        }
 protected override void OnPreviewDragDrop(RadDropEventArgs e)
 {
     base.OnPreviewDragDrop(e);
       if (e.Handled || this.owner.DataSource != null)
     return;
       RadListVisualItem targetElement = e.HitTarget as RadListVisualItem;
       RadListElement targetList = e.HitTarget as RadListElement;
       if (targetElement != null)
     targetList = targetElement.Data.Owner;
       else
     targetElement = targetList.ElementTree.GetElementAtPoint(e.DropLocation) as RadListVisualItem;
       if (this.draggedItem == null || this.draggedItem.DataBoundItem != null || targetList.DataSource != null)
     return;
       this.OnPreviewDragDropCore(targetList, targetElement);
 }
Beispiel #13
0
        protected override void OnPreviewDragDrop(RadDropEventArgs e)
        {
            DraggableLayoutControlItem hitTarget = e.HitTarget as DraggableLayoutControlItem;

            base.OnPreviewDragDrop(e);
            if (e.Handled)
            {
                return;
            }
            hitTarget?.AssociatedItem.FindAncestor <LayoutControlContainerElement>().LayoutTree.HandleDrop(hitTarget, (LayoutControlItemBase)this.draggedItem, hitTarget.PointToControl(e.DropLocation));
            if ((this.DropTarget is BaseListViewElement || this.DropTarget is BaseListViewVisualItem) && this.CanDropOnListView(this.DropTarget as RadElement))
            {
                this.owner.HideItem(this.draggedItem.AssociatedItem);
            }
            ControlTraceMonitor.TrackAtomicFeature(this.owner.Parent is RadDataLayout ? (RadControl)this.owner.Parent : (RadControl)this.owner, "LayoutModified", (object)"DragDrop");
        }
Beispiel #14
0
        protected override void OnPreviewDragDrop(RadDropEventArgs e)
        {
            GanttViewTaskElement taskElement = e.DragInstance as GanttViewTaskElement;

            if (taskElement != null)
            {
                GanttViewTaskItemElement taskItemElement = taskElement.Parent as GanttViewTaskItemElement;
                if (taskItemElement.Data.Start == this.snappedDate)
                {
                    return;
                }

                TimeSpan duration = taskItemElement.Data.End - taskItemElement.Data.Start;
                taskItemElement.Data.Start = snappedDate;
                taskItemElement.Data.End   = snappedDate + duration;
                this.CalculateLinkLines(taskItemElement.GraphicalViewElement, taskItemElement.Data);
                e.Handled = true;
            }

            base.OnPreviewDragDrop(e);
        }
        protected virtual void OnDragServiceDragDrop(object sender, RadDropEventArgs e)
        {
            e.Handled = true;
            this.layoutControl.DragOverlay.SetPreviewRectangle(Rectangle.Empty);
            DraggableLayoutControlItem           hitTarget1 = e.HitTarget as DraggableLayoutControlItem;
            DraggableLayoutControlOverlayElement hitTarget2 = e.HitTarget as DraggableLayoutControlOverlayElement;
            BaseListViewVisualItem dragInstance             = e.DragInstance as BaseListViewVisualItem;

            if (hitTarget2 != null)
            {
                this.HandleDropOnEmptyContainer(hitTarget2, dragInstance);
            }
            else
            {
                if (hitTarget1 == null)
                {
                    return;
                }
                this.HandleItemDrop(dragInstance, hitTarget1);
            }
        }
        private void svc_PreviewDragDrop(object sender, RadDropEventArgs e)
        {
            var rowElement = e.DragInstance as GridDataRowElement;

            if (rowElement == null)
            {
                return;
            }
            e.Handled = true;

            var dropTarget = e.HitTarget as RadItem;
            var targetGrid = dropTarget.ElementTree.Control as RadGridView;

            if (targetGrid == null)
            {
                return;
            }

            var dragGrid = rowElement.ElementTree.Control as RadGridView;

            if (targetGrid != dragGrid)
            {
                e.Handled = true;
                //append dragged rows to the end of the target grid
                int index = targetGrid.RowCount;

                //Grab every selected row from the source grid, including the current row
                List <GridViewRowInfo> rows =
                    dragGrid.SelectedRows.ToList <GridViewRowInfo>();
                if (dragGrid.CurrentRow != null)
                {
                    GridViewRowInfo row = dragGrid.CurrentRow;
                    if (!rows.Contains(row))
                    {
                        rows.Add(row);
                    }
                }
                this.MoveRows(targetGrid, dragGrid, rows, index);
            }
        }
        protected virtual void HandleGroupedDragDrop(RadDropEventArgs e)
        {
            RadTileElement hitTarget = e.HitTarget as RadTileElement;
            RadTileElement context   = this.Context as RadTileElement;
            Point          point     = e.DropLocation;

            if (hitTarget != null)
            {
                point = hitTarget.PointToControl(point);
            }
            TileGroupElement targetGroup = this.GetTargetGroup(new RectangleF((PointF)point, (SizeF)context.Size));

            if (context == null || targetGroup == null)
            {
                return;
            }
            Point targetCell = this.GetTargetCell(targetGroup, point);

            if (targetCell.X == -1)
            {
                return;
            }
            targetCell.X   = Math.Max(0, Math.Min(targetCell.X, targetGroup.RowsCount - context.RowSpan));
            context.Row    = targetCell.X;
            context.Column = targetCell.Y;
            if (!targetGroup.Items.Contains((RadItem)context))
            {
                (context.Parent.Parent as TileGroupElement).Items.Remove((RadItem)context);
                targetGroup.Items.Add((RadItem)context);
            }
            int colSpan = context.ColSpan;

            context.ColSpan = 0;
            this.OffsetTiles(targetGroup, context, colSpan);
            context.ColSpan = colSpan;
            context.Column -= colSpan;
            this.owner.InvalidateMeasure(true);
            this.owner.UpdateLayout();
        }
Beispiel #18
0
        protected override void OnPreviewDragDrop(RadDropEventArgs e)
        {
            DetailListViewCellElement hitTarget = e.HitTarget as DetailListViewCellElement;

            if (hitTarget == null)
            {
                base.OnPreviewDragDrop(e);
            }
            else
            {
                ListViewDetailColumn data = hitTarget.Data;
                int num   = this.owner.Owner.Columns.IndexOf(this.draggedColumn);
                int index = e.DropLocation.X <= hitTarget.Size.Width / 2 ^ this.owner.RightToLeft ? this.owner.Owner.Columns.IndexOf(data) : this.owner.Owner.Columns.IndexOf(data) + 1;
                this.owner.Owner.Columns.Remove(this.draggedColumn);
                if (num < index)
                {
                    --index;
                }
                this.owner.Owner.Columns.Insert(index, this.draggedColumn);
                this.owner.InvalidateMeasure(true);
                base.OnPreviewDragDrop(e);
            }
        }
        protected override void OnPreviewDragDrop(RadDropEventArgs e)
        {
            DetailListViewCellElement targetElement = e.HitTarget as DetailListViewCellElement;

            ListViewDetailColumn targetColumn = targetElement.Data;

            int draggedIndex = owner.Owner.Columns.IndexOf(draggedColumn);

            int targetIndex = e.DropLocation.X <= targetElement.Size.Width / 2 ?
                              owner.Owner.Columns.IndexOf(targetColumn):
                              owner.Owner.Columns.IndexOf(targetColumn) + 1;

            owner.Owner.Columns.Remove(draggedColumn);
            if (draggedIndex < targetIndex)
            {
                targetIndex--;
            }

            owner.Owner.Columns.Insert(targetIndex, draggedColumn);

            owner.InvalidateMeasure(true);

            base.OnPreviewDragDrop(e);
        }
        protected override void OnPreviewDragDrop(RadDropEventArgs e)
        {
            bool        isScrollerNode  = this.owner.Scroller.Traverser.Current == draggedNode;
            RadTreeNode newScrollerNode = null;

            if (isScrollerNode)
            {
                newScrollerNode = draggedNode.NextNode;

                if (newScrollerNode == null)
                {
                    newScrollerNode = draggedNode.PrevNode;
                }
            }

            TreeNodeElement    targetNodeElement = e.HitTarget as TreeNodeElement;
            RadTreeViewElement targetTreeView    = targetNodeElement == null ? e.HitTarget as RadTreeViewElement : targetNodeElement.TreeViewElement;
            List <RadTreeNode> draggedNodes      = this.GetDraggedNodes(draggedNode);

            bool dragDropBetweenTrees = targetTreeView != this.owner;

            targetTreeView.BeginUpdate();

            if (dragDropBetweenTrees)
            {
                this.owner.BeginUpdate();
            }

            if (targetNodeElement != null)
            {
                this.PerformDragDrop(e.DropLocation, targetNodeElement, draggedNodes);
            }
            else
            {
                foreach (RadTreeNode node in draggedNodes)
                {
                    if (!this.OnDragEnding(DropPosition.AsChildNode, node, null))
                    {
                        continue;
                    }

                    node.Remove();
                    targetTreeView.Nodes.Add(node);
                    this.owner.OnDragEnded(new RadTreeViewDragEventArgs(node, null));
                }
            }

            if (dragDropBetweenTrees)
            {
                this.owner.EndUpdate();
            }

            if (isScrollerNode)
            {
                this.owner.Scroller.ScrollToItem(newScrollerNode);
            }

            targetTreeView.EndUpdate();
            targetTreeView.SelectedNode = draggedNode;

            base.OnPreviewDragDrop(e);
        }
        protected override void OnPreviewDragDrop(RadDropEventArgs e)
        {
            base.OnPreviewDragDrop(e);
            if (this.CancelPreviewDragDrop(e))
            {
                return;
            }
            bool        flag1        = this.owner.Scroller.Traverser.Current == this.draggedNode;
            RadTreeNode radTreeNode1 = (RadTreeNode)null;

            if (flag1)
            {
                radTreeNode1 = this.draggedNode.NextNode ?? this.draggedNode.PrevNode;
            }
            TreeNodeElement    hitTarget          = e.HitTarget as TreeNodeElement;
            RadTreeViewElement radTreeViewElement = hitTarget == null ? e.HitTarget as RadTreeViewElement : hitTarget.TreeViewElement;
            List <RadTreeNode> selectedNodes      = this.GetSelectedNodes(this.draggedNode);
            List <RadTreeNode> draggedNodes       = this.GetDraggedNodes(this.draggedNode);
            bool flag2 = radTreeViewElement != null && radTreeViewElement != this.owner;

            radTreeViewElement?.BeginUpdate();
            if (flag2)
            {
                this.owner.BeginUpdate();
            }
            if (hitTarget != null && hitTarget.Data != null)
            {
                this.PerformDragDrop(e.DropLocation, hitTarget, draggedNodes);
            }
            else if (radTreeViewElement != null)
            {
                bool isCopyingNodes = this.IsCopyingNodes;
                foreach (RadTreeNode radTreeNode2 in draggedNodes)
                {
                    RadTreeNode radTreeNode3 = radTreeNode2;
                    if (this.OnDragEnding(DropPosition.AsChildNode, radTreeNode3, (RadTreeNode)null))
                    {
                        if (isCopyingNodes)
                        {
                            radTreeNode3 = this.CreateTreeNode(radTreeNode3);
                        }
                        else
                        {
                            radTreeNode3.Remove();
                        }
                        radTreeViewElement.Nodes.Add(radTreeNode3);
                        this.owner.OnDragEnded(new RadTreeViewDragEventArgs(radTreeNode3, (RadTreeNode)null));
                    }
                }
            }
            else if (draggedNodes.Count > 0)
            {
                this.owner.OnDragEnded(new RadTreeViewDragEventArgs(draggedNodes[0], (RadTreeNode)null));
            }
            if (flag2)
            {
                this.owner.EndUpdate();
            }
            if (flag1)
            {
                this.owner.Scroller.ScrollToItem(radTreeNode1);
            }
            if (radTreeViewElement == null)
            {
                return;
            }
            radTreeViewElement.EndUpdate();
            radTreeViewElement.SelectedNode = this.draggedNode;
            foreach (RadTreeNode radTreeNode2 in draggedNodes)
            {
                radTreeNode2.Selected = true;
            }
            foreach (RadTreeNode radTreeNode2 in selectedNodes)
            {
                radTreeNode2.Selected = true;
            }
        }
 protected virtual bool CancelPreviewDragDrop(RadDropEventArgs e)
 {
     return(e.Handled);
 }
 protected override bool CancelPreviewDragDrop(RadDropEventArgs e)
 {
     return(e.Handled);
 }
Beispiel #24
0
        protected virtual void HandleDragDrop(RadDropEventArgs e)
        {
            RadElement             hitTarget1    = e.HitTarget as RadElement;
            BaseListViewVisualItem targetElement = e.HitTarget as BaseListViewVisualItem;
            BaseListViewElement    hitTarget2    = e.HitTarget as BaseListViewElement;

            if (hitTarget1 != null)
            {
                targetElement = this.owner.ViewElement.GetVisualItemAt(hitTarget1.PointToControl(e.DropLocation));
            }
            ListViewDataItem listViewDataItem = targetElement?.Data;
            bool             flag             = false;

            if (listViewDataItem != null)
            {
                listViewDataItem.Owner.ListSource.BeginUpdate();
                if (this.owner.ViewElement.ShouldDropAfter(targetElement, e.DropLocation))
                {
                    ITraverser <ListViewDataItem> enumerator = this.owner.ViewElement.Scroller.Traverser.GetEnumerator() as ITraverser <ListViewDataItem>;
                    enumerator.Position = (object)listViewDataItem;
                    flag             = !enumerator.MoveNext();
                    listViewDataItem = enumerator.Current;
                }
                int newIndex = this.owner.ListSource.IndexOf(listViewDataItem);
                if (this.draggedItems != null)
                {
                    foreach (ListViewDataItem draggedItem in this.draggedItems)
                    {
                        int oldIndex = this.owner.ListSource.IndexOf(draggedItem);
                        this.owner.ListSource.Move(oldIndex, newIndex);
                        if (oldIndex > newIndex)
                        {
                            ++newIndex;
                        }
                    }
                }
                else if (this.draggedItem != null)
                {
                    int num1 = this.owner.ListSource.IndexOf(this.draggedItem);
                    if (flag)
                    {
                        int num2 = this.owner.ListSource.Count - 1;
                    }
                    else if (num1 < newIndex)
                    {
                        --newIndex;
                    }
                    this.owner.ListSource.Move(this.owner.ListSource.IndexOf(this.draggedItem), newIndex);
                }
                listViewDataItem.Owner.ListSource.EndUpdate();
                listViewDataItem.Owner.ViewElement.Scroller.UpdateScrollValue();
            }
            else
            {
                if (hitTarget2 == null)
                {
                    return;
                }
                hitTarget2.Owner.ListSource.BeginUpdate();
                if (this.draggedItems != null)
                {
                    foreach (ListViewDataItem draggedItem in this.draggedItems)
                    {
                        hitTarget2.Owner.ListSource.Move(this.owner.ListSource.IndexOf(draggedItem), this.owner.ListSource.Count - 1);
                    }
                }
                else if (this.draggedItem != null)
                {
                    hitTarget2.Owner.ListSource.Move(this.owner.ListSource.IndexOf(this.draggedItem), this.owner.ListSource.Count - 1);
                }
                hitTarget2.Owner.ListSource.EndUpdate();
                hitTarget2.Owner.ViewElement.Scroller.UpdateScrollValue();
            }
        }
Beispiel #25
0
        protected virtual void HandleDropBetweenListViews(RadDropEventArgs e)
        {
            RadElement             hitTarget           = e.HitTarget as RadElement;
            BaseListViewVisualItem listViewVisualItem  = e.HitTarget as BaseListViewVisualItem;
            BaseListViewElement    baseListViewElement = e.HitTarget as BaseListViewElement;

            if (listViewVisualItem != null && baseListViewElement == null)
            {
                baseListViewElement = listViewVisualItem.Data.Owner.ViewElement;
            }
            ListViewDataItem data;

            if (hitTarget != null)
            {
                Point control = hitTarget.PointToControl(e.DropLocation);
                if (listViewVisualItem == null)
                {
                    listViewVisualItem = baseListViewElement.GetVisualItemAt(control);
                }
                data = listViewVisualItem?.Data;
            }
            else
            {
                data = listViewVisualItem?.Data;
            }
            if (data != null)
            {
                data.Owner.ListSource.BeginUpdate();
                int index = data.Owner.ListSource.IndexOf(data);
                if (e.DropLocation.Y > listViewVisualItem.Size.Height / 2)
                {
                    ++index;
                }
                if (this.draggedItems != null)
                {
                    foreach (ListViewDataItem draggedItem in this.draggedItems)
                    {
                        this.owner.ListSource.Remove(draggedItem);
                        data.Owner.ListSource.Insert(index, draggedItem);
                        ++index;
                    }
                }
                else if (this.draggedItem != null)
                {
                    this.owner.ListSource.Remove(this.draggedItem);
                    data.Owner.ListSource.Insert(index, this.draggedItem);
                }
                data.Owner.ListSource.EndUpdate();
                data.Owner.ViewElement.Scroller.UpdateScrollValue();
            }
            else
            {
                if (baseListViewElement == null)
                {
                    return;
                }
                baseListViewElement.Owner.ListSource.BeginUpdate();
                if (this.draggedItems != null)
                {
                    foreach (ListViewDataItem draggedItem in this.draggedItems)
                    {
                        this.owner.ListSource.Remove(draggedItem);
                        baseListViewElement.Owner.ListSource.Add(draggedItem);
                    }
                }
                else if (this.draggedItem != null)
                {
                    this.owner.ListSource.Remove(this.draggedItem);
                    baseListViewElement.Owner.ListSource.Add(this.draggedItem);
                }
                baseListViewElement.Owner.ListSource.EndUpdate();
                baseListViewElement.Owner.ViewElement.Scroller.UpdateScrollValue();
            }
        }