Ejemplo n.º 1
0
        public virtual void Drop(DropInfo dropInfo)
        {
            int insertIndex = dropInfo.InsertIndex;
            IList destinationList = GetList(dropInfo.TargetCollection);
            IEnumerable data = ExtractData(dropInfo.Data);

            if (dropInfo.DragInfo.VisualSource == dropInfo.VisualTarget)
            {
                IList sourceList = GetList(dropInfo.DragInfo.SourceCollection);

                foreach (object o in data)
                {
                    int index = sourceList.IndexOf(o);

                    if (index != -1)
                    {
                        sourceList.RemoveAt(index);

                        if (sourceList == destinationList && index < insertIndex)
                        {
                            --insertIndex;
                        }
                    }
                }
            }

            foreach (object o in data)
            {
                destinationList.Insert(insertIndex++, o);
            }
        }
Ejemplo n.º 2
0
 public virtual void DragOver(DropInfo dropInfo)
 {
     if (CanAcceptData(dropInfo))
     {
         dropInfo.Effects = DragDropEffects.Copy;
         dropInfo.DropTargetAdorner = DropTargetAdorners.Insert;
     }
 }
Ejemplo n.º 3
0
        void IDropTarget.Drop(DropInfo drop_info)
        {
            log.Trace("Drop");

            default_drop_handler.Drop(drop_info);

            if (drop_info.Data is Post)
            {
                var posts_view = CollectionViewSource.GetDefaultView(Posts);
                posts_view.MoveCurrentTo(drop_info.Data);
            }
        }
Ejemplo n.º 4
0
 protected static bool CanAcceptData(DropInfo dropInfo)
 {
     if (dropInfo.DragInfo.SourceCollection == dropInfo.TargetCollection)
     {
         return GetList(dropInfo.TargetCollection) != null;
     }
     else if (dropInfo.DragInfo.SourceCollection is ItemCollection)
     {
         return false;
     }
     else
     {
         if (TestCompatibleTypes(dropInfo.TargetCollection, dropInfo.Data))
         {
             return !IsChildOf(dropInfo.VisualTargetItem, dropInfo.DragInfo.VisualSourceItem);
         }
         else
         {
             return false;
         }
     }
 }
Ejemplo n.º 5
0
        void IDropTarget.Drop(DropInfo drop_info)
        {
            if (drop_info.TargetItem == null)
                log.Trace("Dropping on " + drop_info.TargetCollection.ToString());
            else
            {
                if (drop_info.TargetItem is Account)
                    log.Trace("Dropping on " + (drop_info.TargetItem as Account).Name);
                else
                    log.Trace("Dropping on " + (drop_info.TargetItem as Post).Text);
            }

            default_drop_handler.Drop(drop_info);

            if (drop_info.Data is Account)
            {
                var accounts_view = CollectionViewSource.GetDefaultView(Accounts);
                accounts_view.MoveCurrentTo(drop_info.Data);
            }
            else if (drop_info.Data is Post)
            {
                var accounts_view = CollectionViewSource.GetDefaultView(Accounts);
                Account current_account = accounts_view.CurrentItem as Account;
                if (current_account == null)
                    return;
                // Get selected post
                var posts_view = CollectionViewSource.GetDefaultView(current_account.Posts);
                posts_view.MoveCurrentTo(drop_info.Data);
            }
        }
Ejemplo n.º 6
0
 void IDropTarget.DragOver(DropInfo drop_info)
 {
     default_drop_handler.DragOver(drop_info);
 }
Ejemplo n.º 7
0
        void IDropTarget.DragOver(DropInfo drop_info)
        {
            log.Trace("DragOver");

            default_drop_handler.DragOver(drop_info);
        }
Ejemplo n.º 8
0
        static void DropTarget_PreviewDrop(object sender, DragEventArgs e)
        {
            DropInfo dropInfo = new DropInfo(sender, e, m_DragInfo, m_Format.Name);
            IDropTarget dropHandler = GetDropHandler((UIElement)sender);

            DragAdorner = null;
            DropTargetAdorner = null;

            if (dropHandler != null)
            {
                dropHandler.Drop(dropInfo);
            }
            else
            {
                DefaultDropHandler.Drop(dropInfo);
            }

            e.Handled = true;
        }
Ejemplo n.º 9
0
        static void DropTarget_PreviewDragOver(object sender, DragEventArgs e)
        {
            DropInfo dropInfo = new DropInfo(sender, e, m_DragInfo, m_Format.Name);
            IDropTarget dropHandler = GetDropHandler((UIElement)sender);

            if (dropHandler != null)
            {
                dropHandler.DragOver(dropInfo);
            }
            else
            {
                DefaultDropHandler.DragOver(dropInfo);
            }

            // Update the drag adorner.
            if (dropInfo.Effects != DragDropEffects.None)
            {
                if (DragAdorner == null && m_DragInfo != null)
                {
                    CreateDragAdorner();
                }

                if (DragAdorner != null)
                {
                    DragAdorner.MousePosition = e.GetPosition(DragAdorner.AdornedElement);
                    DragAdorner.InvalidateVisual();
                }
            }
            else
            {
                DragAdorner = null;
            }

            // If the target is an ItemsControl then update the drop target adorner.
            if (sender is ItemsControl)
            {
                UIElement adornedElement = ((ItemsControl)sender).GetVisualDescendent<ItemsPresenter>();

                if (dropInfo.DropTargetAdorner == null)
                {
                    DropTargetAdorner = null;
                }
                else if (!dropInfo.DropTargetAdorner.IsInstanceOfType(DropTargetAdorner))
                {
                    DropTargetAdorner = DropTargetAdorner.Create(dropInfo.DropTargetAdorner, adornedElement);
                }

                if (DropTargetAdorner != null)
                {
                    DropTargetAdorner.DropInfo = dropInfo;
                    DropTargetAdorner.InvalidateVisual();
                }
            }

            e.Effects = dropInfo.Effects;
            e.Handled = true;

            Scroll((DependencyObject)sender, e);
        }
Ejemplo n.º 10
0
 public override void OnDragOver(DropInfo dropInfo)
 {
     //default is to accept our data types
     dropInfo.Effects = DragDropEffects.All;
 }