Esempio n. 1
0
 public override void OnDoubleClick(ShapeMouseEventArgs args)
 {
     if (args.BoundingBox.Data == TextIdentifier)
     {
         BeginEditText(args.Sender);
     }
 }
Esempio n. 2
0
        public override void OnMouseDown(ShapeMouseEventArgs args)
        {
            args.Sender.ClearSelection();
            Selected = true;

            if (args.BoundingBox.Data == RightResizeIdentifier)
            {
                mouseDownPos = new Point(args.X, args.Y);
                SelectedObject = null;
                args.Redraw = true;
            }
            else if (args.BoundingBox.Data == LeftResizeIdentifier)
            {
                mouseDownPos = new Point(args.X, args.Y);
                SelectedObject = null;
                args.Redraw = true;
            }
            else
            {
                mouseDownPos = new Point(args.X, args.Y);
                mouseDownShapePos = Bounds.Location;
                SelectedObject = null;

                args.Redraw = true;
            }
        }
Esempio n. 3
0
        private static void MovePort(ShapeMouseEventArgs args, Rectangle bounds, ref int offset, ref UmlPortSide side,
                                     int oppositeOffset, UmlPortSide oppositeSide)
        {
            int x = args.X;
            int y = args.Y;

            int half = bounds.Width/2;
            int center = bounds.X + half;
            int xd = Math.Abs(x - center);
            int top = bounds.Top + half - xd;
            int bottom = bounds.Bottom - half + xd;


            if (x < center)
            {
                //left of                
                side = UmlPortSide.Left;
            }
            else
            {
                //right of
                side = UmlPortSide.Right;
            }

            if (y < top)
                side = UmlPortSide.Top;

            if (y > bottom)
                side = UmlPortSide.Bottom;


            if (side == UmlPortSide.Top || side == UmlPortSide.Bottom)
            {
                offset = args.X - bounds.Left;

                if (args.X < bounds.Left)
                    offset = 0;

                if (args.X > bounds.Right)
                    offset = bounds.Width;
            }

            if (side == UmlPortSide.Left || side == UmlPortSide.Right)
            {
                offset = args.Y - bounds.Top;

                if (args.Y < bounds.Top)
                    offset = 0;

                if (args.Y > bounds.Bottom)
                    offset = bounds.Height;
            }

            if ((side == UmlPortSide.Left || side == UmlPortSide.Right) &&
                (oppositeSide == UmlPortSide.Left || oppositeSide == UmlPortSide.Right))
            {
                if (Math.Abs(offset - oppositeOffset) < 10)
                    offset = oppositeOffset;
            }

            if ((side == UmlPortSide.Top || side == UmlPortSide.Bottom) &&
                (oppositeSide == UmlPortSide.Top || oppositeSide == UmlPortSide.Bottom))
            {
                if (Math.Abs(offset - oppositeOffset) < 10)
                    offset = oppositeOffset;
            }
        }
Esempio n. 4
0
 public override void OnMouseUp(ShapeMouseEventArgs args)
 {
     args.Redraw = true;
 }
Esempio n. 5
0
 public virtual void OnDoubleClick(ShapeMouseEventArgs args)
 {
 }
Esempio n. 6
0
        private void MainCanvas_DoubleClick(object sender, EventArgs e)
        {
            var x = (int) ((mouseDownPoint.X - MainCanvas.AutoScrollPosition.X)/Zoom);
            var y = (int) ((mouseDownPoint.Y - MainCanvas.AutoScrollPosition.Y)/Zoom);

            for (int i = BoundingBoxes.Count - 1; i >= 0; i--)
            {
                BoundingBox bbox = BoundingBoxes[i];
                if (bbox.Bounds.Contains(x, y))
                {
                    if (bbox.Target is Shape)
                    {
                        currentBoundingBox = bbox;
                        var shape = (Shape) bbox.Target;
                        var args = new ShapeMouseEventArgs();
                        args.BoundingBox = bbox;
                        args.X = x;
                        args.Y = y;
                        args.Button = MouseButtons.Left;
                        args.Sender = this;
                        shape.OnDoubleClick(args);
                        if (args.Redraw)
                            Refresh();
                    }

                    return;
                }
            }
        }
