private void MouseDownObject(MouseButtonEventArgs e) { if (focusedObject != TargetObject(e)) { focusedObject = TargetObject(e); OnPropertyChanged("ClassName"); if (State != EMainViewModel.AddingLine) { Message = focusedObject.ToString() + " was selected."; } return; } if (focusedObject is IShape) { var shape = focusedObject as IShape; if (shape is Dot && (shape as Dot).attachedClass != null) { return; } initialMousePosition = RelativeMousePosition(); initialObjectPosition = new Point(shape.X, shape.Y); e.MouseDevice.Target.CaptureMouse(); State = EMainViewModel.MovingObject; } }
private void AddArrow() { State = EMainViewModel.AddingLine; addingLineType = ELine.Arrow; focusedObject = null; Message = "Select first dot."; }
private void MouseLeftButtonUp(MouseButtonEventArgs e) { // Point p = e.GetPosition(Application.Current.MainWindow.FindName("MainCanvas") as Grid); Point p = RelativeMousePosition(); if (State == EMainViewModel.AddingDot) { e.Handled = true; State = EMainViewModel.Null; if (!MouseInCanvas()) { return; } // TODO Break line by dropping dot on line. Needs its own Command class. //var visualElement = TargetObject(e); //if (visualElement is Line) //{ // var line = visualElement as Line; // AddAndExecute(new AddDotCommand(Dots, new Dot() { CanvasCenterX = p.X, CanvasCenterY = p.Y })); // var dot = Dots.Last(); // if (line.Style == ELine.Dashed) // AddAndExecute(new AddLineCommand(Lines, new Line() { From = line.From, To = dot, Style = ELine.Dashed })); // else // AddAndExecute(new AddLineCommand(Lines, new Line() { From = line.From, To = dot, Style = ELine.Solid })); // AddAndExecute(new AddLineCommand(Lines, new Line() { From = dot, To = line.To, Style = line.Style })); // AddAndExecute(new RemoveLineCommand(Lines, line)); //} //else AddAndExecute(new AddDotCommand(Dots, new Dot() { CanvasCenterX = p.X, CanvasCenterY = p.Y })); Message = "Dot added."; } else if (State == EMainViewModel.AddingClass) { e.Handled = true; State = EMainViewModel.Null; if (!MouseInCanvas()) { return; } AddAndExecute(new AddClassCommand(Classes, new Class() { CanvasCenterX = p.X, CanvasCenterY = p.Y, Style = addingClassType, Name = "Unnamed " + addingClassType }, Dots)); Message = addingClassType + " was added."; } else if (State == EMainViewModel.AddingLine && !(TargetObject(e) is Dot) && MouseInCanvas()) { e.Handled = true; focusedObject = null; State = EMainViewModel.Null; Message = "Adding line failed."; } }
private void MouseUpObject(MouseButtonEventArgs e) { var shape = focusedObject as IShape; var mousePosition = RelativeMousePosition(); if (State == EMainViewModel.AddingLine) { if (focusedObject is Dot) { if (addingLineFrom == null) { addingLineFrom = focusedObject as Dot; Message = "Select second dot."; return; } else if (addingLineFrom != focusedObject as Dot) { AddAndExecute(new AddLineCommand(Lines, new Line() { From = addingLineFrom, To = focusedObject as Dot, Style = addingLineType })); Message = "Line added."; } } focusedObject = null; addingLineFrom = null; e.Handled = true; State = EMainViewModel.Null; } else if (Mouse.Captured != null && State == EMainViewModel.MovingObject) { shape.X = initialObjectPosition.X; shape.Y = initialObjectPosition.Y; e.MouseDevice.Target.ReleaseMouseCapture(); State = EMainViewModel.Null; if (MouseInCanvas()) { AddAndExecute(new MoveShapeCommand(shape, mousePosition.X - initialMousePosition.X, mousePosition.Y - initialMousePosition.Y)); } else { shape.OnMoveEnd(); Message = "Shape was out of bounds."; } } }
private void DragAndDropEnumeration() { State = EMainViewModel.AddingClass; addingClassType = EClass.Enumeration; Message = "Drag enumeration into canvas."; }
private void DragAndDropAbstract() { State = EMainViewModel.AddingClass; addingClassType = EClass.Abstract; Message = "Drag abstract into canvas."; }
private void DragAndDropInterface() { State = EMainViewModel.AddingClass; addingClassType = EClass.Interface; Message = "Drag interface into canvas."; }
private void DragAndDropClass() { State = EMainViewModel.AddingClass; addingClassType = EClass.Class; Message = "Drag class into canvas."; }
private void DragAndDropDot() { State = EMainViewModel.AddingDot; Message = "Drag dot into canvas."; }