diff --git a/python/educational/interactive-learning/src/com/jetbrains/edu/learning/actions/StudyCheckAction.java b/python/educational/interactive-learning/src/com/jetbrains/edu/learning/actions/StudyCheckAction.java index a47b5a13cbbf..952a58c3b6fc 100644 --- a/python/educational/interactive-learning/src/com/jetbrains/edu/learning/actions/StudyCheckAction.java +++ b/python/educational/interactive-learning/src/com/jetbrains/edu/learning/actions/StudyCheckAction.java @@ -35,7 +35,6 @@ import com.intellij.openapi.wm.WindowManager; import com.intellij.openapi.wm.ex.StatusBarEx; import com.intellij.openapi.wm.ex.WindowManagerEx; import com.jetbrains.edu.EduDocumentListener; -import com.jetbrains.edu.EduNames; import com.jetbrains.edu.EduUtils; import com.jetbrains.edu.courseFormat.AnswerPlaceholder; import com.jetbrains.edu.courseFormat.Task; @@ -85,26 +84,6 @@ public class StudyCheckAction extends DumbAwareAction { } } - private static void deleteWindowDescriptions(@NotNull final Task task, @NotNull final VirtualFile taskDir) { - for (Map.Entry entry : task.getTaskFiles().entrySet()) { - String name = entry.getKey(); - VirtualFile virtualFile = taskDir.findChild(name); - if (virtualFile == null) { - continue; - } - String windowsFileName = virtualFile.getNameWithoutExtension() + EduNames.WINDOWS_POSTFIX; - final VirtualFile windowsFile = taskDir.findChild(windowsFileName); - if (windowsFile != null) { - ApplicationManager.getApplication().runWriteAction(new Runnable() { - @Override - public void run() { - StudyUtils.deleteFile(windowsFile); - } - }); - } - } - } - private static void drawAllPlaceholders(@NotNull final Project project, @NotNull final Task task, @NotNull final VirtualFile taskDir) { for (Map.Entry entry : task.getTaskFiles().entrySet()) { String name = entry.getKey(); @@ -219,14 +198,14 @@ public class StudyCheckAction extends DumbAwareAction { StudyUtils.updateStudyToolWindow(project); drawAllPlaceholders(project, task, taskDir); ProjectView.getInstance(project).refresh(); - deleteWindowDescriptions(task, taskDir); + EduUtils.deleteWindowDescriptions(task, taskDir); checkInProgress = false; } @Override public void onCancel() { taskManager.setStatus(task, statusBeforeCheck); - deleteWindowDescriptions(task, taskDir); + EduUtils.deleteWindowDescriptions(task, taskDir); checkInProgress = false; } diff --git a/python/educational/src/com/jetbrains/edu/EduUtils.java b/python/educational/src/com/jetbrains/edu/EduUtils.java index c72b8fb388bb..7808ad2d21f9 100644 --- a/python/educational/src/com/jetbrains/edu/EduUtils.java +++ b/python/educational/src/com/jetbrains/edu/EduUtils.java @@ -19,6 +19,7 @@ import com.intellij.openapi.util.TextRange; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileManager; import com.jetbrains.edu.courseFormat.AnswerPlaceholder; +import com.jetbrains.edu.courseFormat.Task; import com.jetbrains.edu.courseFormat.TaskFile; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -106,6 +107,7 @@ public class EduUtils { } if (taskDir != null) { final String name = file.getNameWithoutExtension() + EduNames.WINDOWS_POSTFIX; + deleteWindowsFile(taskDir, name); PrintWriter printWriter = null; try { fileWindows = taskDir.createChildData(taskFile, name); @@ -232,4 +234,33 @@ public class EduUtils { } }, "Replace Answer Placeholders", "Replace Answer Placeholders"); } + + public static void deleteWindowDescriptions(@NotNull final Task task, @NotNull final VirtualFile taskDir) { + for (Map.Entry entry : task.getTaskFiles().entrySet()) { + String name = entry.getKey(); + VirtualFile virtualFile = taskDir.findChild(name); + if (virtualFile == null) { + continue; + } + String windowsFileName = virtualFile.getNameWithoutExtension() + EduNames.WINDOWS_POSTFIX; + deleteWindowsFile(taskDir, windowsFileName); + } + } + + private static void deleteWindowsFile(@NotNull final VirtualFile taskDir, @NotNull final String name) { + final VirtualFile fileWindows = taskDir.findChild(name); + if (fileWindows != null && fileWindows.exists()) { + ApplicationManager.getApplication().runWriteAction(new Runnable() { + @Override + public void run() { + try { + fileWindows.delete(taskDir); + } + catch (IOException e) { + LOG.warn("Tried to delete non existed _windows file"); + } + } + }); + } + } }