1 package com.jetbrains.edu.coursecreator;
3 import com.intellij.ide.projectView.actions.MarkRootActionBase;
4 import com.intellij.lang.Language;
5 import com.intellij.openapi.actionSystem.AnActionEvent;
6 import com.intellij.openapi.actionSystem.Presentation;
7 import com.intellij.openapi.application.ApplicationManager;
8 import com.intellij.openapi.diagnostic.Logger;
9 import com.intellij.openapi.module.Module;
10 import com.intellij.openapi.module.ModuleUtilCore;
11 import com.intellij.openapi.project.Project;
12 import com.intellij.openapi.roots.ContentEntry;
13 import com.intellij.openapi.roots.ModifiableRootModel;
14 import com.intellij.openapi.roots.ModuleRootManager;
15 import com.intellij.openapi.vfs.VirtualFile;
16 import com.jetbrains.edu.coursecreator.format.Course;
17 import org.jetbrains.annotations.NotNull;
18 import org.jetbrains.annotations.Nullable;
20 public class CCUtils {
21 private static final Logger LOG = Logger.getInstance(CCUtils.class.getName());
23 public static void markDirAsSourceRoot(@NotNull final VirtualFile dir, @NotNull final Project project) {
24 final Module module = ModuleUtilCore.findModuleForFile(dir, project);
26 LOG.info("Module for " + dir.getPath() + " was not found");
29 final ModifiableRootModel model = ModuleRootManager.getInstance(module).getModifiableModel();
30 ContentEntry entry = MarkRootActionBase.findContentEntry(model, dir);
32 LOG.info("Content entry for " + dir.getPath() + " was not found");
35 entry.addSourceFolder(dir, false);
36 ApplicationManager.getApplication().runWriteAction(new Runnable() {
40 module.getProject().save();
45 public static void enableAction(@NotNull final AnActionEvent event, boolean isEnable) {
46 final Presentation presentation = event.getPresentation();
47 presentation.setVisible(isEnable);
48 presentation.setEnabled(isEnable);
51 public static int getIndex(@NotNull final String fullName, @NotNull final String logicalName) {
52 if (!fullName.startsWith(logicalName)) {
53 throw new IllegalArgumentException();
56 return Integer.parseInt(fullName.substring(logicalName.length()));
58 catch (NumberFormatException e) {
64 public static StudyLanguageManager getStudyLanguageManager(@NotNull final Course course) {
65 Language language = Language.findLanguageByID(course.getLanguage());
66 return language == null ? null : StudyLanguageManager.INSTANCE.forLanguage(language);