Esempio n. 7
0
        private void MainCanvas_MouseDown(object sender, MouseEventArgs e)
        {
            EndInput();
            var x = (int) ((e.X - MainCanvas.AutoScrollPosition.X)/Zoom);
            var y = (int) ((e.Y - MainCanvas.AutoScrollPosition.Y)/Zoom);

            if (EditMode == EditMode.BeginDrawRelation)
            {
                mouseDownPoint = new Point(e.X, e.Y);
                EditMode = EditMode.DrawRelation;
                relationStart = null;

                for (int i = BoundingItemes.Count - 1; i >= 0; i--)
                {
                    BoundingItem bitem = BoundingItemes[i];
                    if (bitem.HitTest(x, y))
                    {
                        if (bitem.Target is Shape)
                        {
                            relationStart = bitem.Target as Shape;
                        }
                    }
                }
            }
            else if (EditMode == EditMode.Normal)
            {
                mouseDownPoint = new Point(e.X, e.Y);
                mouseDownAutoscrollPoint = new Point(-MainCanvas.AutoScrollPosition.X, -MainCanvas.AutoScrollPosition.Y);

                for (int i = BoundingItemes.Count - 1; i >= 0; i--)
                {
                    BoundingItem bitem = BoundingItemes[i];
                    if (bitem.HitTest(x, y))
                    {
                        if (bitem.Target is Shape)
                        {
                            currentBoundingItem = bitem;
                            var shape = (Shape) bitem.Target;
                            currentShape = shape;
                            var args = new ShapeMouseEventArgs
                                       {
                                           BoundingItem = bitem,
                                           X = x,
                                           Y = y,
                                           Button = e.Button,
                                           Sender = this,
                                           GridSize = GridSize,
                                           SnapToGrid = SnapToGrid
                                       };
                            shape.OnMouseDown(args);
                            if (args.Redraw)
                                Refresh();
                        }

                        return;
                    }
                }
                isPanning = true;
            }
        }
        public override void OnMouseUp(ShapeMouseEventArgs args)
        {
            foreach (UmlTypeMemberSection section in TypeMemberSections)
            {
                if (args.BoundingBox.Data == section.AddNewIdentifier)
                {
                    UmlTypeMember newMember = TypedDataSource.CreateTypeMember(section.Name);
                    SelectedObject = newMember;
                    BeginRenameProperty(args.Sender, newMember);
                    args.Redraw = true;
                }
            }

            //if (args.BoundingBox.Data == AddNewPropertyIdentifier)
            //{
            //    UmlTypeMember newProperty = TypedDataSource.CreateTypeMember("Property");
            //    this.SelectedObject = newProperty;

            //    BeginRenameProperty(args.Sender, newProperty);

            //    args.Redraw = true;
            //}

            if (args.BoundingBox.Data == TypeExpanderIdentifier)
            {
                Expanded = !Expanded;
            }
            args.Redraw = true;
        }
Esempio n. 9
0
        private void MainCanvas_DoubleClick(object sender, EventArgs e)
        {
            var x = (int) ((mouseDownPoint.X - MainCanvas.AutoScrollPosition.X)/Zoom);
            var y = (int) ((mouseDownPoint.Y - MainCanvas.AutoScrollPosition.Y)/Zoom);

            for (int i = BoundingItemes.Count - 1; i >= 0; i--)
            {
                BoundingItem bitem = BoundingItemes[i];
                if (bitem.HitTest(x,y))
                {
                    if (bitem.Target is Shape)
                    {
                        currentBoundingItem = bitem;
                        var shape = (Shape) bitem.Target;
                        var args = new ShapeMouseEventArgs
                                   {BoundingItem = bitem, X = x, Y = y, Button = MouseButtons.Left, Sender = this};
                        shape.OnDoubleClick(args);
                        if (args.Redraw)
                            Refresh();
                    }

                    return;
                }
            }
        }
