fun onComponentsMoved()

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)
            }
        }
    }