protected fun showExplanation()

in code/debugger/src/main/kotlin/org/fbme/debugger/common/ui/DebuggerPanel.kt [219:252]


    protected fun showExplanation(e: MouseEvent) {
        val selectionPath = watchesTree
            .selectionPath
            ?.path
            ?.toList()
            ?.map { it.toString() }
            ?.drop(1)
            ?.joinToString(".")
            ?.split(".")
            ?: return
        val children = explanationProducer.getNodeOrPut(statesList.selectedIndex, selectionPath).children
        var explanationText = ""

        for (explanationNode in children) {
            explanationText += "$explanationNode\n"
        }

        val selectedState = statesList.selectedValue?.state
        val networkInspector = inspector as? NetworkInspector

        if (selectedState != null && networkInspector != null) {
            for (explanationNode in children) {
                val port = ports.firstOrNull { it.second == explanationNode.path } ?: continue
                val value = selectedState.resolveValue(port.second) ?: continue
                networkInspector.setInspectionForPort(port.first, Inspection(value, MPSColors.RED, true))
            }
        }

        val explanationPopup = GotItTooltip(UUID.randomUUID().toString(), explanationText, project)
        explanationPopup.position = Balloon.Position.atLeft
        explanationPopup.show(watchesTree) { component, _ ->
            Point(component.x, e.y)
        }
    }