Esempio n. 10
0
        private void MainCanvas_MouseUp(object sender, MouseEventArgs e)
        {
            var x = (int) ((e.X - MainCanvas.AutoScrollPosition.X)/Zoom);
            var y = (int) ((e.Y - MainCanvas.AutoScrollPosition.Y)/Zoom);

            if (EditMode == EditMode.DrawRelation)
            {
                relationEnd = null;


                for (int i = BoundingItemes.Count - 1; i >= 0; i--)
                {
                    BoundingItem bitem = BoundingItemes[i];
                    if (bitem.HitTest(x, y))
                    {
                        if (bitem.Target is Shape)
                        {
                            relationEnd = bitem.Target as Shape;
                        }
                    }
                }

                endDrawRelation(relationStart, relationEnd);

                //end drawing
                EditMode = EditMode.Normal;
                MainCanvas.Refresh();
            }
            else if (EditMode == EditMode.Normal)
            {
                Cursor = Cursors.Default;
                currentBoundingItem = null;
                isPanning = false;
                for (int i = BoundingItemes.Count - 1; i >= 0; i--)
                {
                    BoundingItem bitem = BoundingItemes[i];
                    if (bitem.HitTest(x, y))
                    {
                        if (bitem.Target is Shape)
                        {
                            var shape = (Shape) bitem.Target;
                            var args = new ShapeMouseEventArgs
                                       {
                                           BoundingItem = bitem,
                                           X = x,
                                           Y = y,
                                           Button = e.Button,
                                           Sender = this,
                                           GridSize = GridSize,
                                           SnapToGrid = SnapToGrid
                                       };
                            shape.OnMouseUp(args);
                            if (args.Redraw)
                                Refresh();
                        }

                        return;
                    }
                }
            }
        }
Esempio n. 11
0
        private void MainCanvas_MouseUp(object sender, MouseEventArgs e)
        {
            var x = (int) ((e.X - MainCanvas.AutoScrollPosition.X)/Zoom);
            var y = (int) ((e.Y - MainCanvas.AutoScrollPosition.Y)/Zoom);

            if (EditMode == EditMode.DrawRelation)
            {
                relationEnd = null;

                for (int i = BoundingBoxes.Count - 1; i >= 0; i--)
                {
                    BoundingBox bbox = BoundingBoxes[i];
                    if (bbox.Bounds.Contains(x, y))
                    {
                        if (bbox.Target is Shape)
                        {
                            relationEnd = bbox.Target as Shape;
                        }
                    }
                }

                endDrawRelation(relationStart, relationEnd);

                //end drawing
                EditMode = EditMode.Normal;
                MainCanvas.Refresh();
            }
            else if (EditMode == EditMode.Normal)
            {
                Cursor = Cursors.Default;
                currentBoundingBox = null;
                isPanning = false;
                for (int i = BoundingBoxes.Count - 1; i >= 0; i--)
                {
                    BoundingBox bbox = BoundingBoxes[i];
                    if (bbox.Bounds.Contains(x, y))
                    {
                        if (bbox.Target is Shape)
                        {
                            var shape = (Shape) bbox.Target;
                            var args = new ShapeMouseEventArgs();
                            args.BoundingBox = bbox;
                            args.X = x;
                            args.Y = y;
                            args.Button = e.Button;
                            args.Sender = this;
                            args.GridSize = GridSize;
                            args.SnapToGrid = SnapToGrid;
                            shape.OnMouseUp(args);
                            if (args.Redraw)
                                Refresh();
                        }

                        return;
                    }
                }
            }
        }
