public override Point GetDragHintLocation(ISupportDrop dropTarget, Point mousePosition)
        {
            GridHeaderCellElement headerCellElement  = dropTarget as GridHeaderCellElement;
            Rectangle             boundingRectangle1 = headerCellElement.ControlBoundingRectangle;
            Rectangle             boundingRectangle2 = headerCellElement.RowElement.TableElement.ViewElement.ControlBoundingRectangle;

            if (boundingRectangle1.Right > boundingRectangle2.Right)
            {
                boundingRectangle1.Width -= boundingRectangle1.Right - boundingRectangle2.Right;
            }
            if (boundingRectangle1.X < boundingRectangle2.X)
            {
                boundingRectangle1.Width -= boundingRectangle2.X - boundingRectangle1.X;
                boundingRectangle1.X      = boundingRectangle2.X;
            }
            Rectangle screen = this.GridViewElement.ElementTree.Control.RectangleToScreen(boundingRectangle1);
            Size      size   = Size.Empty;

            if (this.DragHint.Image != null)
            {
                size = this.DragHint.Image.Size;
            }
            Padding margins      = this.DragHint.Margins;
            Point   dropLocation = headerCellElement.PointFromScreen(mousePosition);

            if (this.orientation == Orientation.Vertical)
            {
                return(new Point((RadGridViewDragDropService.IsDroppedAtLeft(dropLocation, headerCellElement.Size.Width) ? screen.X : screen.Right) - size.Width / 2, screen.Y - margins.Top));
            }
            return(new Point(screen.X - margins.Left, screen.Bottom - margins.Top - size.Height / 2));
        }
 protected override void PerformStop()
 {
     base.PerformStop();
     if (this.messageFilterAdded)
     {
         RadMessageFilter.Instance.RemoveListener((IMessageListener)this);
         this.messageFilterAdded = false;
     }
     if (this.initialized)
     {
         RadItem context = this.Context as RadItem;
         if (context != null && context.ElementState == ElementState.Loaded)
         {
             context.IsMouseDown = false;
             context.Capture     = false;
             context.ElementTree.ComponentTreeHandler.Behavior.ItemCapture     = (RadElement)null;
             context.ElementTree.ComponentTreeHandler.Behavior.selectedElement = (RadElement)null;
         }
     }
     this.beginPoint                 = new Point?();
     this.doCommit                   = false;
     this.dropLocation               = Point.Empty;
     this.xOutlineFormOffset         = 0;
     this.yOutlineFormOffset         = 0;
     this.hintWindow.Visible         = false;
     this.hintWindow.BackgroundImage = (Image)null;
     this.target                 = (ISupportDrop)null;
     this.initialized            = false;
     this.startedProgramatically = false;
     this.RestoreOriginalMouseCursort();
 }
        public override Size GetDragHintSize(ISupportDrop dropTarget)
        {
            int width  = 1;
            int height = 1;

            if (this.DragHint.Image != null)
            {
                width  = this.DragHint.Image.Size.Width;
                height = this.DragHint.Image.Size.Height;
            }
            GridHeaderCellElement headerCellElement = dropTarget as GridHeaderCellElement;

            if (headerCellElement != null)
            {
                if (this.orientation == Orientation.Vertical)
                {
                    height = headerCellElement.Size.Height + this.DragHint.Margins.Vertical;
                }
                else
                {
                    width = headerCellElement.Size.Width + this.DragHint.Margins.Horizontal;
                }
            }
            return(new Size(width, height));
        }
        protected override IScriptCommand executeInner(ParameterDic pm, UIElement sender, RoutedEventArgs evnt, IUIInput input, IList <IUIInputProcessor> inpProcs)
        {
            DragEventArgs            devnt          = evnt as DragEventArgs;
            ISupportDrop             dropTarget     = pm.GetValue <ISupportDrop>(DropTargetKey);
            IEnumerable <IDraggable> draggables     = pm.GetValue <IEnumerable <IDraggable> >(DraggablesKey);
            DragDropEffectsEx        allowedEffects = pm.HasValue(AllowedEffectsKey) ? pm.GetValue <DragDropEffectsEx>(AllowedEffectsKey)
                : devnt != null ? (DragDropEffectsEx)devnt.AllowedEffects : DragDropEffectsEx.All;

            if (dropTarget != null && draggables != null)
            {
                QueryDropEffects queryDropEffect = QueryDropEffects.None;
                if (devnt != null)
                {
                    queryDropEffect = dropTarget.QueryDrop(draggables, allowedEffects);
                    devnt.Effects   = (DragDropEffects)queryDropEffect.SupportedEffects;
                }
                else
                {
                    queryDropEffect = dropTarget.QueryDrop(draggables, allowedEffects);
                }

                pm.SetValue(DestinationKey, queryDropEffect, SkipIfExists);
            }
            return(NextCommand);
        }
        protected override void HandleMouseMove(Point mousePosition)
        {
            base.HandleMouseMove(mousePosition);

            if (this.Initialized)
            {
                TreeNodeElement draggedNodeElement = this.Context as TreeNodeElement;

                if (draggedNodeElement != null)
                {
                    this.owner.OnItemDrag(new RadTreeViewEventArgs(draggedNodeElement.Data));
                }
            }

            ISupportDrop    dropTarget  = this.DropTarget;
            TreeNodeElement nodeElement = dropTarget as TreeNodeElement;

            if (nodeElement == null || !this.CanShowDropHint(mousePosition) || !this.CanCommit)
            {
                this.DisposeHint();
                return;
            }

            if (this.dropHintWindow == null)
            {
                this.PrepareDragHint(nodeElement);
            }

            if (this.dropHintWindow != null)
            {
                this.UpdateHintPosition(mousePosition);
            }
        }
 protected override bool IsDropTargetValid(ISupportDrop dropTarget)
 {
     if (!(dropTarget is RadPanoramaElement))
     {
         return(dropTarget is RadTileElement);
     }
     return(true);
 }
