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