public Connector(VplControl hostCanvas, Port startPort, Port endPort)
{
HostCanvas = hostCanvas;
Path = new Path();
srtEllipse = new ConnectorPort(hostCanvas);
endEllipse = new ConnectorPort(hostCanvas);
Panel.SetZIndex(Path, 2);
if (startPort.ParentNode != null)
{
Panel.SetZIndex(srtEllipse, startPort.ParentNode.Id + 1);
}
if (endPort.ParentNode != null)
{
Panel.SetZIndex(endEllipse, endPort.ParentNode.Id + 1);
}
Path.Style = HostCanvas.FindResource("VplConnectorStyle") as Style;
StartPort = startPort;
EndPort = endPort;
Canvas.SetLeft(srtEllipse, StartPort.Origin.X - srtEllipse.ActualWidth/2);
Canvas.SetTop(srtEllipse, StartPort.Origin.Y - srtEllipse.ActualHeight/2);
Canvas.SetLeft(endEllipse, EndPort.Origin.X - endEllipse.ActualWidth/2);
Canvas.SetTop(endEllipse, EndPort.Origin.Y - endEllipse.ActualHeight/2);
StartBezierPoint = new BindingPoint(StartPort.Origin.X, StartPort.Origin.Y);
EndBezierPoint = new BindingPoint(EndPort.Origin.X, EndPort.Origin.Y);
startPort.DataChanged += endPort.StartPort_DataChanged;
StartPort.Origin.PropertyChanged += Origin_PropertyChanged;
EndPort.Origin.PropertyChanged += Origin_PropertyChanged;
if (startPort.ParentNode != null)
{
StartPort.ParentNode.PropertyChanged += Origin_PropertyChanged;
ObserveNode(StartPort.ParentNode);
}
if (endPort.ParentNode != null)
{
EndPort.ParentNode.PropertyChanged += Origin_PropertyChanged;
ObserveNode(EndPort.ParentNode);
}
startPort.ConnectedConnectors.Add(this);
endPort.ConnectedConnectors.Add(this);
endPort.CalculateData(startPort.Data);
DefinePath();
HostCanvas.Children.Add(Path);
Path.MouseDown += Path_MouseDown;
Path.MouseUp += PathOnMouseUp;
}