diff options
Diffstat (limited to 'python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format')
5 files changed, 75 insertions, 28 deletions
diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/Course.java b/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/Course.java index eb62d59cd9b1..e124a6eb305d 100644 --- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/Course.java +++ b/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/Course.java @@ -4,10 +4,7 @@ import com.google.gson.annotations.Expose; import com.intellij.psi.PsiDirectory; import org.jetbrains.annotations.NotNull; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; public class Course { @Expose public List<Lesson> lessons = new ArrayList<Lesson>(); @@ -52,4 +49,13 @@ public class Course { public String getDescription() { return description; } + + public void init() { + lessons.clear(); + for (Lesson lesson: myLessonsMap.values()) { + lessons.add(lesson); + lesson.init(); + } + Collections.sort(lessons); + } } diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/Lesson.java b/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/Lesson.java index 38720140caf1..bd91e8ec30af 100644 --- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/Lesson.java +++ b/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/Lesson.java @@ -4,12 +4,9 @@ import com.google.gson.annotations.Expose; import com.intellij.psi.PsiDirectory; import org.jetbrains.annotations.NotNull; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; -public class Lesson { +public class Lesson implements Comparable{ @Expose public String name; @Expose public List<Task> task_list = new ArrayList<Task>(); @@ -27,11 +24,15 @@ public class Lesson { task_list.add(task); } + public void setName(String name) { + this.name = name; + } + public Task getTask(@NotNull final String name) { return myTasksMap.get(name); } - public List<Task> getTasklist() { + public List<Task> getTaskList() { return task_list; } @@ -42,4 +43,22 @@ public class Lesson { public int getIndex() { return myIndex; } + + public Map<String, Task> getTasksMap() { + return myTasksMap; + } + + public void init() { + task_list.clear(); + for (Task task : myTasksMap.values()) { + task_list.add(task); + } + Collections.sort(task_list); + } + + @Override + public int compareTo(@NotNull Object o) { + Lesson lesson = (Lesson) o; + return myIndex - lesson.getIndex(); + } } diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/Task.java b/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/Task.java index e6c085b5d6a1..886add86ceb4 100644 --- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/Task.java +++ b/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/Task.java @@ -2,11 +2,12 @@ package org.jetbrains.plugins.coursecreator.format; import com.google.gson.annotations.Expose; import org.jetbrains.annotations.NotNull; +import org.jetbrains.plugins.coursecreator.CCProjectService; import java.util.HashMap; import java.util.Map; -public class Task { +public class Task implements Comparable{ @Expose public String name; @Expose public Map<String, TaskFile> task_files = new HashMap<String, TaskFile>(); public int myIndex; @@ -28,7 +29,8 @@ public class Task { } public TaskFile getTaskFile(@NotNull final String name) { - return task_files.get(name); + String fileName = CCProjectService.getRealTaskFileName(name); + return fileName != null ? task_files.get(fileName) : null; } public void setIndex(int index) { @@ -38,4 +40,18 @@ public class Task { public Map<String, TaskFile> getTaskFiles() { return task_files; } + + public boolean isTaskFile(String name) { + return task_files.get(name) != null; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public int compareTo(@NotNull Object o) { + Task task = (Task) o; + return myIndex - task.getIndex(); + } } diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/TaskFile.java b/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/TaskFile.java index 85f0d91983f2..b88e375bc265 100644 --- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/TaskFile.java +++ b/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/TaskFile.java @@ -13,15 +13,6 @@ import java.util.List; public class TaskFile { @Expose public List<TaskWindow> task_windows = new ArrayList<TaskWindow>(); public int myIndex; - public boolean myTrackChanges = true; - - public boolean isTrackChanges() { - return myTrackChanges; - } - - public void setTrackChanges(boolean trackChanges) { - myTrackChanges = trackChanges; - } public TaskFile() {} @@ -108,4 +99,22 @@ public class TaskFile { } } } + + public void copy(@NotNull final TaskFile target) { + target.setIndex(myIndex); + for (TaskWindow taskWindow : task_windows) { + TaskWindow savedWindow = new TaskWindow(taskWindow.getLine(), taskWindow.getStart(), + taskWindow.getLength(), ""); + target.getTaskWindows().add(savedWindow); + savedWindow.setIndex(taskWindow.getIndex()); + } + } + + public void update(@NotNull final TaskFile source) { + for (TaskWindow taskWindow : source.getTaskWindows()) { + TaskWindow taskWindowUpdated = task_windows.get(taskWindow.getIndex() - 1); + taskWindowUpdated.setLine(taskWindow.getLine()); + taskWindowUpdated.setStart(taskWindow.getStart()); + } + } } diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/TaskWindow.java b/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/TaskWindow.java index cb6418ec75d7..6b1be7ef3e7d 100644 --- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/TaskWindow.java +++ b/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/TaskWindow.java @@ -68,16 +68,17 @@ public class TaskWindow implements Comparable{ } } - public void drawHighlighter(@NotNull final Editor editor) { + public void drawHighlighter(@NotNull final Editor editor, boolean useLength) { int startOffset = editor.getDocument().getLineStartOffset(line) + start; - int endOffset = startOffset + myReplacementLength; + int highlighterLength = useLength ? length : myReplacementLength; + int endOffset = startOffset + highlighterLength; TextAttributes defaultTestAttributes = EditorColorsManager.getInstance().getGlobalScheme().getAttributes(EditorColors.LIVE_TEMPLATE_ATTRIBUTES); RangeHighlighter highlighter = editor.getMarkupModel().addRangeHighlighter(startOffset, endOffset, HighlighterLayer.LAST + 1, defaultTestAttributes, HighlighterTargetArea.EXACT_RANGE); highlighter.setGreedyToLeft(true); - highlighter.setGreedyToRight(true); + highlighter.setGreedyToRight(false); } public int getIndex() { @@ -123,10 +124,6 @@ public class TaskWindow implements Comparable{ return lineDiff; } - public String getPossibleAnswer() { - return possible_answer; - } - public int getLength() { return length; } |