LayoutFarm.Demo_DragSelectionBox.SetupActiveBoxProperties C# (CSharp) Method

SetupActiveBoxProperties() private method

private SetupActiveBoxProperties ( LayoutFarm box ) : void
box LayoutFarm
return void
        void SetupActiveBoxProperties(LayoutFarm.CustomWidgets.EaseBox box)
        {
            //1. mouse down         
            box.MouseDown += (s, e) =>
            {
                box.BackColor = KnownColors.FromKnownColor(KnownColor.DeepSkyBlue);
                e.MouseCursorStyle = MouseCursorStyle.Pointer;
                UIControllerBox userControllerBox = null;
                if (this.controllerBoxMode == ControllerBoxMode.MultipleBoxes)
                {
                    //multiple box
                    userControllerBox = GetFreeUserControllerBox();
                }
                else
                {
                    //single box
                    if (singleControllerBox != null)
                    {
                        ReleaseUserControllerBox(singleControllerBox);
                    }
                    //get new one
                    userControllerBox = singleControllerBox = GetFreeUserControllerBox();
                }
                //request user controller for this box
                userControllerBox.TargetBox = box;
                viewport.AddContent(userControllerBox);
                //location relative to global position of target box
                var globalTargetPos = box.GetGlobalLocation();
                userControllerBox.SetLocation(globalTargetPos.X - 5, globalTargetPos.Y - 5);
                userControllerBox.SetSize(box.Width + 10, box.Height + 10);
                userControllerBox.Visible = true;
                //move mouse capture to new controller box
                //for next drag
                e.SetMouseCapture(userControllerBox);
            };
            //2. mouse up
            box.MouseUp += (s, e) =>
            {
                e.MouseCursorStyle = MouseCursorStyle.Default;
                box.BackColor = Color.LightGray;
                RemoveAllUserControllerBoxes();
            };
            box.DragOver += (s, e) =>
            {
                switch (e.UserMsgFlags)
                {
                    case 1:
                        {   //sample only
                            box.BackColor = Color.Green;
                        }
                        break;
                    case 2:
                        {
                            //sample only
                            //leaving
                            box.BackColor = Color.Blue;
                        }
                        break;
                    case 3:
                        {
                            //drop
                            var sender = e.Sender as UIControllerBox;
                            var droppingBox = sender.TargetBox as UIBox;
                            if (droppingBox != null)
                            {
                                //move from original 
                                var parentBox = droppingBox.ParentUI as LayoutFarm.CustomWidgets.SimpleBox;
                                if (parentBox != null)
                                {
                                    var newParentGlobalLoca = box.GetGlobalLocation();
                                    var droppingGlobalLoca = droppingBox.GetGlobalLocation();
                                    parentBox.RemoveChild(droppingBox);
                                    box.AddChild(droppingBox);
                                    //TODO: review here , 
                                    //set location relative to other element
                                    droppingBox.SetLocation(
                                        droppingGlobalLoca.X - newParentGlobalLoca.X,
                                        droppingGlobalLoca.Y - newParentGlobalLoca.Y);
                                }
                                else
                                {
                                }
                            }
                        }
                        break;
                }
            };
        }