in intellij-plugin/educational-core/src/com/jetbrains/edu/coursecreator/actions/studyItem/CCRemoveSection.kt [28:67]
override fun actionPerformed(e: AnActionEvent) {
val project = e.project
val selectedFiles = e.getData(CommonDataKeys.VIRTUAL_FILE_ARRAY)
if (project == null || selectedFiles == null || selectedFiles.size != 1) {
return
}
val course = StudyTaskManager.getInstance(project).course ?: return
val file = selectedFiles[0]
val section = course.getSection(file.name) ?: return
val courseDir = project.courseDir
for (child in VfsUtil.getChildren(file)) {
if (courseDir.findChild(child.name) != null) {
Messages.showInfoMessage(
message("error.failed.to.unwrap.section.message", child.name),
message("error.failed.to.unwrap.section")
)
return
}
}
val lessonsFromSection = section.lessons
lessonsFromSection.forEach { lesson ->
StudyItemRefactoringHandler.processBeforeLessonMovement(project, lesson, courseDir)
CCFrameworkLessonManager.getInstance(project).migrateRecords(lesson, courseDir)
}
if (removeSectionDir(file, courseDir)) {
val sectionIndex = section.index
lessonsFromSection.forEach { lesson ->
lesson.index += sectionIndex - 1
lesson.parent = lesson.course
}
updateHigherElements(
courseDir.children, { it: VirtualFile -> course.getItem(it.name) },
sectionIndex - 1, lessonsFromSection.size - 1
)
course.addLessons(lessonsFromSection)
course.sortItems()
saveItem(course)
}
ProjectView.getInstance(project).refresh()
}