public void SetConnectorsForLayer(AlgorithmFlowConnector connector, FlowConnector[] targets, bool isInput) { if (isInput) { // We are an input connector, we must clear our layer's current // parent and set it to the new value. if (targets.Length != 1) { throw new InvalidOperationException("An input can not be connected to more than one output."); } if (this.m_Layer.Inputs == null) { throw new InvalidOperationException("Input array for an algorithm can not be null."); } this.m_Layer.Inputs[ this.m_InputConnectors.IndexOf(connector)] = (targets[0].Owner as AlgorithmFlowElement).m_Layer; this.ObjectPropertyUpdated(); } else { // We are an output connector, we must add ourselves as the target's // parent. We can do this as a reverse operation on our targets. foreach (FlowConnector t in targets) { (t.Owner as AlgorithmFlowElement).SetConnectorsForLayer( t as AlgorithmFlowConnector, new AlgorithmFlowConnector[] { connector }, true); } } // Invalidate the control area. foreach (Rectangle r in this.GetConnectorRegionsToInvalidate()) { this.m_Control.Invalidate(r); } }
public void SetConnectorsForLayer(AlgorithmFlowConnector connector, FlowConnector[] targets, bool isInput) { if (isInput) { // We are an input connector, we must clear our layer's current // parent and set it to the new value. if (targets.Length != 1) throw new InvalidOperationException("An input can not be connected to more than one output."); if (this.m_Layer.Inputs == null) throw new InvalidOperationException("Input array for an algorithm can not be null."); this.m_Layer.Inputs[this.m_InputConnectors.IndexOf(connector)] = (targets[0].Owner as AlgorithmFlowElement).m_Layer; this.ObjectPropertyUpdated(); } else { // We are an output connector, we must add ourselves as the target's // parent. We can do this as a reverse operation on our targets. foreach (var t in targets) { (t.Owner as AlgorithmFlowElement).SetConnectorsForLayer( t as AlgorithmFlowConnector, new[] { connector }, true); } } // Invalidate the control area. foreach (Rectangle r in this.GetConnectorRegionsToInvalidate()) this.m_Control.Invalidate(r); }