ICSharpCode.WpfDesign.Designer.Services.CreateComponentTool.designPanel_DragOver C# (CSharp) Method

designPanel_DragOver() private method

private designPanel_DragOver ( object sender, System.Windows.DragEventArgs e ) : void
sender object
e System.Windows.DragEventArgs
return void
        void designPanel_DragOver(object sender, DragEventArgs e)
        {
            try {
                IDesignPanel designPanel = (IDesignPanel)sender;
                e.Effects = DragDropEffects.Copy;
                e.Handled = true;
                Point p = e.GetPosition(designPanel);

                if (moveLogic == null) {
                    if (e.Data.GetData(typeof(CreateComponentTool)) != this) return;
                    // TODO: dropLayer in designPanel
                    designPanel.IsAdornerLayerHitTestVisible = false;
                    DesignPanelHitTestResult result = designPanel.HitTest(p, false, true, HitTestType.Default);

                    if (result.ModelHit != null) {
                        designPanel.Focus();
                        DesignItem createdItem = CreateItem(designPanel.Context);
                        if (AddItemWithDefaultSize(result.ModelHit, createdItem, e.GetPosition(result.ModelHit.View))) {
                            moveLogic = new MoveLogic(createdItem);

                            if (designPanel.Context.Services.Component is XamlComponentService) {
                                ((XamlComponentService) designPanel.Context.Services.Component).RaiseComponentRegisteredAndAddedToContainer(createdItem);
                            }

                            createPoint = p;
                            // We'll keep the ChangeGroup open as long as the moveLogic is active.
                        } else {
                            // Abort the ChangeGroup created by the CreateItem() call.
                            changeGroup.Abort();
                        }
                    }
                } else if ((moveLogic.ClickedOn.View as FrameworkElement).IsLoaded) {
                    if (moveLogic.Operation == null) {
                        moveLogic.Start(createPoint);
                    } else {
                        moveLogic.Move(p);
                    }
                }
            } catch (Exception x) {
                DragDropExceptionHandler.RaiseUnhandledException(x);
            }
        }