From 716a35921102e505eb584d8dd49fe54fc89d439d Mon Sep 17 00:00:00 2001 From: Ekaterina Tuzova Date: Thu, 26 May 2016 13:33:23 +0300 Subject: [PATCH] PY-17717 For subdirectory of a `Sources Root`, cannot `Mark Directory As > Sources` from right-click context menu --- .../src/com/intellij/openapi/module/ModuleType.java | 4 ++++ .../ide/projectView/actions/MarkSourceRootAction.java | 5 +++-- python/src/com/jetbrains/python/PythonModuleTypeBase.java | 7 +++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/platform/lang-api/src/com/intellij/openapi/module/ModuleType.java b/platform/lang-api/src/com/intellij/openapi/module/ModuleType.java index 215c80285bf5..643cab16cc1d 100644 --- a/platform/lang-api/src/com/intellij/openapi/module/ModuleType.java +++ b/platform/lang-api/src/com/intellij/openapi/module/ModuleType.java @@ -132,4 +132,8 @@ public abstract class ModuleType { public boolean isSupportedRootType(JpsModuleSourceRootType type) { return true; } + + public boolean isMarkInnerSupportedFor(JpsModuleSourceRootType type) { + return false; + } } diff --git a/platform/lang-impl/src/com/intellij/ide/projectView/actions/MarkSourceRootAction.java b/platform/lang-impl/src/com/intellij/ide/projectView/actions/MarkSourceRootAction.java index 7e6a9ec8ad12..747f8ae81902 100644 --- a/platform/lang-impl/src/com/intellij/ide/projectView/actions/MarkSourceRootAction.java +++ b/platform/lang-impl/src/com/intellij/ide/projectView/actions/MarkSourceRootAction.java @@ -53,8 +53,9 @@ public class MarkSourceRootAction extends MarkRootActionBase { @Override protected boolean isEnabled(@NotNull RootsSelection selection, @NotNull Module module) { - if (!ModuleType.get(module).isSupportedRootType(myRootType) || selection.myHaveSelectedFilesUnderSourceRoots - || ModuleSourceRootEditHandler.getEditHandler(myRootType) == null) { + final ModuleType moduleType = ModuleType.get(module); + if (!moduleType.isSupportedRootType(myRootType) || ModuleSourceRootEditHandler.getEditHandler(myRootType) == null + || (selection.myHaveSelectedFilesUnderSourceRoots && !moduleType.isMarkInnerSupportedFor(myRootType))) { return false; } diff --git a/python/src/com/jetbrains/python/PythonModuleTypeBase.java b/python/src/com/jetbrains/python/PythonModuleTypeBase.java index f70f1e76c263..042f11f3ef33 100644 --- a/python/src/com/jetbrains/python/PythonModuleTypeBase.java +++ b/python/src/com/jetbrains/python/PythonModuleTypeBase.java @@ -23,6 +23,8 @@ import com.intellij.openapi.module.ModuleTypeManager; import icons.PythonIcons; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; +import org.jetbrains.jps.model.java.JavaSourceRootType; +import org.jetbrains.jps.model.module.JpsModuleSourceRootType; import javax.swing.*; @@ -64,4 +66,9 @@ public abstract class PythonModuleTypeBase extends Modu public Icon getNodeIcon(final boolean isOpened) { return PythonIcons.Python.PythonClosed; } + + @Override + public boolean isMarkInnerSupportedFor(JpsModuleSourceRootType type) { + return type == JavaSourceRootType.SOURCE; + } }