Ejemplo n.º 1
0
        public LinkDrawing(ILinkableDrawing source, ILinkableDrawing destination,
			float lineWidth, float selectedLineWidth, LinkStyle linkStyle)
        {
            this.color = Color.Black;
            this.lineWidth = lineWidth;
            this.selectedLineWidth = selectedLineWidth;
            this.linkStyle = linkStyle;
            this.sourcePoint = new CardinalLinkPoint(this);
            this.destinationPoint = new CardinalLinkPoint(this);
            this.sourceDrawing = source;
            this.destinationDrawing = destination;
            this.direction = new LinkDirection(CardinalDirection.None, CardinalDirection.None);
        }
Ejemplo n.º 2
0
        private void OnLinkDirectionChanged(LinkDrawing link, LinkDirection previousDirection, LinkDirection newDirection)
        {
            IDrawing sourceDrawing = link.SourceDrawing;
            IDrawing destinationDrawing = link.DestinationDrawing;

            link.Invalidated = true;
            NSWEDrawing source = virtualMapping[sourceDrawing];
            NSWEDrawing destination = virtualMapping[destinationDrawing];

            switch (previousDirection.From) {
                case CardinalDirection.None:
                    source.LinkPointsNone.Remove(link.SourcePoint);
                    source.LinksNone.Remove(link);
                    break;
                case CardinalDirection.North:
                    source.LinkPointsSouth.Remove(link.SourcePoint);
                    source.LinksSouth.Remove(link);
                    break;
                case CardinalDirection.South:
                    source.LinkPointsNorth.Remove(link.SourcePoint);
                    source.LinksNorth.Remove(link);
                    break;
                case CardinalDirection.West:
                    source.LinkPointsEast.Remove(link.SourcePoint);
                    source.LinksEast.Remove(link);
                    break;
                case CardinalDirection.East:
                    source.LinkPointsWest.Remove(link.SourcePoint);
                    source.LinksWest.Remove(link);
                    break;
            }

            switch (previousDirection.To) {
                case CardinalDirection.None:
                    destination.LinkPointsNone.Remove(link.DestinationPoint);
                    destination.LinksNone.Remove(link);
                    break;
                case CardinalDirection.South:
                    destination.LinkPointsNorth.Remove(link.DestinationPoint);
                    destination.LinksNorth.Remove(link);
                    break;
                case CardinalDirection.North:
                    destination.LinkPointsSouth.Remove(link.DestinationPoint);
                    destination.LinksSouth.Remove(link);
                    break;
                case CardinalDirection.East:
                    destination.LinkPointsWest.Remove(link.DestinationPoint);
                    destination.LinksWest.Remove(link);
                    break;
                case CardinalDirection.West:
                    destination.LinkPointsEast.Remove(link.DestinationPoint);
                    destination.LinksEast.Remove(link);
                    break;
            }

            switch (newDirection.From) {
                case CardinalDirection.None:
                    source.LinkPointsNone.Add(link.SourcePoint);
                    source.LinksNone.Add(link);
                    break;
                case CardinalDirection.North:
                    source.LinkPointsSouth.Add(link.SourcePoint);
                    source.LinksSouth.Add(link);
                    break;
                case CardinalDirection.South:
                    source.LinkPointsNorth.Add(link.SourcePoint);
                    source.LinksNorth.Add(link);
                    break;
                case CardinalDirection.West:
                    source.LinkPointsEast.Add(link.SourcePoint);
                    source.LinksEast.Add(link);
                    break;
                case CardinalDirection.East:
                    source.LinkPointsWest.Add(link.SourcePoint);
                    source.LinksWest.Add(link);
                    break;
            }

            switch (newDirection.To) {
                case CardinalDirection.None:
                    destination.LinkPointsNone.Add(link.DestinationPoint);
                    destination.LinksNone.Add(link);
                    break;
                case CardinalDirection.North:
                    destination.LinkPointsSouth.Add(link.DestinationPoint);
                    destination.LinksSouth.Add(link);
                    break;
                case CardinalDirection.South:
                    destination.LinkPointsNorth.Add(link.DestinationPoint);
                    destination.LinksNorth.Add(link);
                    break;
                case CardinalDirection.West:
                    destination.LinkPointsEast.Add(link.DestinationPoint);
                    destination.LinksEast.Add(link);
                    break;
                case CardinalDirection.East:
                    destination.LinkPointsWest.Add(link.DestinationPoint);
                    destination.LinksWest.Add(link);
                    break;
            }

            if (this.LinkDirectionChangedEvent != null)
                LinkDirectionChangedEvent(link, new LinkDirectionChangedArg(link, newDirection, link.Direction));
        }
 public LinkDirectionChangedArg(LinkDrawing link, LinkDirection newDirection, LinkDirection prevDirection)
 {
     this.link = link;
     this.newDirection = newDirection;
     this.prevDirection = prevDirection;
 }