EDU-268 Task directories should be marked as source roots automatically

This commit is contained in:
Liana Bakradze
2014-11-25 13:47:30 +03:00
parent ddb5bf3433
commit ef8771c4bb
2 changed files with 41 additions and 0 deletions
@@ -0,0 +1,39 @@
package org.jetbrains.plugins.coursecreator;
import com.intellij.ide.projectView.actions.MarkRootActionBase;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.diagnostic.Logger;
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.vfs.VirtualFile;
import org.jetbrains.annotations.NotNull;
public class CCUtils {
private static final Logger LOG = Logger.getInstance(CCUtils.class.getName());
public static void markDirAsSourceRoot(@NotNull final VirtualFile dir, @NotNull final Project project) {
final Module module = ModuleUtilCore.findModuleForFile(dir, project);
if (module == null) {
LOG.info("Module for " + dir.getPath() + " was not found");
return;
}
final ModifiableRootModel model = ModuleRootManager.getInstance(module).getModifiableModel();
ContentEntry entry = MarkRootActionBase.findContentEntry(model, dir);
if (entry == null) {
LOG.info("Content entry for " + dir.getPath() + " was not found");
return;
}
entry.addSourceFolder(dir, false);
ApplicationManager.getApplication().runWriteAction(new Runnable() {
@Override
public void run() {
model.commit();
module.getProject().save();
}
});
}
}
@@ -22,6 +22,7 @@ import com.intellij.psi.PsiElement;
import com.intellij.util.PlatformIcons;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.plugins.coursecreator.CCProjectService;
import org.jetbrains.plugins.coursecreator.CCUtils;
import org.jetbrains.plugins.coursecreator.format.Course;
import org.jetbrains.plugins.coursecreator.format.Lesson;
import org.jetbrains.plugins.coursecreator.format.Task;
@@ -66,6 +67,7 @@ public class CCCreateTask extends DumbAwareAction {
public void run() {
final PsiDirectory taskDirectory = DirectoryUtil.createSubdirectories("task" + (size + 1), lessonDir, "\\/");
if (taskDirectory != null) {
CCUtils.markDirAsSourceRoot(taskDirectory.getVirtualFile(), project);
final FileTemplate template = FileTemplateManager.getInstance().getInternalTemplate("task.html");
final FileTemplate testsTemplate = FileTemplateManager.getInstance().getInternalTemplate("tests");
final FileTemplate taskTemplate = FileTemplateManager.getInstance().getInternalTemplate("task.answer");