Exemple #1
0
        private void Rec_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            NewCanvas temp = sender as NewCanvas;

            // Clone selected item
            DraggedItem = temp.Clone();
            // Add event handler
            DraggedItem.MouseLeftButtonUp += new MouseButtonEventHandler(Rec_MouseLeftButtonUp);
            DraggedItem.MouseMove         += new System.Windows.Input.MouseEventHandler(Rec_MouseMove);
            // Add to parent element
            //Console.WriteLine(DraggedItem.Parent);

            // Move clone to RootCanvas
            // Group_Basic.Children.Add(DraggedItem);
            var canvas = temp.Parent as Canvas;

            //var grid = canvas.Parent as Border;
            RecPos.X = (Double)DraggedItem.GetValue(Canvas.LeftProperty) +
                       (Double)canvas.Parent.GetValue(Canvas.LeftProperty) + (Double)Canvas1.GetValue(Canvas.LeftProperty);
            RecPos.Y = (Double)DraggedItem.GetValue(Canvas.TopProperty) +
                       (Double)canvas.Parent.GetValue(Canvas.TopProperty) + (Double)Canvas1.GetValue(Canvas.TopProperty) + Define.YPosOffset_OnDragging;
            DraggedItem.SetValue(Canvas.TopProperty, RecPos.Y);
            DraggedItem.SetValue(Canvas.LeftProperty, RecPos.X);
            //Console.WriteLine("(x, y) = (" + RecPos.X + ", " + RecPos.Y + ")");
            RootCanvas.Children.Add(DraggedItem);
            // drag setup
            MousePos   = e.GetPosition(null);
            PosDelta.X = RecPos.X - MousePos.X;
            PosDelta.Y = RecPos.Y - MousePos.Y;
            IsDragging = true;

            // Update log
            Console.WriteLine(DateTime.Now.ToString() + " : Start dragging <" + DraggedItem.Name + ">");
        }
Exemple #2
0
        private void Rec_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            if (!IsDragging)
            {
                return;
            }

            // Get the position on Canvas2
            DraggedItem.SetValue(Canvas.LeftProperty, (Double)DraggedItem.GetValue(Canvas.LeftProperty) -
                                 (Double)Canvas2.GetValue(Canvas.LeftProperty));
            DraggedItem.SetValue(Canvas.TopProperty, (Double)DraggedItem.GetValue(Canvas.TopProperty) -
                                 (Double)Canvas2.GetValue(Canvas.TopProperty));

            // Item is on Canvas2 or not
            if ((Double)DraggedItem.GetValue(Canvas.LeftProperty) > 0 &&
                (Double)DraggedItem.GetValue(Canvas.TopProperty) > 0)
            {
                IsInArea = true;
            }
            else
            {
                IsInArea = false;
            }

            // Position is legal or not
            if (IsInArea && (IsEmpty || IsAnchored))
            {
                // Add to Canvas2
                if (IsEmpty)
                {
                    IsEmpty = false;
                    DraggedItem.AnchorPointType = Anchors.AnchorType_FirstBlock;
                }
                else
                {
                    DraggedItem.AnchorPointType = AnchorIndex;
                }
                RootCanvas.Children.Remove(DraggedItem);
                Canvas2.Children.Add(DraggedItem);
                Console.WriteLine(DateTime.Now.ToString() + " : Move <" + DraggedItem.Name + "> to <Canvas2>");

                NewCanvasList.Add(DraggedItem);
                Console.WriteLine(DateTime.Now.ToString() + " : Add <" + DraggedItem.Name + "> to List");

                // If is not anchored at the right anchor point
                if (AnchorIndex != (Define.AnchorNum - 1))
                {
                    // Update anchor point
                    Anchor[1].X = (Double)DraggedItem.GetValue(Canvas.LeftProperty) +
                                  (Double)Canvas2.GetValue(Canvas.LeftProperty);
                    Anchor[1].Y = (Double)DraggedItem.GetValue(Canvas.TopProperty) +
                                  (Double)Canvas2.GetValue(Canvas.TopProperty) + DraggedItem.Height + Anchors.VerticalMargin;
                    Anchor[0].X = Anchor[1].X - Anchors.Indent;
                    Anchor[0].Y = Anchor[1].Y;
                    Anchor[2].X = Anchor[1].X + Anchors.Indent;
                    Anchor[2].Y = Anchor[1].Y;
                    Anchor[3].X = (Double)DraggedItem.GetValue(Canvas.LeftProperty) +
                                  (Double)Canvas2.GetValue(Canvas.LeftProperty) + DraggedItem.Width + Anchors.HorizontalMargin;
                    Anchor[3].Y = (Double)DraggedItem.GetValue(Canvas.TopProperty) +
                                  (Double)Canvas2.GetValue(Canvas.TopProperty);
                    Console.WriteLine(DateTime.Now.ToString() + " : Update anchor points");
                }
            }
            else
            {
                // Delete illegal item
                Console.WriteLine(DateTime.Now.ToString() + " : Illegal placement. Delete <" + DraggedItem.Name + ">");
                RootCanvas.Children.Remove(DraggedItem);
                DraggedItem = null;
            }

            IsDragging = false;

            // Update log
            Console.WriteLine(DateTime.Now.ToString() + " : Finish dragging");
        }