Esempio n. 12
0
        private void MainCanvas_MouseMove(object sender, MouseEventArgs e)
        {
            if (EditMode == EditMode.DrawRelation)
            {
                mouseCurrentPoint = new Point(e.X, e.Y);
                MainCanvas.Refresh();
            }
            else if (EditMode == EditMode.Normal)
            {
                var x = (int) ((e.X - MainCanvas.AutoScrollPosition.X)/Zoom);
                var y = (int) ((e.Y - MainCanvas.AutoScrollPosition.Y)/Zoom);

                if (e.Button != MouseButtons.None)
                {
                    if (currentBoundingBox == null)
                    {
                        if (isPanning)
                        {
                            int dx = mouseDownPoint.X - e.X;
                            int dy = mouseDownPoint.Y - e.Y;

                            var newPos = new Point(mouseDownAutoscrollPoint.X + dx, mouseDownAutoscrollPoint.Y + dy);
                            MainCanvas.AutoScrollPosition = newPos;
                            Cursor = Cursors.SizeAll;
                        }
                    }
                    else
                    {
                        var shape = (Shape) currentBoundingBox.Target;
                        var args = new ShapeMouseEventArgs();
                        args.BoundingBox = currentBoundingBox;
                        args.X = x;
                        args.Y = y;
                        args.Button = e.Button;
                        args.Sender = this;
                        args.GridSize = GridSize;
                        args.SnapToGrid = SnapToGrid;
                        shape.OnMouseMove(args);
                        if (args.Redraw)
                            MainCanvas.Refresh();
                    }
                }
                else
                {
                    for (int i = BoundingBoxes.Count - 1; i >= 0; i--)
                    {
                        BoundingBox bbox = BoundingBoxes[i];
                        if (bbox.Bounds.Contains(x, y))
                        {
                            if (bbox.Target is Shape)
                            {
                                var shape = (Shape) bbox.Target;
                                var args = new ShapeMouseEventArgs();
                                args.BoundingBox = bbox;
                                args.X = x;
                                args.Y = y;
                                args.Button = e.Button;
                                args.Sender = this;
                                shape.OnMouseMove(args);
                                if (args.Redraw)
                                    MainCanvas.Refresh();
                            }

                            return;
                        }
                    }
                }
            }
        }
Esempio n. 13
0
        private void MainCanvas_MouseDown(object sender, MouseEventArgs e)
        {
            EndInput();
            var x = (int) ((e.X - MainCanvas.AutoScrollPosition.X)/Zoom);
            var y = (int) ((e.Y - MainCanvas.AutoScrollPosition.Y)/Zoom);

            if (EditMode == EditMode.BeginDrawRelation)
            {
                mouseDownPoint = new Point(e.X, e.Y);
                EditMode = EditMode.DrawRelation;
                relationStart = null;

                for (int i = BoundingBoxes.Count - 1; i >= 0; i--)
                {
                    BoundingBox bbox = BoundingBoxes[i];
                    if (bbox.Bounds.Contains(x, y))
                    {
                        if (bbox.Target is Shape)
                        {
                            relationStart = bbox.Target as Shape;
                        }
                    }
                }
            }
            else if (EditMode == EditMode.Normal)
            {
                mouseDownPoint = new Point(e.X, e.Y);
                mouseDownAutoscrollPoint = new Point(-MainCanvas.AutoScrollPosition.X, -MainCanvas.AutoScrollPosition.Y);

                for (int i = BoundingBoxes.Count - 1; i >= 0; i--)
                {
                    BoundingBox bbox = BoundingBoxes[i];
                    if (bbox.Bounds.Contains(x, y))
                    {
                        if (bbox.Target is Shape)
                        {
                            currentBoundingBox = bbox;
                            var shape = (Shape) bbox.Target;
                            currentShape = shape;
                            var args = new ShapeMouseEventArgs();
                            args.BoundingBox = bbox;
                            args.X = x;
                            args.Y = y;
                            args.Button = e.Button;
                            args.Sender = this;
                            args.GridSize = GridSize;
                            args.SnapToGrid = SnapToGrid;
                            shape.OnMouseDown(args);
                            if (args.Redraw)
                                Refresh();
                        }

                        return;
                    }
                }
                isPanning = true;
            }
        }
