override fun actionPerformed()

in intellij-plugin/educational-core/src/com/jetbrains/edu/learning/actions/ImportLocalCourseAction.kt [33:79]


  override fun actionPerformed(e: AnActionEvent) {
    val component = e.getData(PlatformDataKeys.CONTEXT_COMPONENT)
    val fileChooserDescriptor = FileChooserDescriptorFactory
      .singleFile()
      .withExtensionFilter("zip")

    FileChooser.chooseFile(fileChooserDescriptor, null, importLocation()) { file ->
      val fileName = file.path
      val course = EduUtilsKt.getLocalCourse(fileName)
      course?.isLocal = true
      if (course == null) {
        showInvalidCourseDialog()
        return@chooseFile
      }
      saveLastImportLocation(file)

      val courseMetaInfo = CoursesStorage.getInstance().getCourseMetaInfo(course)
      if (courseMetaInfo != null) {
        invokeLater {
          val result = Messages.showDialog(
            null,
            EduCoreBundle.message("action.import.local.course.dialog.text"),
            EduCoreBundle.message("action.import.local.course.dialog"),
            arrayOf(
              EduCoreBundle.message("action.import.local.course.dialog.cancel.text"),
              EduCoreBundle.message("action.import.local.course.dialog.ok.text")
            ),
            Messages.OK,
            Messages.getErrorIcon()
          )
          if (result == Messages.NO) {
            CoursesStorage.getInstance().removeCourseByLocation(courseMetaInfo.location)
            course.name = createUnusedName(course.name)
            doImportNewCourse(course, component)
          }
          else if (result == Messages.OK) {
            closeDialog(component)
            val project = ProjectUtil.openProject(courseMetaInfo.location, null, true)
            ProjectUtil.focusProjectWindow(project, true)
          }

        }
        return@chooseFile
      }
      doImportNewCourse(course, component)
    }
  }