moved everything python dependent to language part of plugin
[idea/community.git] / python / educational / course-creator / src / com / jetbrains / edu / coursecreator / CCUtils.java
1 package com.jetbrains.edu.coursecreator;
2
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;
19
20 public class CCUtils {
21   private static final Logger LOG = Logger.getInstance(CCUtils.class.getName());
22
23   public static void markDirAsSourceRoot(@NotNull final VirtualFile dir, @NotNull final Project project) {
24     final Module module = ModuleUtilCore.findModuleForFile(dir, project);
25     if (module == null) {
26       LOG.info("Module for " + dir.getPath() + " was not found");
27       return;
28     }
29     final ModifiableRootModel model = ModuleRootManager.getInstance(module).getModifiableModel();
30     ContentEntry entry = MarkRootActionBase.findContentEntry(model, dir);
31     if (entry == null) {
32       LOG.info("Content entry for " + dir.getPath() + " was not found");
33       return;
34     }
35     entry.addSourceFolder(dir, false);
36     ApplicationManager.getApplication().runWriteAction(new Runnable() {
37       @Override
38       public void run() {
39         model.commit();
40         module.getProject().save();
41       }
42     });
43   }
44
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);
49   }
50
51   public static int getIndex(@NotNull final String fullName, @NotNull final String logicalName) {
52     if (!fullName.startsWith(logicalName)) {
53       throw new IllegalArgumentException();
54     }
55     try {
56       return Integer.parseInt(fullName.substring(logicalName.length()));
57     }
58     catch (NumberFormatException e) {
59       return -1;
60     }
61   }
62
63   @Nullable
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);
67   }
68 }