public void DeleteConnection(PortConnection portConnectionPainter) { foreach (CompositionInstance composition in Compositions) { composition.Connections.Remove(portConnectionPainter); } }
public void Delete(PortConnection connection) { foreach (CompositionInstance composition in Compositions) { composition.Connections.Remove(connection); } }
public void Render(RenderContext context) { if (selectedPainter is RectanglePainter) { RectanglePainter painter = (RectanglePainter)selectedPainter; /* Top left angle */ //context.DrawFillRectangle(painter.StartX - size / 2.0f, painter.StartY - size / 2.0f, painter.StartX - size / 2.0f, painter.StartY + size / 2.0f, PickColor); /* Top right angle */ //context.DrawFillRectangle(painter.EndX - size / 2.0f, painter.StartY - size / 2.0f, painter.EndX - size / 2.0f, painter.StartY + size / 2.0f, PickColor); /* Bottom left angle */ //context.DrawFillRectangle(painter.StartX - size / 2.0f, painter.EndY - size / 2.0f, painter.StartX - size / 2.0f, painter.EndY + size / 2.0f, PickColor); /* Bottom right angle */ //context.DrawFillRectangle(painter.EndX - size / 2.0f, painter.EndY - size / 2.0f, painter.EndX - size / 2.0f, painter.EndY + size / 2.0f, PickColor); } else if (selectedPainter is PortConnection) { PortConnection painter = (PortConnection)selectedPainter; /* Bottom left angle */ //context.DrawFillRectangle(painter.StartX - size / 2.0f, painter.EndY - size / 2.0f, painter.StartX - size / 2.0f, painter.EndY + size / 2.0f, PickColor); /* Bottom right angle */ //context.DrawFillRectangle(painter.EndX - size / 2.0f, painter.EndY - size / 2.0f, painter.EndX - size / 2.0f, painter.EndY + size / 2.0f, PickColor); } }
public void GetOppositePortAndComponent(PortPainter portPainter, out ComponentInstance oppositeComponent, out PortPainter oppositePort) { oppositeComponent = null; oppositePort = null; if (portPainter.PortDefenition.InterfaceName == "isrDesiredForce") { } PortsConnectionsList portConnections = GetPortConnections(portPainter); if (portConnections.Count != 0) { oppositePort = portConnections[0].GetOppositePort(portPainter); if (oppositePort != null) { IElementWithPorts elem = FindComponentInstanceByPort(oppositePort); if (elem is ComponentInstance) { /* No problem just return the component*/ oppositeComponent = elem as ComponentInstance; } /* the port belongs to the composition */ else if (elem is CompositionInstance) { CompositionInstance composition = elem as CompositionInstance; PortPainter middlePort; /* Is it composition's external port?*/ int externalPortIndex = composition.Ports.IndexOf(oppositePort); if (externalPortIndex >= 0) { /* get internal index */ middlePort = composition.InternalPortsInstances[externalPortIndex]; } else /* It was internal port */ { /* get external port */ int internalPortIndex = composition.InternalPortsInstances.IndexOf(oppositePort); middlePort = composition.Ports[internalPortIndex]; } /* Get middle port connections */ portConnections = GetPortConnections(middlePort); if (portConnections.Count > 0) { PortConnection connection = portConnections[0]; oppositePort = connection.GetOppositePort(middlePort); Object oppositeObject = FindComponentInstanceByPort(oppositePort); /* Check if another port belongs to composition */ if (oppositeObject is CompositionInstance) { CompositionInstance oppositeComposition = oppositeObject as CompositionInstance; PortPainter middlePort2; int externalPortIndex2 = oppositeComposition.Ports.IndexOf(oppositePort); /* get internal index */ middlePort2 = oppositeComposition.InternalPortsInstances[externalPortIndex2]; /* Get middle port connections */ PortsConnectionsList portConnections2 = GetPortConnections(middlePort2); if (portConnections2.Count > 0) { PortConnection connection3 = portConnections2[0]; oppositePort = connection3.GetOppositePort(middlePort2); oppositeComponent = FindComponentInstanceByPort(oppositePort) as ComponentInstance; } } else { oppositeComponent = oppositeObject as ComponentInstance; } } } } } }