Beispiel #7
0
        protected virtual Size GetDragHintSize(ISupportDrop iSupportDrop)
        {
            int     width   = this.owner.ColumnDragHint.Image.Size.Width;
            int     height1 = this.owner.ColumnContainer.Size.Height;
            Padding margins = this.owner.ColumnDragHint.Margins;
            int     height2 = height1 + margins.Vertical;

            return(new Size(width + margins.Horizontal, height2));
        }
        protected override bool IsDropTargetValid(ISupportDrop dropTarget)
        {
            TreeNodeElement treeNodeElement = dropTarget as TreeNodeElement;

            if (treeNodeElement != null)
            {
                return(treeNodeElement.Data != this.draggedNode);
            }
            return(base.IsDropTargetValid(dropTarget));
        }
Beispiel #9
0
        protected override bool IsDropTargetValid(ISupportDrop dropTarget)
        {
            DetailListViewCellElement listViewCellElement = dropTarget as DetailListViewCellElement;

            if (listViewCellElement != null)
            {
                return(listViewCellElement.Data != this.draggedColumn);
            }
            return(base.IsDropTargetValid(dropTarget));
        }
        public override Point GetDragHintLocation(ISupportDrop dropTarget, Point mousePosition)
        {
            GridRowElement gridRowElement = dropTarget as GridRowElement;
            Rectangle      screen         = this.GridViewElement.ElementTree.Control.RectangleToScreen(gridRowElement.ControlBoundingRectangle);
            Size           size           = this.DragHint.Image.Size;
            Padding        margins        = this.DragHint.Margins;
            int            num            = RadGridViewDragDropService.IsDroppedAtTop(gridRowElement.PointFromScreen(mousePosition), gridRowElement.Size.Height) ? screen.Y : screen.Bottom;

            return(new Point(screen.X - margins.Left, num - size.Height / 2));
        }