Esempio n. 14
0
        public override void OnMouseDown(ShapeMouseEventArgs args)
        {
            args.Sender.ClearSelection();
            Selected = true;

            if (args.BoundingBox.Data == RightResizeIdentifier)
            {
                mouseDownPos = new Point(args.X, args.Y);
                SelectedObject = null;
                args.Redraw = true;
            }
            else if (args.BoundingBox.Data == LeftResizeIdentifier)
            {
                mouseDownPos = new Point(args.X, args.Y);
                SelectedObject = null;
                args.Redraw = true;
            }
            else if (args.BoundingBox.Data == PropertiesIdentifier)
            {
                SelectedObject = PropertiesIdentifier;
                args.Redraw = true;
            }
            else if (args.BoundingBox.Data is UmlTypeMember)
            {
                SelectedObject = args.BoundingBox.Data as UmlTypeMember;
                args.Redraw = true;
            }
            else if (args.BoundingBox.Data == CaptionIdentifier)
            {
                mouseDownPos = new Point(args.X, args.Y);
                mouseDownShapePos = Bounds.Location;
                SelectedObject = null;

                args.Redraw = true;
            }
            else
            {
                foreach (UmlTypeMemberSection section in TypeMemberSections)
                {
                    if (args.BoundingBox.Data == section.CaptionIdentifier)
                    {
                        SelectedObject = section.CaptionIdentifier;
                        args.Redraw = true;
                    }

                    if (args.BoundingBox.Data == section.ExpanderIdentifier)
                    {
                        SelectedObject = section.CaptionIdentifier;
                        section.Expanded = !section.Expanded;
                        args.Redraw = true;
                    }
                }
            }
        }
Esempio n. 15
0
        private void MainCanvas_MouseMove(object sender, MouseEventArgs e)
        {
            if (EditMode == EditMode.DrawRelation)
            {
                mouseCurrentPoint = new Point(e.X, e.Y);
                MainCanvas.Refresh();
            }
            else if (EditMode == EditMode.Normal)
            {
                var x = (int) ((e.X - MainCanvas.AutoScrollPosition.X)/Zoom);
                var y = (int) ((e.Y - MainCanvas.AutoScrollPosition.Y)/Zoom);

                if (e.Button != MouseButtons.None)
                {
                    if (currentBoundingItem == null)
                    {
                        if (isPanning)
                        {
                            int dx = mouseDownPoint.X - e.X;
                            int dy = mouseDownPoint.Y - e.Y;

                            var newPos = new Point(mouseDownAutoscrollPoint.X + dx, mouseDownAutoscrollPoint.Y + dy);
                            MainCanvas.AutoScrollPosition = newPos;
                            Cursor = Cursors.SizeAll;
                        }
                    }
                    else
                    {
                        var shape = (Shape) currentBoundingItem.Target;
                        var args = new ShapeMouseEventArgs
                                   {
                                       BoundingItem = currentBoundingItem,
                                       X = x,
                                       Y = y,
                                       Button = e.Button,
                                       Sender = this,
                                       GridSize = GridSize,
                                       SnapToGrid = SnapToGrid
                                   };
                        shape.OnMouseMove(args);
                        if (args.Redraw)
                            MainCanvas.Refresh();
                    }
                }
                else
                {
                    for (int i = BoundingItemes.Count - 1; i >= 0; i--)
                    {
                        BoundingItem bitem = BoundingItemes[i];
                        if (bitem.HitTest(x, y))
                        {
                            if (bitem.Target is Shape)
                            {
                                var shape = (Shape) bitem.Target;
                                var args = new ShapeMouseEventArgs
                                           {BoundingItem = bitem, X = x, Y = y, Button = e.Button, Sender = this};
                                shape.OnMouseMove(args);
                                if (args.Redraw)
                                    MainCanvas.Refresh();
                            }

                            return;
                        }
                    }
                }
            }
        }
