Esempio n. 1
0
        protected override void OnDragEnter(DragEventArgs e)
        {
            EVEMon.Common.Skill dragSkill = GetDraggingSkill(e);
            if (dragSkill != null)
            {
                base.OnDragEnter(e);
                return;
            }
            base.OnDragEnter(e);
            if (!this.AllowRowReorder)
            {
                e.Effect = DragDropEffects.None;
                ClearDropMarker();
                return;
            }
            if (!e.Data.GetDataPresent(DataFormats.Text))
            {
                e.Effect = DragDropEffects.None;
                ClearDropMarker();
                return;
            }
            base.OnDragEnter(e);
            String text = (String)e.Data.GetData(REORDER.GetType());

            if (text.CompareTo(REORDER) == 0)
            {
                e.Effect = DragDropEffects.Move;
            }
            else
            {
                e.Effect = DragDropEffects.None;
                ClearDropMarker();
            }
        }
Esempio n. 2
0
        protected override void OnDragOver(DragEventArgs e)
        {
            EVEMon.Common.Skill dragSkill = GetDraggingSkill(e);
            if (dragSkill != null)
            {
                base.OnDragOver(e);
                return;
            }
            if (!this.AllowRowReorder)
            {
                e.Effect = DragDropEffects.None;
                ClearDropMarker();
                return;
            }
            if (!e.Data.GetDataPresent(DataFormats.Text))
            {
                e.Effect = DragDropEffects.None;
                ClearDropMarker();
                return;
            }
            Point        cp        = base.PointToClient(new Point(e.X, e.Y));
            ListViewItem hoverItem = base.GetItemAt(cp.X, cp.Y);

            if (hoverItem == null)
            {
                e.Effect = DragDropEffects.None;
                ClearDropMarker();
                return;
            }
            foreach (ListViewItem moveItem in base.SelectedItems)
            {
                if (moveItem.Index == hoverItem.Index)
                {
                    e.Effect = DragDropEffects.None;
                    hoverItem.EnsureVisible();
                    ClearDropMarker();
                    return;
                }
            }
            base.OnDragOver(e);
            String text = (String)e.Data.GetData(REORDER.GetType());

            if (text.CompareTo(REORDER) == 0)
            {
                e.Effect = DragDropEffects.Move;
                hoverItem.EnsureVisible();

                Rectangle hoverBounds = hoverItem.GetBounds(ItemBoundsPortion.ItemOnly);
                DrawDropMarker(hoverItem.Index, (cp.Y > (hoverBounds.Top + (hoverBounds.Height / 2))));
            }
            else
            {
                e.Effect = DragDropEffects.None;
                ClearDropMarker();
            }
        }
Esempio n. 3
0
        protected override void OnDragDrop(DragEventArgs e)
        {
            EVEMon.Common.Skill dragSkill = GetDraggingSkill(e);
            if (dragSkill != null)
            {
                base.OnDragDrop(e);
                return;
            }
            base.OnDragDrop(e);
            m_dragging = false;
            ClearDropMarker();
            if (!this.AllowRowReorder)
            {
                return;
            }
            if (base.SelectedItems.Count == 0)
            {
                return;
            }
            Point        cp         = base.PointToClient(new Point(e.X, e.Y));
            ListViewItem dragToItem = base.GetItemAt(cp.X, cp.Y);

            if (dragToItem == null)
            {
                return;
            }
            int dropIndex = dragToItem.Index;

            if (dropIndex > base.SelectedItems[0].Index)
            {
                dropIndex++;
            }

            if (ListViewItemsDragging != null)
            {
                ListViewDragEventArgs args = new ListViewDragEventArgs(base.SelectedItems[0].Index,
                                                                       base.SelectedItems.Count, dropIndex);
                ListViewItemsDragging(this, args);
                if (args.Cancel)
                {
                    return;
                }
            }

            ArrayList insertItems = new ArrayList(base.SelectedItems.Count);

            // Make a copy of all the selected items

            foreach (ListViewItem item in base.SelectedItems)
            {
                insertItems.Add(item.Clone());
            }

            // insert the copied items in reverse order at the drop index so
            // they appear in the right order after they've all been inserted
            for (int i = insertItems.Count - 1; i >= 0; i--)
            {
                base.Items.Insert(dropIndex, (ListViewItem)insertItems[i]);
            }
            // remove the selected items
            foreach (ListViewItem item in base.SelectedItems)
            {
                // must clear the items icon index or an exception is thrown when it is removed
                item.StateImageIndex = -1;
                base.Items.Remove(item);
            }

            if (ListViewItemsDragged != null)
            {
                ListViewItemsDragged(this, new EventArgs());
            }
            base.EnsureVisible(dropIndex);
        }