Beispiel #11
0
        private void DoDrag(Point mousePt)
        {
            RadItem draggedElement = this.Context as RadItem;

            this.SetHintWindowPosition(mousePt);

            Point        oldDropLocation = this.dropLocation;
            ISupportDrop dropTarget      = this.GetDropTarget(Control.MousePosition, out this.dropLocation);

            if (dropTarget == null || !this.IsDropTargetValid(dropTarget))
            {
                Cursor.Current = this.InvalidCursor;
                this.doCommit  = false;
                return;
            }

            if (dropTarget != null)
            {
                ISupportDrag draggedContext = this.Context as ISupportDrag;
                if (this.target != dropTarget)
                {
                    if (this.target != null)
                    {
                        this.target.DragLeave(oldDropLocation, draggedContext);
                    }

                    this.target = dropTarget;
                    this.target.DragEnter(this.dropLocation, draggedContext);
                }

                this.doCommit = this.target.DragOver(this.dropLocation, draggedContext);

                RadDragOverEventArgs args = new RadDragOverEventArgs(draggedContext, this.target);
                args.CanDrop = this.doCommit;
                this.OnPreviewDragOver(args);

                //use the CanDrop member of the event as it may be altered
                this.doCommit = args.CanDrop;

                if (this.doCommit)
                {
                    //TODO: Provide logic for updating cursor with events and DragDropEffects
                    Cursor.Current = this.ValidCursor;
                }
                else
                {
                    Cursor.Current = this.InvalidCursor;
                }
            }
            else
            {
                this.target   = null;
                this.doCommit = false;
            }
        }
Beispiel #12
0
        protected override void HandleMouseMove(Point mousePos)
        {
            ISupportDrop dropTarget = this.DropTarget;

            base.HandleMouseMove(mousePos);
            if (dropTarget != this.DropTarget && this.dragHintWindow == null && this.DropTarget.AllowDrop)
            {
                this.PrepareDragHint();
            }
            this.UpdateDragHintLocation(mousePos);
        }
Beispiel #13
0
        private ISupportDrop HitTestElementTree(ComponentThemableElementTree elementTree, Point screenMouse, out Point resultDropLocation)
        {
            if (elementTree == null)
            {
                resultDropLocation = Point.Empty;
                return(null);
            }

            resultDropLocation = Point.Empty;
            Point        clientMouse  = elementTree.Control.PointToClient(screenMouse);
            RadElement   hitElement   = elementTree.GetElementAtPoint(clientMouse);
            ISupportDrag dragInstance = this.Context as ISupportDrag;

            ISupportDrop dropTarget = null;
            ISupportDrop hitTarget  = null;

            while (hitElement != null)
            {
                hitTarget  = hitElement as ISupportDrop;
                dropTarget = null;

                if (hitTarget != null && hitTarget.AllowDrop)
                {
                    RadElement dropTargetElement = hitTarget as RadElement;

                    if (dropTargetElement != null)
                    {
                        resultDropLocation = dropTargetElement.PointFromControl(clientMouse);
                    }
                    else
                    {
                        resultDropLocation = clientMouse;
                    }

                    dropTarget = hitTarget;
                }

                //raise PreviewDropTarget event
                PreviewDropTargetEventArgs args = new PreviewDropTargetEventArgs(dragInstance, hitTarget);
                args.DropTarget = dropTarget;
                this.OnPreviewDropTarget(args);
                dropTarget = args.DropTarget;

                if (dropTarget != null)
                {
                    return(dropTarget);
                }

                hitElement = hitElement.Parent;
            }

            return(null);
        }
        public override Size GetDragHintSize(ISupportDrop dropTarget)
        {
            int            height         = this.DragHint.Image.Size.Height;
            int            width          = this.GridViewElement.Size.Width;
            GridRowElement gridRowElement = dropTarget as GridRowElement;

            if (gridRowElement != null)
            {
                width = gridRowElement.Size.Width;
            }
            return(new Size(width, height));
        }
        public override Size GetDragHintSize(ISupportDrop target)
        {
            BaseListViewVisualItem listViewVisualItem = target as BaseListViewVisualItem;

            if (listViewVisualItem == null || this.DragHint == null)
            {
                return(Size.Empty);
            }
            if (this.Orientation == Orientation.Horizontal)
            {
                return(new Size(listViewVisualItem.Size.Width, this.DragHint.Image.Size.Height));
            }
            return(new Size(this.DragHint.Image.Size.Width, listViewVisualItem.Size.Height));
        }
