Exemple #1
0
        protected override void Move(double deltaX, double deltaY)
        {
            base.Move(deltaX, deltaY);
            MoveChildren(deltaX, deltaY);
            Canvas canvas = VisualTreeHelper.GetParent(VisualTreeHelper.GetParent(this.Parent)) as Canvas;
            UIElementCollection children = canvas.Children;

            foreach (var linkInstanceFrom in LinksFrom)
            {
                EdgeType linkFrom = GetObjectType <EdgeType>(children.Single(item =>
                {
                    EdgeType edgeType = GetObjectType <EdgeType>(item);
                    return(edgeType == null ? false : edgeType.DataContext == linkInstanceFrom);
                }));
                linkFrom.MoveStartPort(deltaX, deltaY);
            }
            foreach (var linkInstanceTo in LinksTo)
            {
                EdgeType linkTo = GetObjectType <EdgeType>(children.Single(item =>
                {
                    EdgeType edgeType = GetObjectType <EdgeType>(item);
                    return(edgeType == null ? false : edgeType.DataContext == linkInstanceTo);
                }));
                linkTo.MoveEndPort(deltaX, deltaY);
            }
        }
Exemple #2
0
        private void NodeType_SizeChanged(object sender, SizeChangedEventArgs e)
        {
            if (e.PreviousSize != new Size(0, 0))
            {
                Canvas canvas = VisualTreeHelper.GetParent(VisualTreeHelper.GetParent(this.Parent)) as Canvas;
                UIElementCollection children = canvas.Children;
                foreach (var linkInstanceFrom in LinksFrom)
                {
                    EdgeType linkFrom = GetObjectType <EdgeType>(children.Single(item =>
                    {
                        EdgeType edgeType =
                            GetObjectType <EdgeType>(item);
                        return(edgeType == null
                                                                                                   ? false
                                                                                                   : edgeType.
                               DataContext ==
                               linkInstanceFrom);
                    }));

                    IEnumerable <UIElement> ports = (this.Content as Panel).Children.Where(item => item is Port);
                    Port   portFrom            = ports.ElementAt((int)Math.Floor(linkFrom.PortFrom)) as Port;
                    double portNearestPosition = linkFrom.PortFrom - Math.Floor(linkFrom.PortFrom);

                    linkFrom.SetStartPortPosition(
                        X + portFrom.Position.X + portFrom.TransformedWidth * portNearestPosition,
                        Y + portFrom.Position.Y + portFrom.TransformedHeight * portNearestPosition);
                }
                foreach (var linkInstanceTo in LinksTo)
                {
                    EdgeType linkTo = GetObjectType <EdgeType>(children.Single(item =>
                    {
                        EdgeType edgeType =
                            GetObjectType <EdgeType>(item);
                        return(edgeType == null
                                                                                                 ? false
                                                                                                 : edgeType.DataContext ==
                               linkInstanceTo);
                    }));

                    IEnumerable <UIElement> ports = (this.Content as Panel).Children.Where(item => item is Port);
                    Port   portTo = ports.ElementAt((int)Math.Floor(linkTo.PortTo)) as Port;
                    double portNearestPosition = linkTo.PortTo - Math.Floor(linkTo.PortTo);

                    linkTo.SetEndPortPosition(
                        X + portTo.Position.X + portTo.TransformedWidth * portNearestPosition - linkTo.X,
                        Y + portTo.Position.Y + portTo.TransformedHeight * portNearestPosition - linkTo.Y);
                }
            }
        }
Exemple #3
0
        private void MoveChildren(double deltaX, double deltaY)
        {
            Canvas canvas = VisualTreeHelper.GetParent(VisualTreeHelper.GetParent(this.Parent)) as Canvas;
            UIElementCollection children = canvas.Children;

            foreach (var nodeInstance in (this.DataContext as NodeInstance).NodeChildren)
            {
                NodeType node = GetObjectType <NodeType>(children.Single(item =>
                {
                    NodeType nodeType = GetObjectType <NodeType>(item);
                    return(nodeType == null ? false : nodeType.DataContext == nodeInstance);
                }));
                node.Move(deltaX, deltaY);
            }
        }