public Connector(VplControl hostCanvas, Port startPort, Port endPort) { HostCanvas = hostCanvas; Path = new Path(); srtEllipse = new Ellipse { Style = hostCanvas.FindResource("VplEllipseConnStyle") as Style }; endEllipse = new Ellipse { Style = hostCanvas.FindResource("VplEllipseConnStyle") as Style }; Panel.SetZIndex(Path, 2); Panel.SetZIndex(srtEllipse, startPort.ParentNode.Id + 1); 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; StartPort.ParentNode.PropertyChanged += Origin_PropertyChanged; EndPort.ParentNode.PropertyChanged += Origin_PropertyChanged; ObserveNode(StartPort.ParentNode); ObserveNode(EndPort.ParentNode); startPort.ConnectedConnectors.Add(this); endPort.ConnectedConnectors.Add(this); endPort.CalculateData(startPort.Data); DefinePath(); HostCanvas.Children.Add(Path); HostCanvas.Children.Add(srtEllipse); HostCanvas.Children.Add(endEllipse); }
public void AddOutputPortToNode(string name, Type type) { var conn = new Port(name, this, PortTypes.Output, type) {MultipleConnectionsAllowed = true}; OutputPortPanel.Children.Add(conn); OutputPorts.Add(conn); }
public void RemoveInputPortFromNode(Port port) { foreach (var connector in port.ConnectedConnectors) connector.RemoveFromCanvas(); InputPortPanel.Children.Remove(port); port.DataChanged -= port_DataChanged; InputPorts.Remove(port); }
public void AddInputPortToNode(string name, Type type, bool multipleConnectionsAllowed = false) { var port = new Port(name, this, PortTypes.Input, type) { MultipleConnectionsAllowed = multipleConnectionsAllowed }; InputPortPanel.Children.Add(port); port.DataChanged += port_DataChanged; InputPorts.Add(port); }
public void RemoveInputPortFromNode(Port conn) { foreach (var connector in conn.ConnectedConnectors) connector.RemoveFromCanvas(); InputPortPanel.Children.Remove(conn); conn.DataChanged -= conn_DataChanged; InputPorts.Remove(conn); }
public void AddOutputPortToNode(string name, Type type) { var conn = new Port(name, this, PortTypes.Output, type); OutputPortPanel.Children.Add(conn); OutputPorts.Add(conn); }
public void AddInputPortToNode(string name, Type type) { var conn = new Port(name, this, PortTypes.Input, type); InputPortPanel.Children.Add(conn); conn.DataChanged += conn_DataChanged; InputPorts.Add(conn); }