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); }
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; }