in code/scenes/src/main/kotlin/org/fbme/scenes/controllers/diagram/ConnectionsFacility.kt [74:113]
fun onComponentsMoved(components: Set<CompT>, dx: Int, dy: Int, completed: Boolean) {
val ports: MutableList<PortT> = ArrayList()
for (component in components) {
ports.addAll(diagramController.getPorts(component))
}
for ((connectionView, entry) in connections) {
val sourcePort = diagramController.getSource(connectionView)
val targetPort = diagramController.getTarget(connectionView)
val sourceMoved = ports.contains(sourcePort)
val targetMoved = ports.contains(targetPort)
if (sourceMoved && targetMoved) {
val endpointsTransformation = entry.controller.getEndpointsTransformation(entry.modelPath)
?: error("Endpoints transformation failed")
val sourcePosition = diagramController.getPortController(sourcePort!!).modelEndpointPosition
val targetPosition = diagramController.getPortController(targetPort!!).modelEndpointPosition
sourcePosition.translate(dx, dy)
targetPosition.translate(dx, dy)
val translatedPath = endpointsTransformation.apply(sourcePosition, targetPosition)
changePath(entry, connectionView, translatedPath, completed)
continue
}
if (targetMoved) {
val targetTransformation = entry.controller.getTargetTransformation(entry.modelPath)
?: error("Target endpoint transformation failed")
val targetPosition = diagramController.getPortController(targetPort!!).modelEndpointPosition
targetPosition.translate(dx, dy)
val translatedPath = targetTransformation.apply(targetPosition)
changePath(entry, connectionView, translatedPath, completed)
continue
}
if (sourceMoved) {
val sourceTransformation = entry.controller.getSourceTransformation(entry.modelPath)
?: error("Source endpoint transformation failed")
val sourcePosition = diagramController.getPortController(sourcePort!!).modelEndpointPosition
sourcePosition.translate(dx, dy)
val translatedPath = sourceTransformation.apply(sourcePosition)
changePath(entry, connectionView, translatedPath, completed)
}
}
}