diff --git a/python/educational/interactive-learning/src/com/jetbrains/edu/learning/StudyTaskManager.java b/python/educational/interactive-learning/src/com/jetbrains/edu/learning/StudyTaskManager.java index 4b6d8cdc37b6..c5207092238f 100644 --- a/python/educational/interactive-learning/src/com/jetbrains/edu/learning/StudyTaskManager.java +++ b/python/educational/interactive-learning/src/com/jetbrains/edu/learning/StudyTaskManager.java @@ -3,12 +3,14 @@ package com.jetbrains.edu.learning; import com.intellij.openapi.components.*; import com.intellij.openapi.project.DumbAware; import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.Pair; import com.intellij.ui.JBColor; +import com.intellij.util.Function; import com.intellij.util.containers.hash.HashMap; import com.intellij.util.xmlb.XmlSerializer; import com.jetbrains.edu.EduUtils; import com.jetbrains.edu.courseFormat.*; -import com.jetbrains.edu.learning.courseFormat.StudyStatus; +import com.jetbrains.edu.courseFormat.StudyStatus; import com.jetbrains.edu.learning.courseFormat.UserTest; import com.jetbrains.edu.oldCourseFormat.OldCourse; import org.jdom.Element; @@ -203,7 +205,13 @@ public class StudyTaskManager implements PersistentStateComponent, Dumb if (oldCourseElement != null) { myOldCourse = XmlSerializer.deserialize(oldCourseElement, OldCourse.class); if (myOldCourse != null) { - myCourse = EduUtils.transformOldCourse(myOldCourse); + myCourse = EduUtils.transformOldCourse(myOldCourse, new Function, Void>() { + @Override + public Void fun(Pair pair) { + setStatus(pair.first, pair.second); + return null; + } + }); myOldCourse = null; } } 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 32cb5fa41be3..ec170e878fe7 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 @@ -43,7 +43,7 @@ import com.jetbrains.edu.courseFormat.TaskFile; import com.jetbrains.edu.learning.StudyState; import com.jetbrains.edu.learning.StudyTaskManager; import com.jetbrains.edu.learning.StudyUtils; -import com.jetbrains.edu.learning.courseFormat.StudyStatus; +import com.jetbrains.edu.courseFormat.StudyStatus; import com.jetbrains.edu.learning.editor.StudyEditor; import com.jetbrains.edu.learning.navigation.StudyNavigator; import com.jetbrains.edu.learning.run.StudySmartChecker; @@ -193,7 +193,7 @@ public class StudyCheckAction extends DumbAwareAction { final StudyTaskManager taskManager = StudyTaskManager.getInstance(project); final StudyStatus statusBeforeCheck = taskManager.getStatus(task); - return new com.intellij.openapi.progress.Task.Backgroundable(project, "Checking task", true) { + return new com.intellij.openapi.progress.Task.Backgroundable(project, "Checking Task", true) { @Override public void onSuccess() { StudyUtils.updateToolWindows(project); diff --git a/python/educational/interactive-learning/src/com/jetbrains/edu/learning/actions/StudyRefreshTaskFileAction.java b/python/educational/interactive-learning/src/com/jetbrains/edu/learning/actions/StudyRefreshTaskFileAction.java index 4d139bb262ee..cc21a6378066 100644 --- a/python/educational/interactive-learning/src/com/jetbrains/edu/learning/actions/StudyRefreshTaskFileAction.java +++ b/python/educational/interactive-learning/src/com/jetbrains/edu/learning/actions/StudyRefreshTaskFileAction.java @@ -26,7 +26,7 @@ import com.jetbrains.edu.courseFormat.TaskFile; import com.jetbrains.edu.learning.StudyState; import com.jetbrains.edu.learning.StudyTaskManager; import com.jetbrains.edu.learning.StudyUtils; -import com.jetbrains.edu.learning.courseFormat.StudyStatus; +import com.jetbrains.edu.courseFormat.StudyStatus; import com.jetbrains.edu.learning.editor.StudyEditor; import com.jetbrains.edu.learning.navigation.StudyNavigator; import org.jetbrains.annotations.NotNull; diff --git a/python/educational/interactive-learning/src/com/jetbrains/edu/learning/courseFormat/StudyStatus.java b/python/educational/interactive-learning/src/com/jetbrains/edu/learning/courseFormat/StudyStatus.java deleted file mode 100644 index a383b51181c7..000000000000 --- a/python/educational/interactive-learning/src/com/jetbrains/edu/learning/courseFormat/StudyStatus.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.jetbrains.edu.learning.courseFormat; - -import com.jetbrains.edu.courseFormat.AnswerPlaceholder; - -/** - * @see {@link AnswerPlaceholder#myStatus} - */ -public enum StudyStatus { - Unchecked, Solved, Failed -} diff --git a/python/educational/interactive-learning/src/com/jetbrains/edu/learning/navigation/StudyNavigator.java b/python/educational/interactive-learning/src/com/jetbrains/edu/learning/navigation/StudyNavigator.java index 4121c84445f1..2fe10db4eebb 100644 --- a/python/educational/interactive-learning/src/com/jetbrains/edu/learning/navigation/StudyNavigator.java +++ b/python/educational/interactive-learning/src/com/jetbrains/edu/learning/navigation/StudyNavigator.java @@ -10,7 +10,7 @@ import com.jetbrains.edu.courseFormat.Task; import com.jetbrains.edu.courseFormat.TaskFile; import com.jetbrains.edu.learning.StudyTaskManager; import com.jetbrains.edu.learning.StudyUtils; -import com.jetbrains.edu.learning.courseFormat.StudyStatus; +import com.jetbrains.edu.courseFormat.StudyStatus; import org.jetbrains.annotations.NotNull; import java.util.List; diff --git a/python/educational/interactive-learning/src/com/jetbrains/edu/learning/projectView/StudyDirectoryNode.java b/python/educational/interactive-learning/src/com/jetbrains/edu/learning/projectView/StudyDirectoryNode.java index b44fa6eae1c2..6c8fd130b7db 100644 --- a/python/educational/interactive-learning/src/com/jetbrains/edu/learning/projectView/StudyDirectoryNode.java +++ b/python/educational/interactive-learning/src/com/jetbrains/edu/learning/projectView/StudyDirectoryNode.java @@ -19,7 +19,7 @@ import com.jetbrains.edu.courseFormat.Task; import com.jetbrains.edu.courseFormat.TaskFile; import com.jetbrains.edu.learning.StudyTaskManager; import com.jetbrains.edu.learning.StudyUtils; -import com.jetbrains.edu.learning.courseFormat.StudyStatus; +import com.jetbrains.edu.courseFormat.StudyStatus; import icons.EducationalIcons; import icons.InteractiveLearningIcons; import org.jetbrains.annotations.NotNull; diff --git a/python/educational/interactive-learning/src/com/jetbrains/edu/learning/run/StudySmartChecker.java b/python/educational/interactive-learning/src/com/jetbrains/edu/learning/run/StudySmartChecker.java index 69a605ce537f..01eac4a9d6b4 100644 --- a/python/educational/interactive-learning/src/com/jetbrains/edu/learning/run/StudySmartChecker.java +++ b/python/educational/interactive-learning/src/com/jetbrains/edu/learning/run/StudySmartChecker.java @@ -17,7 +17,7 @@ import com.jetbrains.edu.courseFormat.AnswerPlaceholder; import com.jetbrains.edu.courseFormat.TaskFile; import com.jetbrains.edu.learning.StudyTaskManager; import com.jetbrains.edu.learning.StudyUtils; -import com.jetbrains.edu.learning.courseFormat.StudyStatus; +import com.jetbrains.edu.courseFormat.StudyStatus; import org.jetbrains.annotations.NotNull; import java.io.File; diff --git a/python/educational/interactive-learning/src/com/jetbrains/edu/learning/ui/StudyProgressToolWindowFactory.java b/python/educational/interactive-learning/src/com/jetbrains/edu/learning/ui/StudyProgressToolWindowFactory.java index e00fc14131e3..8951a84b44d7 100644 --- a/python/educational/interactive-learning/src/com/jetbrains/edu/learning/ui/StudyProgressToolWindowFactory.java +++ b/python/educational/interactive-learning/src/com/jetbrains/edu/learning/ui/StudyProgressToolWindowFactory.java @@ -12,7 +12,7 @@ import com.jetbrains.edu.courseFormat.Course; import com.jetbrains.edu.courseFormat.Lesson; import com.jetbrains.edu.courseFormat.Task; import com.jetbrains.edu.learning.StudyTaskManager; -import com.jetbrains.edu.learning.courseFormat.StudyStatus; +import com.jetbrains.edu.courseFormat.StudyStatus; import icons.InteractiveLearningIcons; import org.jetbrains.annotations.NotNull; diff --git a/python/educational/src/com/jetbrains/edu/EduUtils.java b/python/educational/src/com/jetbrains/edu/EduUtils.java index 9f5738cbe162..7e3ac06bdb05 100644 --- a/python/educational/src/com/jetbrains/edu/EduUtils.java +++ b/python/educational/src/com/jetbrains/edu/EduUtils.java @@ -9,18 +9,15 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Document; import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.TextRange; import com.intellij.openapi.util.io.FileUtilRt; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileManager; import com.intellij.psi.PsiDirectory; +import com.intellij.util.Function; import com.intellij.util.containers.HashMap; -import com.jetbrains.edu.courseFormat.AnswerPlaceholder; -import com.jetbrains.edu.courseFormat.Course; -import com.jetbrains.edu.courseFormat.Lesson; -import com.jetbrains.edu.courseFormat.StudyItem; -import com.jetbrains.edu.courseFormat.Task; -import com.jetbrains.edu.courseFormat.TaskFile; +import com.jetbrains.edu.courseFormat.*; import com.jetbrains.edu.oldCourseFormat.OldCourse; import com.jetbrains.edu.oldCourseFormat.TaskWindow; import org.jetbrains.annotations.NonNls; @@ -280,6 +277,12 @@ public class EduUtils { @NotNull public static Course transformOldCourse(@NotNull final OldCourse oldCourse) { + return transformOldCourse(oldCourse, null); + } + + @NotNull + public static Course transformOldCourse(@NotNull final OldCourse oldCourse, + @Nullable Function, Void> setStatus) { Course course = new Course(); course.setDescription(oldCourse.description); course.setName(oldCourse.name); @@ -307,15 +310,16 @@ public class EduUtils { final ArrayList placeholders = new ArrayList(); for (TaskWindow window : oldTaskFile.taskWindows) { final AnswerPlaceholder placeholder = new AnswerPlaceholder(); - placeholder.setIndex(window.myIndex); placeholder.setHint(window.hint); placeholder.setLength(window.length); placeholder.setLine(window.line); placeholder.setPossibleAnswer(window.possibleAnswer); placeholder.setStart(window.start); - placeholders.add(placeholder); + if (setStatus != null) { + setStatus.fun(Pair.create(placeholder, window.myStatus)); + } } taskFile.setAnswerPlaceholders(placeholders); diff --git a/python/educational/src/com/jetbrains/edu/courseFormat/StudyStatus.java b/python/educational/src/com/jetbrains/edu/courseFormat/StudyStatus.java new file mode 100644 index 000000000000..767a3c9fdeb7 --- /dev/null +++ b/python/educational/src/com/jetbrains/edu/courseFormat/StudyStatus.java @@ -0,0 +1,5 @@ +package com.jetbrains.edu.courseFormat; + +public enum StudyStatus { + Unchecked, Solved, Failed +} diff --git a/python/educational/src/com/jetbrains/edu/oldCourseFormat/TaskWindow.java b/python/educational/src/com/jetbrains/edu/oldCourseFormat/TaskWindow.java index b9c0f3203015..53ef9a90be0e 100644 --- a/python/educational/src/com/jetbrains/edu/oldCourseFormat/TaskWindow.java +++ b/python/educational/src/com/jetbrains/edu/oldCourseFormat/TaskWindow.java @@ -1,5 +1,7 @@ package com.jetbrains.edu.oldCourseFormat; +import com.jetbrains.edu.courseFormat.StudyStatus; + /** * Implementation of windows which user should type in */ @@ -15,4 +17,5 @@ public class TaskWindow { public int myInitialLine = -1; public int myInitialStart = -1; public int myInitialLength = -1; + public StudyStatus myStatus = StudyStatus.Unchecked; } \ No newline at end of file