override fun actionPerformed()

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