Beispiel #16
0
        protected override bool IsDropTargetValid(ISupportDrop dropTarget)
        {
            BaseListViewVisualItem listViewVisualItem = dropTarget as BaseListViewVisualItem;

            if (listViewVisualItem != null)
            {
                return(listViewVisualItem.Data != this.draggedItem);
            }
            if (dropTarget is BaseListViewElement)
            {
                return(true);
            }
            return(base.IsDropTargetValid(dropTarget));
        }
Beispiel #17
0
        protected override bool IsDropTargetValid(ISupportDrop dropTarget)
        {
            DraggableLayoutControlItem layoutControlItem = dropTarget as DraggableLayoutControlItem;

            if (this.draggedItem.ControlBoundingRectangle.Contains(this.draggedItem.ElementTree.Control.PointToClient(Control.MousePosition)))
            {
                return(false);
            }
            if (layoutControlItem != null)
            {
                return(layoutControlItem != this.draggedItem);
            }
            return(base.IsDropTargetValid(dropTarget));
        }
 public void EndDrag(Point mouseEndPoint, RadControl targetControl)
 {
     if (this.State == RadServiceState.Stopped)
     {
         return;
     }
     this.target = this.HitTestElementTree(targetControl.ElementTree, mouseEndPoint, out this.dropLocation);
     if (this.target != null)
     {
         this.Stop(true);
     }
     else
     {
         this.Stop(false);
     }
 }
        private void DoDrag(Point mousePt)
        {
            object context1 = this.Context;

            this.SetHintWindowPosition(mousePt);
            Point        dropLocation = this.dropLocation;
            ISupportDrop dropTarget   = this.GetDropTarget(mousePt, out this.dropLocation);

            if (dropTarget == null || !this.IsDropTargetValid(dropTarget))
            {
                Cursor.Current = this.InvalidCursor;
                this.doCommit  = false;
            }
            else if (dropTarget != null)
            {
                ISupportDrag context2 = this.Context as ISupportDrag;
                if (this.target != dropTarget)
                {
                    if (this.target != null)
                    {
                        this.target.DragLeave(dropLocation, context2);
                    }
                    this.target = dropTarget;
                    this.target.DragEnter(this.dropLocation, context2);
                }
                this.doCommit = this.target.DragOver(this.dropLocation, context2);
                RadDragOverEventArgs e = new RadDragOverEventArgs(context2, this.target);
                e.CanDrop = this.doCommit;
                this.OnPreviewDragOver(e);
                this.doCommit = e.CanDrop;
                if (this.doCommit)
                {
                    Cursor.Current = this.ValidCursor;
                }
                else
                {
                    Cursor.Current = this.InvalidCursor;
                }
            }
            else
            {
                this.target   = (ISupportDrop)null;
                this.doCommit = false;
            }
        }
Beispiel #20
0
        protected override IScriptCommand executeInner(ParameterDic pm, UIElement sender, RoutedEventArgs evnt, IUIInput input, IList <IUIInputProcessor> inpProcs)
        {
            DragEventArgs            devnt      = evnt as DragEventArgs;
            ISupportDrag             dragSource = pm.GetValue <ISupportDrag>(DragSourceKey);
            ISupportDrop             dropTarget = pm.GetValue <ISupportDrop>(DropTargetKey);
            IEnumerable <IDraggable> draggables = pm.GetValue <IEnumerable <IDraggable> >(DraggablesKey).ToList();

            if (dropTarget != null && draggables != null)
            {
                DragDropEffectsEx effect =
                    pm.HasValue <DragDropEffectsEx>(DropEffectKey) ? pm.GetValue <DragDropEffectsEx>(DropEffectKey) :
                    devnt != null ? (DragDropEffectsEx)devnt.AllowedEffects : DragDropEffectsEx.All;
                DragDropEffectsEx resultEffect = DragDropEffectsEx.None;

                var dataObj = pm.GetValue <IDataObject>(DataObjectKey);

                if (effect != DragDropEffectsEx.None)
                {
                    if (dropTarget is ISupportShellDrop)
                    {
                        resultEffect = (dropTarget as ISupportShellDrop).Drop(draggables, dataObj, effect);
                    }
                    else
                    {
                        resultEffect = dropTarget.Drop(draggables, effect);
                    }
                }

                if (devnt != null)
                {
                    devnt.Effects = (DragDropEffects)resultEffect;
                }

                pm.SetValue(DestinationKey, resultEffect, SkipIfExists);
                if (dragSource != null)
                {
                    dragSource.OnDragCompleted(draggables, resultEffect);
                }
            }

            return(NextCommand);
        }
