Merge remote-tracking branch 'origin/master' into mark_folder_as
authorAnton Makeev <Anton.Makeev@jetbrains.com>
Thu, 26 Nov 2015 15:46:53 +0000 (16:46 +0100)
committerAnton Makeev <Anton.Makeev@jetbrains.com>
Thu, 26 Nov 2015 15:46:53 +0000 (16:46 +0100)
13 files changed:
java/java-impl/src/com/intellij/ide/projectView/actions/MarkGeneratedSourceRootAction.java
java/java-impl/src/com/intellij/ide/projectView/actions/UnmarkGeneratedSourceRootAction.java
java/java-impl/src/com/intellij/ide/projectView/impl/JavaProjectViewDirectoryHelper.java
platform/lang-impl/src/com/intellij/ide/projectView/actions/MarkExcludeRootAction.java
platform/lang-impl/src/com/intellij/ide/projectView/actions/MarkRootActionBase.java
platform/lang-impl/src/com/intellij/ide/projectView/actions/MarkSourceRootAction.java
platform/lang-impl/src/com/intellij/ide/projectView/actions/UnmarkRootAction.java
platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/ProjectViewDirectoryHelper.java
platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/PsiDirectoryNode.java
platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/ModuleSourceRootEditHandler.java
platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/actions/ToggleSourcesStateAction.java
platform/platform-resources-en/src/messages/LangBundle.properties
platform/projectModel-impl/src/messages/ProjectBundle.properties

index 59d36b88ce70b4a6cd44ac203c7919d4d6580a52..5029f7d64ad644ca65b9c89e75c235365f1b574d 100644 (file)
@@ -22,6 +22,7 @@ import com.intellij.openapi.module.Module;
 import com.intellij.openapi.module.ModuleType;
 import com.intellij.openapi.roots.ContentEntry;
 import com.intellij.openapi.roots.SourceFolder;
+import com.intellij.openapi.roots.ui.configuration.ModuleSourceRootEditHandler;
 import com.intellij.openapi.vfs.VirtualFile;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes;
@@ -29,6 +30,8 @@ import org.jetbrains.jps.model.java.JavaSourceRootProperties;
 import org.jetbrains.jps.model.java.JavaSourceRootType;
 import org.jetbrains.jps.model.java.JpsJavaExtensionService;
 
+import java.util.Locale;
+
 /**
  * @author nik
  */
