mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
EDU-268 Task directories should be marked as source roots automatically
This commit is contained in:
@@ -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();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
+2
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user