use of com.jetbrains.edu.learning.courseFormat.Lesson in project intellij-community by JetBrains.
the class CCVirtualFileListener method deleteLesson.
private static void deleteLesson(@NotNull final Course course, @NotNull final VirtualFile removedLessonFile, Project project) {
Lesson removedLesson = course.getLesson(removedLessonFile.getName());
if (removedLesson == null) {
return;
}
VirtualFile courseDir = project.getBaseDir();
CCUtils.updateHigherElements(courseDir.getChildren(), file -> course.getLesson(file.getName()), removedLesson.getIndex(), EduNames.LESSON, -1);
course.getLessons().remove(removedLesson);
}
use of com.jetbrains.edu.learning.courseFormat.Lesson in project intellij-community by JetBrains.
the class CCVirtualFileListener method deleteTask.
private static void deleteTask(@NotNull final Course course, @NotNull final VirtualFile removedTask) {
VirtualFile lessonDir = removedTask.getParent();
if (lessonDir == null || !lessonDir.getName().contains(EduNames.LESSON)) {
return;
}
final Lesson lesson = course.getLesson(lessonDir.getName());
if (lesson == null) {
return;
}
Task task = lesson.getTask(removedTask.getName());
if (task == null) {
return;
}
CCUtils.updateHigherElements(lessonDir.getChildren(), file -> lesson.getTask(file.getName()), task.getIndex(), EduNames.TASK, -1);
lesson.getTaskList().remove(task);
}
use of com.jetbrains.edu.learning.courseFormat.Lesson in project intellij-community by JetBrains.
the class CCCreateLesson method createAndInitItem.
@Override
protected StudyItem createAndInitItem(@NotNull Course course, @Nullable StudyItem parentItem, String name, int index) {
Lesson lesson = new Lesson();
lesson.setName(name);
lesson.setCourse(course);
lesson.setIndex(index);
return lesson;
}
use of com.jetbrains.edu.learning.courseFormat.Lesson in project intellij-community by JetBrains.
the class StudyTabTitleProvider method getEditorTabTitle.
@Nullable
@Override
public String getEditorTabTitle(Project project, VirtualFile file) {
TaskFile taskFile = StudyUtils.getTaskFile(project, file);
if (taskFile == null) {
return null;
}
String title = new UniqueNameEditorTabTitleProvider().getEditorTabTitle(project, file);
if (title == null) {
return null;
}
String[] split = title.split(Pattern.quote(File.separator));
for (int i = 0; i < split.length; i++) {
String part = split[i];
Task task = taskFile.getTask();
VirtualFile taskDir = task.getTaskDir(project);
if (taskDir != null && part.equals(taskDir.getName())) {
split[i] = task.getName();
continue;
}
Lesson lesson = task.getLesson();
int lessonIndex = lesson.getIndex();
if (part.equals(EduNames.LESSON + lessonIndex)) {
split[i] = lesson.getName();
}
}
return StringUtil.join(split, File.separator);
}
use of com.jetbrains.edu.learning.courseFormat.Lesson in project intellij-community by JetBrains.
the class CCGetCourseFromStepic method createCourse.
private static void createCourse(Project project, String courseId) {
final VirtualFile baseDir = project.getBaseDir();
final CourseInfo info = CCStepicConnector.getCourseInfo(courseId);
if (info == null)
return;
final Course course = EduStepicConnector.getCourse(project, info);
if (course != null) {
flushCourse(course);
final File courseDirectory = StudyUtils.getCourseDirectory(course);
ApplicationManager.getApplication().invokeAndWait(() -> ApplicationManager.getApplication().runWriteAction(() -> {
final VirtualFile[] children = baseDir.getChildren();
for (VirtualFile child : children) {
StudyUtils.deleteFile(child);
}
StudyGenerator.createCourse(course, baseDir, courseDirectory, project);
}));
StudyTaskManager.getInstance(project).setCourse(course);
File courseDir = new File(OUR_COURSES_DIR, course.getName() + "-" + project.getName());
course.setCourseDirectory(courseDir.getPath());
course.setCourseMode(CCUtils.COURSE_MODE);
project.getBaseDir().refresh(false, true);
int index = 1;
int taskIndex = 1;
for (Lesson lesson : course.getLessons()) {
final VirtualFile lessonDir = project.getBaseDir().findChild(EduNames.LESSON + String.valueOf(index));
lesson.setIndex(index);
if (lessonDir == null)
continue;
for (Task task : lesson.getTaskList()) {
final VirtualFile taskDir = lessonDir.findChild(EduNames.TASK + String.valueOf(taskIndex));
task.setIndex(taskIndex);
task.setLesson(lesson);
if (taskDir == null)
continue;
for (final Map.Entry<String, TaskFile> entry : task.getTaskFiles().entrySet()) {
ApplicationManager.getApplication().invokeAndWait(() -> ApplicationManager.getApplication().runWriteAction(() -> createAnswerFile(project, taskDir, entry)));
}
taskIndex += 1;
}
index += 1;
taskIndex = 1;
}
course.initCourse(true);
ApplicationManager.getApplication().invokeAndWait(() -> StudyUtils.registerStudyToolWindow(course, project));
}
VirtualFileManager.getInstance().refreshWithoutFileWatcher(true);
ProjectView.getInstance(project).refresh();
}
Aggregations