override fun editingStopped()

in src/main/kotlin/org/arend/refactoring/changeSignature/ArendChangeSignatureDialog.kt [233:266]


            override fun editingStopped(e: ChangeEvent) {
                super.editingStopped(e)
                when (val src = e.source) {
                    is StringTableCellEditor -> {
                        val i = myParametersTable.selectionModel.selectedIndices.firstOrNull()
                        val newName = if (i != null) myParametersTableModel.items.getOrNull(i)?.parameter?.name else null
                        if (i != null) invokeLater {
                            resetThreadContext().use { _ ->
                                val deps = HashSet<Int>()
                                if (newName == null || myReturnTypeCodeFragment?.text?.contains(newName) == true) deps.add(-1)
                                for (j in i+1 until myParametersTable.items.size) {
                                    val psi = myParametersTableModel.items.getOrNull(j)?.typeCodeFragment
                                    if (psi != null) {
                                        val children = psi.descendants().filter { it.elementType == ArendElementTypes.ID }.map { it.text }.toSet()
                                        if (newName == null || children.contains(newName))
                                            deps.add(j)
                                    }
                                }
                                invalidateIndices(deps)
                            }
                        }
                    }
                    is CodeFragmentTableCellEditorBase -> {
                        val fragment = (src.cellEditorValue as? ArendExpressionCodeFragment)
                        val item = myParametersTable.items.firstOrNull { it.typeCodeFragment == fragment }

                        val codeAnalyzer = DaemonCodeAnalyzer.getInstance(project) as? DaemonCodeAnalyzerImpl
                        if (codeAnalyzer != null && fragment != null && item != null)
                            invokeLater {
                                invalidateIndices(calculateUsagesOf(singletonList(item)))
                            }
                    }
                }
            }