override fun performAction()

in src/com/intellij/idea/plugin/hybris/impex/actions/ImpExTableColumnRemoveAction.kt [53:100]


    override fun performAction(project: Project, editor: Editor, psiFile: PsiFile, element: PsiElement) {
        currentThreadCoroutineScope().launch {
            val fullHeaderParameter = readAction {
                if (!psiFile.isValid) return@readAction null

                when (element) {
                    is ImpexFullHeaderParameter -> element
                    is ImpexValueGroup -> {
                        val headerParameter = element.fullHeaderParameter
                            ?: return@readAction null
                        return@readAction headerParameter
                    }

                    else -> return@readAction null
                }
            } ?: return@launch

            val elements = readAction {
                fullHeaderParameter.valueGroups
                    .filter { it.isValid }
                    .reversed()
            }

            withContext(Dispatchers.EDT) {
                PostprocessReformattingAspect.getInstance(project).disablePostprocessFormattingInside {
                    runWithModalProgressBlocking(project, "Removing '${fullHeaderParameter.text}' column") {
                        elements.forEachWithProgress {
                            WriteCommandAction.runWriteCommandAction(
                                project, commandName, groupID,
                                { it.delete() },
                                psiFile
                            )
                        }

                        WriteCommandAction.runWriteCommandAction(
                            project, commandName, groupID,
                            {
                                PsiTreeUtilExt.getPrevSiblingOfElementType(fullHeaderParameter, ImpexTypes.PARAMETERS_SEPARATOR)
                                    ?.delete()
                                fullHeaderParameter.delete()
                            },
                            psiFile
                        )
                    }
                }
            }
        }
    }