Beispiel #21
0
        protected virtual IGridDragDropBehavior GetDragDropBehavior()
        {
            IGridDragDropBehavior dragDropBehavior = (IGridDragDropBehavior)null;
            ISupportDrop          dropTarget       = this.DropTarget;

            if (dropTarget is GridHeaderCellElement)
            {
                dragDropBehavior = (IGridDragDropBehavior) new GridColumnDragDropBehvavior();
            }
            else if (dropTarget is GridDataRowElement)
            {
                dragDropBehavior = (IGridDragDropBehavior) new GridRowDragDropBehavior();
            }
            else
            {
                GroupFieldElement groupFieldElement = dropTarget as GroupFieldElement;
            }
            dragDropBehavior?.Initialize(this.GridViewElement);
            return(dragDropBehavior);
        }
        public override void UpdateDropContext(
            ISupportDrag draggedContext,
            ISupportDrop dropTarget,
            Point?location)
        {
            GridColumnGroupCellElement groupCellElement    = dropTarget as GridColumnGroupCellElement;
            GridHeaderCellElement      headerCellElement   = dropTarget as GridHeaderCellElement;
            GridViewGroupColumn        gridViewGroupColumn = groupCellElement != null ? groupCellElement.ColumnInfo as GridViewGroupColumn : (GridViewGroupColumn)null;

            if (headerCellElement == null || !location.HasValue)
            {
                this.orientation = Orientation.Vertical;
            }
            else
            {
                if (headerCellElement.RowElement == null || headerCellElement.RowElement.TableElement == null)
                {
                    return;
                }
                Rectangle boundingRectangle1 = headerCellElement.ControlBoundingRectangle;
                Rectangle boundingRectangle2 = headerCellElement.RowElement.TableElement.ViewElement.ControlBoundingRectangle;
                if (boundingRectangle1.Right > boundingRectangle2.Right)
                {
                    boundingRectangle1.Width -= boundingRectangle1.Right - boundingRectangle2.Right;
                }
                if (boundingRectangle1.X < boundingRectangle2.X)
                {
                    boundingRectangle1.Width -= boundingRectangle2.X - boundingRectangle1.X;
                    boundingRectangle1.X      = boundingRectangle2.X;
                }
                if ((RadGridViewDragDropService.GetDropPosition(headerCellElement.PointFromScreen(location.Value), headerCellElement.Size) & RadPosition.Bottom) != RadPosition.None && (gridViewGroupColumn != null && gridViewGroupColumn.Group.Rows.Count == 0 && draggedContext.GetDataContext() is GridViewGroupColumn || gridViewGroupColumn != null && gridViewGroupColumn.Group.Groups.Count == 0 && draggedContext.GetDataContext() is GridViewDataColumn || gridViewGroupColumn == null))
                {
                    this.orientation = Orientation.Horizontal;
                }
                else
                {
                    this.orientation = Orientation.Vertical;
                }
            }
        }
Beispiel #23
0
        protected virtual void PrepareDragHint(ISupportDrop dropTarget)
        {
            if (this.dragDropBehavior == null || this.dragDropBehavior.DragHint == null || this.dragDropBehavior.DragHint.Image == null)
            {
                return;
            }
            RadItem radItem = dropTarget as RadItem;

            if (radItem != null && radItem.ElementTree != null && (this.GridViewElement.ElementTree != null && radItem.ElementTree.Control != this.GridViewElement.ElementTree.Control))
            {
                return;
            }
            this.dragDropBehavior.UpdateDropContext(this.Context as ISupportDrag, dropTarget, this.beginPoint);
            Size     dragHintSize = this.dragDropBehavior.GetDragHintSize(dropTarget);
            Bitmap   bitmap       = new Bitmap(dragHintSize.Width, dragHintSize.Height);
            Graphics g            = Graphics.FromImage((Image)bitmap);

            this.dragDropBehavior.DragHint.Paint(g, new RectangleF(PointF.Empty, (SizeF)dragHintSize));
            g.Dispose();
            this.dragHintWindow = new RadLayeredWindow();
            this.dragHintWindow.BackgroundImage = (Image)bitmap;
        }