Esempio n. 16
0
        public override void OnMouseMove(ShapeMouseEventArgs args)
        {
            if (args.BoundingBox.Data == RightResizeIdentifier && args.Button == MouseButtons.Left)
            {
                int diff = args.X - Bounds.Left;
                if (diff < 100)
                    diff = 100;

                Bounds = new Rectangle(Bounds.X, Bounds.Y, diff, Bounds.Height);
                args.Redraw = true;
            }

            if (args.BoundingBox.Data == LeftResizeIdentifier && args.Button == MouseButtons.Left)
            {
                int diff = Bounds.Right - args.X;
                if (diff < 100)
                    diff = 100;

                if (diff + args.X > Bounds.Right)
                {
                    Bounds = new Rectangle(Bounds.Right - 100, Bounds.Y, 100, Bounds.Height);
                    args.Redraw = true;
                }
                else
                {
                    Bounds = new Rectangle(args.X, Bounds.Y, diff, Bounds.Height);
                    args.Redraw = true;
                }
            }

            if (args.BoundingBox.Data == CaptionIdentifier && args.Button == MouseButtons.Left)
            {
                int dx = args.X - mouseDownPos.X;
                int dy = args.Y - mouseDownPos.Y;

                int shapeX = mouseDownShapePos.X + dx;
                int shapeY = mouseDownShapePos.Y + dy;

                if (args.SnapToGrid)
                {
                    shapeX = shapeX - shapeX%args.GridSize;
                    shapeY = shapeY - shapeY%args.GridSize;
                }

                if (shapeX < 0)
                    shapeX = 0;

                if (shapeY < 0)
                    shapeY = 0;

                Bounds = new Rectangle(shapeX, shapeY, Bounds.Width, Bounds.Height);
                args.Redraw = true;
            }
        }
Esempio n. 17
0
 public override void OnMouseDown(ShapeMouseEventArgs args)
 {
     args.Sender.ClearSelection();
     Selected = true;
     args.Redraw = true;
 }
Esempio n. 18
0
        public override void OnDoubleClick(ShapeMouseEventArgs args)
        {
            foreach (UmlTypeMemberSection section in TypeMemberSections)
            {
                if (args.BoundingBox.Data == section.CaptionIdentifier)
                {
                    section.Expanded = !section.Expanded;
                    args.Redraw = true;
                }
            }

            if (args.BoundingBox.Data == CaptionIdentifier)
            {
                BeginRenameType(args.Sender);
            }

            if (args.BoundingBox.Data is UmlTypeMember)
            {
                BeginRenameProperty(args.Sender, args.BoundingBox.Data as UmlTypeMember);
                args.Redraw = true;
            }
        }
Esempio n. 19
0
        public override void OnMouseMove(ShapeMouseEventArgs args)
        {
            if (args.BoundingItem.Data == StartPortIdentifier && args.Button == MouseButtons.Left)
            {
                Rectangle bounds = DataSource.Start.Bounds;

                int offset = 0;
                UmlPortSide side = DataSource.StartPortSide;

                int oppositeOffset = DataSource.EndPortOffset;
                UmlPortSide oppositeSide = DataSource.EndPortSide;


                MovePort(args, bounds, ref offset, ref side, oppositeOffset, oppositeSide);

                DataSource.StartPortSide = side;
                DataSource.StartPortOffset = offset;
                args.Redraw = true;
            }

            if (args.BoundingItem.Data == EndPortIdentifier && args.Button == MouseButtons.Left)
            {
                Rectangle bounds = DataSource.End.Bounds;

                int offset = 0;
                UmlPortSide side = DataSource.EndPortSide;

                int oppositeOffset = DataSource.StartPortOffset;
                UmlPortSide oppositeSide = DataSource.StartPortSide;


                MovePort(args, bounds, ref offset, ref side, oppositeOffset, oppositeSide);

                DataSource.EndPortSide = side;
                DataSource.EndPortOffset = offset;
                args.Redraw = true;
            }
        }
Esempio n. 20
0
 public virtual void OnMouseUp(ShapeMouseEventArgs args)
 {
 }
Esempio n. 21
0
        public override void OnMouseDown(ShapeMouseEventArgs args)
        {
            args.Sender.ClearSelection();
            Selected = true;
            args.Redraw = true;

            mouseDownPoint = new Point(args.X, args.Y);
        }