override fun actionPerformed()

in intellij-plugin/educational-core/src/com/jetbrains/edu/coursecreator/actions/taskFile/CCShowPreview.kt [55:93]


  override fun actionPerformed(e: AnActionEvent) {
    val project = e.project ?: return
    val file = CommonDataKeys.PSI_FILE.getData(e.dataContext) ?: return
    StudyTaskManager.getInstance(project).course ?: return
    val virtualFile = file.virtualFile
    val taskFile = virtualFile.getTaskFile(project) ?: return
    if (!taskFile.isVisible) {
      return
    }
    val taskDir = file.containingDirectory ?: return
    taskDir.parentDirectory ?: return
    if (taskFile.answerPlaceholders.isEmpty()) {
      Messages.showInfoMessage(
        message("dialog.message.no.preview.for.file"),
        message("dialog.title.no.preview.for.file")
      )
      return
    }

    ApplicationManager.getApplication().runWriteAction {
      val studentTaskFile: TaskFile? = try {
        virtualFile.toStudentFile(project, taskFile.task, taskFile)
      }
      catch (exception: BrokenPlaceholderException) {
        LOG.info("Failed to Create Preview: " + exception.message)
        Messages.showErrorDialog(exception.placeholderInfo, message("dialog.title.failed.to.create.preview"))
        return@runWriteAction
      }
      catch (exception: HugeBinaryFileException) {
        LOG.info("Failed to Create Preview: " + exception.message)
        Messages.showErrorDialog(exception.message, message("dialog.title.failed.to.create.preview"))
        return@runWriteAction
      }
      if (studentTaskFile != null) {
        showPreviewDialog(project, studentTaskFile)
      }
    }
    previewTaskFile()
  }