@@ -36,8 +39,13 @@ public class MarkGeneratedSourceRootAction extends MarkRootActionBase {
   public MarkGeneratedSourceRootAction() {
     Presentation presentation = getTemplatePresentation();
     presentation.setIcon(AllIcons.Modules.GeneratedSourceRoot);
-    presentation.setText("Generated Sources Root");
-    presentation.setDescription("Mark directory as a source root for generated files");
+
+    ModuleSourceRootEditHandler<JavaSourceRootProperties> handler = ModuleSourceRootEditHandler.getEditHandler(JavaSourceRootType.SOURCE);
+    if (handler == null) return;
+    
+    String typeName = handler.getFullRootTypeName();
+    presentation.setText("Generated " + typeName);
+    presentation.setDescription("Mark directory as a " + typeName.toLowerCase(Locale.getDefault()) + " for generated files");
   }
 
   @Override
@@ -68,7 +76,7 @@ public class MarkGeneratedSourceRootAction extends MarkRootActionBase {
   }
 
   @Override
-  protected void modifyRoots(VirtualFile vFile, ContentEntry entry) {
+  protected void modifyRoots(@NotNull VirtualFile vFile, @NotNull ContentEntry entry) {
     JavaSourceRootProperties properties = JpsJavaExtensionService.getInstance().createSourceRootProperties("", true);
     entry.addSourceFolder(vFile, JavaSourceRootType.SOURCE, properties);
   }
index 0af8706ab38c3e4b4b03772314e4984abc51479c..b19b2369808d7646cc3466c860b8fd71ff64e1e2 100644 (file)
@@ -20,12 +20,15 @@ import com.intellij.openapi.actionSystem.Presentation;
 import com.intellij.openapi.module.Module;
 import com.intellij.openapi.roots.ContentEntry;
 import com.intellij.openapi.roots.SourceFolder;
+import com.intellij.openapi.roots.ui.configuration.ModuleSourceRootEditHandler;
 import com.intellij.openapi.vfs.VirtualFile;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes;
 import org.jetbrains.jps.model.java.JavaSourceRootProperties;
 import org.jetbrains.jps.model.java.JavaSourceRootType;
 
+import java.util.Locale;
+
 /**
  * @author nik
  */
@@ -33,8 +36,13 @@ public class UnmarkGeneratedSourceRootAction extends MarkRootActionBase {
   public UnmarkGeneratedSourceRootAction() {
     Presentation presentation = getTemplatePresentation();
     presentation.setIcon(AllIcons.Modules.SourceRoot);
-    presentation.setText("Unmark Generated Sources Root");
-    presentation.setDescription("Mark directory as an ordinary source root");
+
+    ModuleSourceRootEditHandler<JavaSourceRootProperties> handler = ModuleSourceRootEditHandler.getEditHandler(JavaSourceRootType.SOURCE);
+    if (handler == null) return;
+
+    String typeName = handler.getFullRootTypeName();
+    presentation.setText("Unmark Generated " + typeName);
+    presentation.setDescription("Mark directory as an ordinary " + typeName.toLowerCase(Locale.getDefault()));
   }
 
   @Override
@@ -49,7 +57,7 @@ public class UnmarkGeneratedSourceRootAction extends MarkRootActionBase {
   }
 
   @Override
-  protected void modifyRoots(VirtualFile vFile, ContentEntry entry) {
+  protected void modifyRoots(@NotNull VirtualFile vFile, @NotNull ContentEntry entry) {
     entry.addSourceFolder(vFile, JavaSourceRootType.SOURCE);
   }
 }
index c5ad4b06700fd650bc41f3ac7c6e70c17f996a22..a08df2d952783b62455ee0aeead0d283ae14dad7 100644 (file)
@@ -23,10 +23,12 @@ import com.intellij.ide.util.treeView.TreeViewUtil;
 import com.intellij.lang.LangBundle;
 import com.intellij.openapi.project.Project;
 import com.intellij.openapi.roots.impl.DirectoryIndex;
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.openapi.vfs.impl.jrt.JrtFileSystem;
 import com.intellij.psi.JavaDirectoryService;
 import com.intellij.psi.PsiDirectory;
 import com.intellij.psi.PsiPackage;
+import com.intellij.util.FontUtil;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
@@ -41,13 +43,18 @@ public class JavaProjectViewDirectoryHelper extends ProjectViewDirectoryHelper {
     super(project, index);
   }
 
+  @Nullable
   @Override
-  public String getLocationString(@NotNull final PsiDirectory directory) {
+  public String getLocationString(@NotNull PsiDirectory directory, boolean includeUrl, boolean includeRootType) {
+    String result = null;
     PsiPackage aPackage = JavaDirectoryService.getInstance().getPackage(directory);
     if (ProjectRootsUtil.isSourceRoot(directory) && aPackage != null) {   //package prefix
-      return aPackage.getQualifiedName();
+      result = StringUtil.nullize(aPackage.getQualifiedName(), true);
     }
-    return super.getLocationString(directory);
+    String baseString = super.getLocationString(directory, includeUrl, includeRootType);
+    if (result == null) return baseString;
+    if (baseString == null) return result;
+    return result  + "," + FontUtil.spaceAndThinSpace() + baseString;
   }
 
   @Override
index 2e55b4aee11a254a8c244435ee42b0b57062147a..7fbb9c3b9eca8362711377a62f3eb26da38cd411 100644 (file)
@@ -49,7 +49,7 @@ public class MarkExcludeRootAction extends MarkRootActionBase {
            " from the project?\nYou can restore excluded directories later using the Project Structure dialog.";
   }
 
-  protected void modifyRoots(VirtualFile vFile, ContentEntry entry) {
+  protected void modifyRoots(@NotNull VirtualFile vFile, @NotNull ContentEntry entry) {
     entry.addExcludeFolder(vFile);
   }
 
index 79553d1d331ffba2b283615b486ec595115b5334..633f677e9dee06979d96e53beed02e6a9220f634 100644 (file)
@@ -33,6 +33,7 @@ import com.intellij.openapi.vfs.VirtualFile;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
+import javax.swing.*;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -40,6 +41,17 @@ import java.util.List;
  * @author yole
  */
 public abstract class MarkRootActionBase extends DumbAwareAction {
+  public MarkRootActionBase() {
+  }
+
+  public MarkRootActionBase(@Nullable String text) {
+    super(text);
+  }
+
+  public MarkRootActionBase(@Nullable String text, @Nullable String description, @Nullable Icon icon) {
+    super(text, description, icon);
+  }
+
   @Override
   public void actionPerformed(AnActionEvent e) {
     VirtualFile[] files = e.getData(CommonDataKeys.VIRTUAL_FILE_ARRAY);
@@ -47,7 +59,10 @@ public abstract class MarkRootActionBase extends DumbAwareAction {
     if (module == null) {
       return;
     }
+    modifyRoots(e, module, files);
+  }
 
+  protected void modifyRoots(@NotNull  AnActionEvent e, @NotNull final Module module, @NotNull VirtualFile[] files) {
     final ModifiableRootModel model = ModuleRootManager.getInstance(module).getModifiableModel();
     for (VirtualFile file : files) {
       ContentEntry entry = findContentEntry(model, file);
@@ -167,7 +182,7 @@ public abstract class MarkRootActionBase extends DumbAwareAction {
     return result;
   }
 
-  protected static class RootsSelection {
+  public static class RootsSelection {
     public static final RootsSelection EMPTY = new RootsSelection();
 
     public List<SourceFolder> mySelectedRoots = new ArrayList<SourceFolder>();
index d1219d72cb74d2d86f165cd20bcb8fab5f41a335..7e6a9ec8ad1254b8e1970f0d992713859a3886cc 100644 (file)
@@ -27,6 +27,8 @@ import com.intellij.openapi.vfs.VirtualFile;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.jps.model.module.JpsModuleSourceRootType;
 
+import java.util.Locale;
+
 /**
  * @author nik
  */
@@ -40,11 +42,12 @@ public class MarkSourceRootAction extends MarkRootActionBase {
     ModuleSourceRootEditHandler<?> editHandler = ModuleSourceRootEditHandler.getEditHandler(type);
     LOG.assertTrue(editHandler != null);
     presentation.setIcon(editHandler.getRootIcon());
-    presentation.setText(editHandler.getRootTypeName() + " Root");
-    presentation.setDescription(ProjectBundle.message("module.toggle.sources.action.description", editHandler.getRootTypeName()));
+    presentation.setText(editHandler.getFullRootTypeName());
+    presentation.setDescription(ProjectBundle.message("module.toggle.sources.action.description", 
+                                                      editHandler.getFullRootTypeName().toLowerCase(Locale.getDefault())));
   }
 
-  protected void modifyRoots(VirtualFile vFile, ContentEntry entry) {
+  protected void modifyRoots(@NotNull VirtualFile vFile, @NotNull ContentEntry entry) {
     entry.addSourceFolder(vFile, myRootType);
   }
 
index 9131ae53aeef3288dc8b8d8bccae827a6abcd8a3..c1ef51c3cdb4f74bab6bc3b7d7e1d04a2c34f8b1 100644 (file)
@@ -15,6 +15,7 @@
  */
 package com.intellij.ide.projectView.actions;
 
+import com.intellij.lang.LangBundle;
 import com.intellij.openapi.actionSystem.AnActionEvent;
 import com.intellij.openapi.module.Module;
 import com.intellij.openapi.roots.ContentEntry;
@@ -40,25 +41,31 @@ public class UnmarkRootAction extends MarkRootActionBase {
     if (!Registry.is("ide.hide.excluded.files") && !selection.mySelectedExcludeRoots.isEmpty()
         && selection.mySelectedDirectories.isEmpty() && selection.mySelectedRoots.isEmpty()) {
       e.getPresentation().setEnabledAndVisible(true);
-      e.getPresentation().setText("Cancel Exclusion");
+      e.getPresentation().setText(LangBundle.message("mark.as.unmark.excluded"));
       return;
     }
 
     super.doUpdate(e, module, selection);
 
+    String text = getActionText(e, module, selection);
+    if (text != null) e.getPresentation().setText(text);
+  }
+
+  @Nullable
+  protected String getActionText(@NotNull AnActionEvent e, @Nullable Module module, @NotNull RootsSelection selection) {
     Set<ModuleSourceRootEditHandler<?>> selectedRootHandlers = getHandlersForSelectedRoots(selection);
 
     if (!selectedRootHandlers.isEmpty()) {
-      String text;
       if (selectedRootHandlers.size() == 1) {
         ModuleSourceRootEditHandler<?> handler = selectedRootHandlers.iterator().next();
-        text = "Unmark as " + handler.getRootTypeName() + " " + StringUtil.pluralize("Root", selection.mySelectedRoots.size());
+        return LangBundle.message("mark.as.unmark", 
+                                  StringUtil.pluralize(handler.getFullRootTypeName(), selection.mySelectedRoots.size()));
       }
       else {
-        text = "Unmark Roots";
+        return LangBundle.message("mark.as.unmark.several");
       }
-      e.getPresentation().setText(text);
     }
+    return null;
   }
 
   @NotNull
@@ -75,7 +82,7 @@ public class UnmarkRootAction extends MarkRootActionBase {
     return selection.mySelectedDirectories.isEmpty() && !getHandlersForSelectedRoots(selection).isEmpty();
   }
 
-  protected void modifyRoots(VirtualFile file, ContentEntry entry) {
+  protected void modifyRoots(@NotNull VirtualFile file, @NotNull ContentEntry entry) {
     for (ExcludeFolder excludeFolder : entry.getExcludeFolders()) {
       if (file.equals(excludeFolder.getFile())) {
         entry.removeExcludeFolder(excludeFolder);
index 4edc11eca068bf8c0e51ae3c983d394ed410c691..9df1e59a77595a216e4cfdc6831f07f77253131e 100644 (file)
@@ -29,26 +29,26 @@ import com.intellij.openapi.diagnostic.Logger;
 import com.intellij.openapi.fileTypes.FileTypeRegistry;
 import com.intellij.openapi.module.Module;
 import com.intellij.openapi.project.Project;
-import com.intellij.openapi.roots.ModuleFileIndex;
-import com.intellij.openapi.roots.ModuleRootManager;
-import com.intellij.openapi.roots.ProjectFileIndex;
-import com.intellij.openapi.roots.ProjectRootManager;
+import com.intellij.openapi.project.ProjectBundle;
+import com.intellij.openapi.roots.*;
 import com.intellij.openapi.roots.impl.DirectoryIndex;
 import com.intellij.openapi.roots.impl.DirectoryInfo;
+import com.intellij.openapi.roots.ui.configuration.ModuleSourceRootEditHandler;
 import com.intellij.openapi.util.Comparing;
+import com.intellij.openapi.util.io.FileUtil;
 import com.intellij.openapi.util.registry.Registry;
 import com.intellij.openapi.vfs.VirtualFile;
 import com.intellij.psi.*;
 import com.intellij.psi.search.PsiElementProcessor;
 import com.intellij.psi.util.PsiUtilCore;
+import com.intellij.util.FontUtil;
 import gnu.trove.THashSet;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
+import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes;
+import org.jetbrains.jps.model.java.JavaSourceRootProperties;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 
 public class ProjectViewDirectoryHelper {
   protected static final Logger LOG = Logger.getInstance("#" + ProjectViewDirectoryHelper.class.getName());
@@ -69,21 +69,42 @@ public class ProjectViewDirectoryHelper {
     return myProject;
   }
 
+
   @Nullable
   public String getLocationString(@NotNull PsiDirectory psiDirectory) {
+    return getLocationString(psiDirectory, false, false);
+  }
+
+  @Nullable
+  public String getLocationString(@NotNull PsiDirectory psiDirectory, boolean includeUrl, boolean includeRootType) {
+    StringBuilder result = new StringBuilder();
+
     final VirtualFile directory = psiDirectory.getVirtualFile();
-    
+
     if (ProjectRootsUtil.isLibraryRoot(directory, psiDirectory.getProject())) {
-      return "library home";
+      result.append(ProjectBundle.message("module.paths.root.node", "library").toLowerCase(Locale.getDefault()));
     }
-    
-    final VirtualFile contentRootForFile = ProjectRootManager.getInstance(myProject).getFileIndex().getContentRootForFile(directory);
-    if (Comparing.equal(contentRootForFile, psiDirectory)) {
-      return directory.getPresentableUrl();
+    else if (includeRootType) {
+      SourceFolder sourceRoot = ProjectRootsUtil.getModuleSourceRoot(psiDirectory.getVirtualFile(), psiDirectory.getProject());
+      if (sourceRoot != null) {
+        ModuleSourceRootEditHandler<?> handler = ModuleSourceRootEditHandler.getEditHandler(sourceRoot.getRootType());
+        if (handler != null) {
+          JavaSourceRootProperties properties = sourceRoot.getJpsElement().getProperties(JavaModuleSourceRootTypes.SOURCES);
+          if (properties != null && properties.isForGeneratedSources()) {
+            result.append("generated ");
+          }
+          result.append(handler.getFullRootTypeName().toLowerCase(Locale.getDefault()));
+        }
+      }
     }
-    return null;
-  }
 
+    if (includeUrl || ProjectRootsUtil.isModuleContentRoot(directory, psiDirectory.getProject())) {
+      if (result.length() > 0) result.append(",").append(FontUtil.spaceAndThinSpace());
+      result.append(FileUtil.getLocationRelativeToUserHome(directory.getPresentableUrl()));
+    }
+    
+    return result.length() == 0 ? null : result.toString();
+  }
 
 
   public boolean isShowFQName(ViewSettings settings, Object parentValue, PsiDirectory value) {
index 72f58eeac8a2f34edeaa40a9f1c8db217fcc7154..6c523128f83f666c9408844ff9393d170a2250a6 100644 (file)
@@ -33,12 +33,9 @@ import com.intellij.openapi.project.Project;
 import com.intellij.openapi.roots.OrderEntry;
 import com.intellij.openapi.roots.ProjectFileIndex;
 import com.intellij.openapi.roots.ProjectRootManager;
-import com.intellij.openapi.roots.SourceFolder;
 import com.intellij.openapi.roots.libraries.LibraryUtil;
-import com.intellij.openapi.roots.ui.configuration.ModuleSourceRootEditHandler;
 import com.intellij.openapi.roots.ui.configuration.ProjectSettingsService;
 import com.intellij.openapi.util.Comparing;
-import com.intellij.openapi.util.io.FileUtil;
 import com.intellij.openapi.util.registry.Registry;
 import com.intellij.openapi.vfs.LocalFileSystem;
 import com.intellij.openapi.vfs.VFileProperty;
@@ -51,12 +48,14 @@ import com.intellij.psi.impl.file.PsiDirectoryFactory;
 import com.intellij.ui.LayeredIcon;
 import com.intellij.ui.RowIcon;
 import com.intellij.ui.SimpleTextAttributes;
-import com.intellij.util.*;
+import com.intellij.util.IconUtil;
+import com.intellij.util.PathUtil;
+import com.intellij.util.PlatformIcons;
+import com.intellij.util.PlatformUtils;
 import org.jetbrains.annotations.NotNull;
 
 import javax.swing.*;
 import java.util.Collection;
-import java.util.Locale;
 
 public class PsiDirectoryNode extends BasePsiNode<PsiDirectory> implements NavigatableWithText {
   public PsiDirectoryNode(Project project, PsiDirectory value, ViewSettings viewSettings) {
@@ -102,21 +101,7 @@ public class PsiDirectoryNode extends BasePsiNode<PsiDirectory> implements Navig
           data.addText(directoryFile.getName(), SimpleTextAttributes.REGULAR_ATTRIBUTES);
         }
 
-        if (parentValue instanceof Module || parentValue instanceof Project) {
-          final String location = FileUtil.getLocationRelativeToUserHome(directoryFile.getPresentableUrl());
-          data.addText(FontUtil.spaceAndThinSpace() + location, SimpleTextAttributes.GRAYED_ATTRIBUTES);
-        }
-        else if (shouldShowSourcesRoot()) {
-          SourceFolder sourceRoot = ProjectRootsUtil.getModuleSourceRoot(directoryFile, project);
-          if (sourceRoot != null) {
-            ModuleSourceRootEditHandler<?> handler = ModuleSourceRootEditHandler.getEditHandler(sourceRoot.getRootType());
-            if (handler != null) {
-              String rootTypeName = handler.getRootTypeName();
-              data.addText(FontUtil.spaceAndThinSpace() + rootTypeName.toLowerCase(Locale.getDefault()) + " root",  SimpleTextAttributes.GRAYED_ATTRIBUTES);
-            }
-          }
-        }
-
+        data.setLocationString(ProjectViewDirectoryHelper.getInstance(project).getLocationString(psiDirectory, true, shouldShowSourcesRoot()));
         setupIcon(data, psiDirectory);
 
         return;
@@ -132,7 +117,7 @@ public class PsiDirectoryNode extends BasePsiNode<PsiDirectory> implements Navig
     }
 
     data.setPresentableText(name);
-    data.setLocationString(ProjectViewDirectoryHelper.getInstance(project).getLocationString(psiDirectory));
+    data.setLocationString(ProjectViewDirectoryHelper.getInstance(project).getLocationString(psiDirectory, false, false));
 
     setupIcon(data, psiDirectory);
   }
index 351e8caf42a528a3473f7d96d1e7a1df23d6b52b..4113bc4059f738eaff0e829b0140a99da971b30c 100644 (file)
@@ -17,6 +17,7 @@ package com.intellij.openapi.roots.ui.configuration;
 
 import com.intellij.openapi.actionSystem.CustomShortcutSet;
 import com.intellij.openapi.extensions.ExtensionPointName;
+import com.intellij.openapi.project.ProjectBundle;
 import com.intellij.openapi.roots.SourceFolder;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
@@ -55,6 +56,11 @@ public abstract class ModuleSourceRootEditHandler<P extends JpsElement> {
   @NotNull
   public abstract String getRootTypeName();
 
+  @NotNull
+  public String getFullRootTypeName() {
+    return ProjectBundle.message("module.paths.root.node", getRootTypeName());
+  }
+
   @NotNull
   public abstract Icon getRootIcon();
 
index c893d048a06534e04b7c87332b9ace93d71f3f23..40f6ca2777f5af3d6e855c5cd93083f345e7c8bc 100644 (file)
@@ -27,6 +27,7 @@ import com.intellij.openapi.vfs.VirtualFile;
 import org.jetbrains.jps.model.JpsElement;
 
 import javax.swing.*;
+import java.util.Locale;
 
 /**
  * @author Eugene Zhuravlev
@@ -42,7 +43,8 @@ public class ToggleSourcesStateAction<P extends JpsElement> extends ContentEntry
     myEditHandler = editHandler;
     final Presentation templatePresentation = getTemplatePresentation();
     templatePresentation.setText(editHandler.getMarkRootButtonText());
-    templatePresentation.setDescription(ProjectBundle.message("module.toggle.sources.action.description", editHandler.getRootTypeName()));
+    templatePresentation.setDescription(ProjectBundle.message("module.toggle.sources.action.description",
+                                                              editHandler.getFullRootTypeName().toLowerCase(Locale.getDefault())));
     templatePresentation.setIcon(editHandler.getRootIcon());
   }
 
index 4379559848a0fc65724817f3db223e555d1cbb82..9d140ebe16d8ec6124bda8301745e9898ba2ae47 100644 (file)
@@ -58,3 +58,7 @@ jrt.not.available.message=You need to run IDEA on Java 8 to be able to use modul
 jrt.not.available.title=Unsupported JDK ''{0}'' detected
 
 compound.run.configuration.cycle={0} ''{1}'' causes dependency cycle and cannot be added
+
+mark.as.unmark=Unmark as {0}
+mark.as.unmark.excluded=Cancel Exclusion
+mark.as.unmark.several=Unmark Roots
\ No newline at end of file
index 7514198998ed3206398ec917c21d6e566a995d7c..f251ad096f26f009f887af7e23f28d30c5701fe6 100644 (file)
@@ -95,6 +95,7 @@ module.paths.validation.source.root.belongs.to.another.module.error=Source root
 module.paths.remove.content.prompt=Remove content root \"{0}\"?
 module.paths.remove.content.title=Remove Content Root
 module.paths.empty.node=<empty>
+module.paths.root.node={0} Root
 module.paths.sources.group=Source Folders
 module.paths.test.sources.group=Test Source Folders
 module.paths.excluded.group=Excluded Folders
@@ -165,7 +166,7 @@ module.toggle.excluded.action=Excluded
 module.toggle.excluded.action.description=Include/Exclude directory from module
 module.toggle.test.sources.action=Test Sources
 module.toggle.sources.action=Sources
-module.toggle.sources.action.description=Mark directory as a {0} root
+module.toggle.sources.action.description=Mark directory as a {0}
 library.classes.node=Classes
 library.javadocs.node=JavaDocs
 library.empty.item=<empty library>