Beispiel #24
0
        protected override void PerformStop()
        {
            base.PerformStop();

            if (this.messageFilterAdded)
            {
                RadMessageFilter.Instance.RemoveListener(this);
                this.messageFilterAdded = false;
            }

            if (this.initialized)
            {
                RadItem item = this.Context as RadItem;
                if (item != null && item.ElementState == ElementState.Loaded)
                {
                    item.IsMouseDown = false;
                    item.Capture     = false;
                    item.ElementTree.ComponentTreeHandler.Behavior.ItemCapture     = null;
                    item.ElementTree.ComponentTreeHandler.Behavior.selectedElement = null;
                }
            }

            this.beginPoint   = null;
            this.doCommit     = false;
            this.dropLocation = Point.Empty;

            this.xOutlineFormOffset = 0;
            this.yOutlineFormOffset = 0;

            this.hintWindow.Visible         = false;
            this.hintWindow.BackgroundImage = null;

            this.target      = null;
            this.initialized = false;

            this.RestoreOriginalMouseCursort();
        }
Beispiel #25
0
        protected override void HandleMouseMove(Point mousePosition)
        {
            ISupportDrop dropTarget = this.DropTarget;

            this.AutoScroll();
            base.HandleMouseMove(mousePosition);
            RadElement  radElement  = dropTarget as RadElement;
            RadPosition radPosition = RadPosition.None;

            if (radElement != null)
            {
                radPosition = RadGridViewDragDropService.GetDropPosition(radElement.PointFromScreen(mousePosition), radElement.ControlBoundingRectangle.Size);
            }
            if (dropTarget != this.DropTarget || dropTarget == null || radPosition != this.lastDropPosition)
            {
                this.SetDragDropBehavior();
            }
            this.lastDropPosition = radPosition;
            if (this.dragHintWindow == null)
            {
                return;
            }
            this.UpdateDragHintLocation(mousePosition);
        }
        private ISupportDrop HitTestElementTree(
            ComponentThemableElementTree elementTree,
            Point screenMouse,
            out Point resultDropLocation)
        {
            if (elementTree == null)
            {
                resultDropLocation = Point.Empty;
                return((ISupportDrop)null);
            }
            resultDropLocation = Point.Empty;
            Point        client      = elementTree.Control.PointToClient(screenMouse);
            RadElement   radElement1 = elementTree.GetElementAtPoint(client);
            ISupportDrag context     = this.Context as ISupportDrag;

            for (; radElement1 != null; radElement1 = radElement1.Parent)
            {
                ISupportDrop hitTarget   = radElement1 as ISupportDrop;
                ISupportDrop supportDrop = (ISupportDrop)null;
                if (hitTarget != null && hitTarget.AllowDrop)
                {
                    RadElement radElement2 = hitTarget as RadElement;
                    resultDropLocation = radElement2 == null ? client : radElement2.PointFromControl(client);
                    supportDrop        = hitTarget;
                }
                PreviewDropTargetEventArgs e = new PreviewDropTargetEventArgs(context, hitTarget);
                e.DropTarget = supportDrop;
                this.OnPreviewDropTarget(e);
                ISupportDrop dropTarget = e.DropTarget;
                if (dropTarget != null)
                {
                    return(dropTarget);
                }
            }
            return((ISupportDrop)null);
        }
Beispiel #27
0
 public virtual void UpdateDropContext(
     ISupportDrag draggedContext,
     ISupportDrop dropTarget,
     Point?location)
 {
 }
Beispiel #28
0
 public abstract Size GetDragHintSize(ISupportDrop dropTarget);
Beispiel #29
0
 public abstract Point GetDragHintLocation(ISupportDrop dropTarget, Point mousePosition);
 public RadDragDropEventArgs(ISupportDrag dragInstance, ISupportDrop hitTarget)
     : base(dragInstance)
 {
     this.hitTarget = hitTarget;
 }