Search in sources :

Example 1 with Lesson

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);
}
Also used : VirtualFile(com.intellij.openapi.vfs.VirtualFile) Lesson(com.jetbrains.edu.learning.courseFormat.Lesson)

Example 2 with Lesson

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);
}
Also used : VirtualFile(com.intellij.openapi.vfs.VirtualFile) Task(com.jetbrains.edu.learning.courseFormat.Task) Lesson(com.jetbrains.edu.learning.courseFormat.Lesson)

Example 3 with Lesson

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;
}
Also used : Lesson(com.jetbrains.edu.learning.courseFormat.Lesson)

Example 4 with 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);
}
Also used : TaskFile(com.jetbrains.edu.learning.courseFormat.TaskFile) VirtualFile(com.intellij.openapi.vfs.VirtualFile) Task(com.jetbrains.edu.learning.courseFormat.Task) UniqueNameEditorTabTitleProvider(com.intellij.openapi.fileEditor.impl.UniqueNameEditorTabTitleProvider) Lesson(com.jetbrains.edu.learning.courseFormat.Lesson) Nullable(org.jetbrains.annotations.Nullable)

Example 5 with Lesson

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();
}
Also used : VirtualFile(com.intellij.openapi.vfs.VirtualFile) TaskFile(com.jetbrains.edu.learning.courseFormat.TaskFile) Task(com.jetbrains.edu.learning.courseFormat.Task) Course(com.jetbrains.edu.learning.courseFormat.Course) StudyProjectGenerator.flushCourse(com.jetbrains.edu.learning.courseGeneration.StudyProjectGenerator.flushCourse) CourseInfo(com.jetbrains.edu.learning.courseFormat.CourseInfo) VirtualFile(com.intellij.openapi.vfs.VirtualFile) TaskFile(com.jetbrains.edu.learning.courseFormat.TaskFile) File(java.io.File) CCFromCourseArchive.createAnswerFile(com.jetbrains.edu.coursecreator.actions.CCFromCourseArchive.createAnswerFile) Lesson(com.jetbrains.edu.learning.courseFormat.Lesson) Map(java.util.Map)

Aggregations

Lesson (com.jetbrains.edu.learning.courseFormat.Lesson)23 VirtualFile (com.intellij.openapi.vfs.VirtualFile)11 Task (com.jetbrains.edu.learning.courseFormat.Task)11 Course (com.jetbrains.edu.learning.courseFormat.Course)10 PsiDirectory (com.intellij.psi.PsiDirectory)9 Project (com.intellij.openapi.project.Project)8 IdeView (com.intellij.ide.IdeView)6 TaskFile (com.jetbrains.edu.learning.courseFormat.TaskFile)6 ProgressIndicator (com.intellij.openapi.progress.ProgressIndicator)3 Task (com.intellij.openapi.progress.Task)3 CourseInfo (com.jetbrains.edu.learning.courseFormat.CourseInfo)3 IOException (java.io.IOException)3 List (java.util.List)3 Nullable (org.jetbrains.annotations.Nullable)3 CommonDataKeys (com.intellij.openapi.actionSystem.CommonDataKeys)2 LangDataKeys (com.intellij.openapi.actionSystem.LangDataKeys)2 ApplicationManager (com.intellij.openapi.application.ApplicationManager)2 Logger (com.intellij.openapi.diagnostic.Logger)2 Module (com.intellij.openapi.module.Module)2 DialogWrapper (com.intellij.openapi.ui.DialogWrapper)2