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; } }
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; } } }
public override void OnDoubleClick(ShapeMouseEventArgs args) { if (args.BoundingBox.Data == TextIdentifier) { BeginEditText(args.Sender); } }
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; } }
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; }
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; } } }
public override void OnMouseDown(ShapeMouseEventArgs args) { args.Sender.ClearSelection(); Selected = true; args.Redraw = true; mouseDownPoint = new Point(args.X, args.Y); }
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; } } } }
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; } }
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; } }
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; } } }
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; } }
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; } } } }
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; } } } } }
public virtual void OnDoubleClick(ShapeMouseEventArgs args) { }
public virtual void OnMouseMove(ShapeMouseEventArgs args) { }
public virtual void OnMouseDown(ShapeMouseEventArgs args) { }
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; } } } }
public override void OnMouseUp(ShapeMouseEventArgs args) { args.Redraw = true; }
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; } }
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; } } } } }
public override void OnMouseDown(ShapeMouseEventArgs args) { args.Sender.ClearSelection(); Selected = true; args.Redraw = true; }