import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.project.Project;
-import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileAdapter;
import com.intellij.openapi.vfs.VirtualFileEvent;
import com.intellij.util.Function;
import com.jetbrains.edu.EduNames;
-import com.jetbrains.edu.EduUtils;
import com.jetbrains.edu.courseFormat.*;
import com.jetbrains.edu.coursecreator.actions.CCRunTestsAction;
import org.jetbrains.annotations.NotNull;
return lesson.getTask(file.getName());
}
}, task.getIndex(), EduNames.TASK, -1);
- ModifiableRootModel model = EduUtils.getModel(lessonDir, project);
- if (model == null) {
- return;
- }
- EduUtils.commitAndSaveModel(model);
lesson.getTaskList().remove(task);
}
import com.intellij.psi.PsiElement;
import com.intellij.util.PlatformIcons;
import com.jetbrains.edu.EduNames;
-import com.jetbrains.edu.EduUtils;
import com.jetbrains.edu.courseFormat.Course;
import com.jetbrains.edu.courseFormat.Lesson;
import com.jetbrains.edu.courseFormat.Task;
return;
}
- EduUtils.markDirAsSourceRoot(taskDirectory.getVirtualFile(), project);
final Task task = new Task(taskName);
task.setIndex(size + 1);
lesson.addTask(task);
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.jetbrains.edu.EduNames;
-import com.jetbrains.edu.EduUtils;
import com.jetbrains.edu.courseFormat.Course;
import com.jetbrains.edu.courseFormat.Lesson;
import com.jetbrains.edu.courseFormat.Task;
public static void createTask(@NotNull final Task task, @NotNull final VirtualFile lessonDir, @NotNull final File resourceRoot,
@NotNull final Project project) throws IOException {
VirtualFile taskDir = lessonDir.createChildDirectory(project, EduNames.TASK + Integer.toString(task.getIndex()));
- EduUtils.markDirAsSourceRoot(taskDir, project);
File newResourceRoot = new File(resourceRoot, taskDir.getName());
int i = 0;
for (Map.Entry<String, TaskFile> taskFile : task.getTaskFiles().entrySet()) {
package com.jetbrains.edu;
import com.intellij.ide.SaveAndSyncHandler;
-import com.intellij.ide.projectView.actions.MarkRootActionBase;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.Presentation;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.fileEditor.FileDocumentManager;
-import com.intellij.openapi.module.Module;
-import com.intellij.openapi.module.ModuleUtilCore;
import com.intellij.openapi.project.Project;
-import com.intellij.openapi.roots.ContentEntry;
-import com.intellij.openapi.roots.ModifiableRootModel;
-import com.intellij.openapi.roots.ModuleRootManager;
import com.intellij.openapi.util.TextRange;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileManager;
}
};
- public static void commitAndSaveModel(final ModifiableRootModel model) {
- ApplicationManager.getApplication().runWriteAction(new Runnable() {
- @Override
- public void run() {
- model.commit();
- model.getProject().save();
- }
- });
- }
-
- @Nullable
- public static ModifiableRootModel getModel(@NotNull VirtualFile dir, @NotNull Project project) {
- final Module module = ModuleUtilCore.findModuleForFile(dir, project);
- if (module == null) {
- LOG.info("Module for " + dir.getPath() + " was not found");
- return null;
- }
- return ModuleRootManager.getInstance(module).getModifiableModel();
- }
-
- public static void markDirAsSourceRoot(@NotNull final VirtualFile dir, @NotNull final Project project) {
- final ModifiableRootModel model = getModel(dir, project);
- if (model == null) {
- return;
- }
- final ContentEntry entry = MarkRootActionBase.findContentEntry(model, dir);
- if (entry == null) {
- LOG.info("Content entry for " + dir.getPath() + " was not found");
- return;
- }
- entry.addSourceFolder(dir, false);
- commitAndSaveModel(model);
- }
-
public static void enableAction(@NotNull final AnActionEvent event, boolean isEnable) {
final Presentation presentation = event.getPresentation();
presentation.setVisible(isEnable);