Пример #1
0
 public ArrowViewModel(ClassViewModel nVMEndA, ClassViewModel nVMEndB, EArrows type)
 {
     arrow    = new Arrow();
     DiagramA = nVMEndA;
     DiagramB = nVMEndB;
     Type     = arrowTypeConverter(type);
     initArrow();
     newPath();
 }
Пример #2
0
        private EArrows arrowTypeConverter(EArrows type)
        {
            switch (type)
            {
            case EArrows.ASSOCIATION:
                thisArrow = normArrow;
                Dashed    = "1 0";
                ColorFill = "Transparent";
                return(EArrows.ASSOCIATION);


            case EArrows.NORMAL:
                thisArrow = new PointCollection();
                Dashed    = "1 0";
                ColorFill = "Transparent";
                return(EArrows.NORMAL);

            default:
                thisArrow = normArrow;
                Dashed    = "1 0";
                ColorFill = "Transparent";
                return(EArrows.NORMAL);
            }
        }
 public void AddNormalArrow()
 {
     type = EArrows.NORMAL;
     AddArrow();
 }
        public void MouseUpDiagram(MouseEventArgs e)
        {
            FrameworkElement movingClass = (FrameworkElement)e.MouseDevice.Target;

            FocusedClass = (ClassViewModel)movingClass.DataContext;

            if (isAddingArrow)
            {
                if (startArrow == null)
                {
                    startArrow = FocusedClass;
                }
                else if (startArrow != FocusedClass)
                {
                    undoRedoController.AddAndExecute(new AddArrowCommand(arrowCollection, new ArrowViewModel(startArrow, FocusedClass, type)));
                    isAddingArrow = false;
                    startArrow    = null;
                    type          = EArrows.NORMAL;
                }
            }
            else
            {
                if (oldMousePositionPoint == e.GetPosition(FindParent <Canvas>((FrameworkElement)e.MouseDevice.Target)))
                {
                    e.MouseDevice.Target.ReleaseMouseCapture();
                    return;
                }

                ClassViewModel movingDiagram = (ClassViewModel)movingClass.DataContext;
                canvas = FindParent <Canvas>(movingClass);
                Point mousePosition = Mouse.GetPosition(canvas);

                int X, Y, oldX, oldY;
                if ((int)mousePosition.X - relativeMousePositionX >= 0)
                {
                    X = (int)mousePosition.X - relativeMousePositionX;
                }
                else
                {
                    X = 0;
                }
                if ((int)mousePosition.Y - relativeMousePositionY >= 0)
                {
                    Y = (int)mousePosition.Y - relativeMousePositionY;
                }
                else
                {
                    Y = 0;
                }

                if ((int)moveArrowPoint.X - relativeMousePositionX >= 0)
                {
                    oldX = (int)moveArrowPoint.X - relativeMousePositionX;
                }
                else
                {
                    oldX = 0;
                }
                if ((int)moveArrowPoint.Y - relativeMousePositionY >= 0)
                {
                    oldY = (int)moveArrowPoint.Y - relativeMousePositionY;
                }
                else
                {
                    oldY = 0;
                }

                undoRedoController.AddAndExecute(new MoveDiagramCommand(movingDiagram, X, Y, oldX, oldY, arrowCollection));
                moveArrowPoint         = new Point();
                relativeMousePositionX = -1;
                relativeMousePositionY = -1;
                e.MouseDevice.Target.ReleaseMouseCapture();
            }
        }
 public void AddAssociationArrow()
 {
     type = EArrows.ASSOCIATION;
     AddArrow();
 }