part of EDU-331(improving lesson and task management)
[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.openapi.actionSystem.AnActionEvent;
5 import com.intellij.openapi.actionSystem.Presentation;
6 import com.intellij.openapi.application.ApplicationManager;
7 import com.intellij.openapi.diagnostic.Logger;
8 import com.intellij.openapi.module.Module;
9 import com.intellij.openapi.module.ModuleUtilCore;
10 import com.intellij.openapi.project.Project;
11 import com.intellij.openapi.roots.ContentEntry;
12 import com.intellij.openapi.roots.ModifiableRootModel;
13 import com.intellij.openapi.roots.ModuleRootManager;
14 import com.intellij.openapi.vfs.VirtualFile;
15 import org.jetbrains.annotations.NotNull;
16
17 public class CCUtils {
18   private static final Logger LOG = Logger.getInstance(CCUtils.class.getName());
19
20   public static void markDirAsSourceRoot(@NotNull final VirtualFile dir, @NotNull final Project project) {
21     final Module module = ModuleUtilCore.findModuleForFile(dir, project);
22     if (module == null) {
23       LOG.info("Module for " + dir.getPath() + " was not found");
24       return;
25     }
26     final ModifiableRootModel model = ModuleRootManager.getInstance(module).getModifiableModel();
27     ContentEntry entry = MarkRootActionBase.findContentEntry(model, dir);
28     if (entry == null) {
29       LOG.info("Content entry for " + dir.getPath() + " was not found");
30       return;
31     }
32     entry.addSourceFolder(dir, false);
33     ApplicationManager.getApplication().runWriteAction(new Runnable() {
34       @Override
35       public void run() {
36         model.commit();
37         module.getProject().save();
38       }
39     });
40   }
41
42   public static void enableAction(@NotNull final AnActionEvent event, boolean isEnable) {
43     final Presentation presentation = event.getPresentation();
44     presentation.setVisible(isEnable);
45     presentation.setEnabled(isEnable);
46   }
47
48   public static int getIndex(@NotNull final String fullName, @NotNull final String logicalName) {
49     if (!fullName.startsWith(logicalName)) {
50       throw new IllegalArgumentException();
51     }
52     try {
53       return Integer.parseInt(fullName.substring(logicalName.length()));
54     }
55     catch (NumberFormatException e) {
56       return -1;
57     }
58   }
59 }