From c0e497cb968b583fdaaceb75fa990eb2a6424563 Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Tue, 18 Oct 2016 12:06:19 +0200 Subject: [PATCH] [java] filtering out non-Java directories in "Create module-info.java" action (EA-88041) --- .../ide/actions/CreateModuleInfoAction.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/java/java-impl/src/com/intellij/ide/actions/CreateModuleInfoAction.java b/java/java-impl/src/com/intellij/ide/actions/CreateModuleInfoAction.java index ebc24ac743f7..c405995e7eb6 100644 --- a/java/java-impl/src/com/intellij/ide/actions/CreateModuleInfoAction.java +++ b/java/java-impl/src/com/intellij/ide/actions/CreateModuleInfoAction.java @@ -28,12 +28,15 @@ import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.actionSystem.LangDataKeys; import com.intellij.openapi.module.ModuleUtilCore; import com.intellij.openapi.project.Project; -import com.intellij.psi.JavaDirectoryService; +import com.intellij.openapi.roots.ProjectFileIndex; +import com.intellij.openapi.roots.ProjectRootManager; +import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiDirectory; import com.intellij.psi.search.FilenameIndex; import com.intellij.psi.util.PsiUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.jps.model.java.JavaSourceRootType; import java.util.Optional; import java.util.Properties; @@ -41,6 +44,7 @@ import java.util.Properties; import static com.intellij.ide.fileTemplates.JavaTemplateUtil.INTERNAL_MODULE_INFO_TEMPLATE_NAME; import static com.intellij.psi.PsiJavaModule.MODULE_INFO_CLASS; import static com.intellij.psi.PsiJavaModule.MODULE_INFO_FILE; +import static java.util.Collections.singleton; public class CreateModuleInfoAction extends CreateFromTemplateActionBase { public CreateModuleInfoAction() { @@ -64,10 +68,12 @@ public class CreateModuleInfoAction extends CreateFromTemplateActionBase { protected PsiDirectory getTargetDirectory(DataContext dataContext, IdeView view) { PsiDirectory[] directories = view.getDirectories(); if (directories.length == 1) { - PsiDirectory directory = directories[0]; - JavaDirectoryService service = JavaDirectoryService.getInstance(); - if (service.isSourceRoot(directory) && service.getPackage(directory) != null) { - return directory; + PsiDirectory psiDir = directories[0]; + VirtualFile vDir = psiDir.getVirtualFile(); + ProjectFileIndex index = ProjectRootManager.getInstance(psiDir.getProject()).getFileIndex(); + if (vDir.equals(index.getSourceRootForFile(vDir)) && + index.isUnderSourceRootOfType(vDir, singleton(JavaSourceRootType.SOURCE))) { + return psiDir; } }