From 7b00b8f698d80bcf024297b1adfa2ff5c995aa22 Mon Sep 17 00:00:00 2001 From: nik Date: Wed, 6 Nov 2013 17:13:22 +0400 Subject: [PATCH] hide Groovy run configuration if there are no groovy files in project (IDEA-116046) --- .../src/com/intellij/psi/search/FileTypeIndex.java | 9 +++++++++ .../groovy/runner/GroovyScriptRunConfigurationType.java | 8 ++++++++ 2 files changed, 17 insertions(+) diff --git a/platform/indexing-impl/src/com/intellij/psi/search/FileTypeIndex.java b/platform/indexing-impl/src/com/intellij/psi/search/FileTypeIndex.java index 8f0ed108f696..b0a8673ec6ed 100644 --- a/platform/indexing-impl/src/com/intellij/psi/search/FileTypeIndex.java +++ b/platform/indexing-impl/src/com/intellij/psi/search/FileTypeIndex.java @@ -103,4 +103,13 @@ public class FileTypeIndex extends ScalarIndexExtension public Map map(FileContent inputData) { return Collections.singletonMap(inputData.getFileType(), null); } + + public static boolean containsFileOfType(@NotNull FileType type, @NotNull GlobalSearchScope scope) { + return !FileBasedIndex.getInstance().processValues(NAME, type, null, new FileBasedIndex.ValueProcessor() { + @Override + public boolean process(VirtualFile file, Void value) { + return false; + } + }, scope); + } } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/runner/GroovyScriptRunConfigurationType.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/runner/GroovyScriptRunConfigurationType.java index da972790a15c..fef7af558853 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/runner/GroovyScriptRunConfigurationType.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/runner/GroovyScriptRunConfigurationType.java @@ -21,9 +21,12 @@ import com.intellij.execution.configurations.ConfigurationType; import com.intellij.execution.configurations.ConfigurationTypeUtil; import com.intellij.execution.configurations.RunConfiguration; import com.intellij.openapi.project.Project; +import com.intellij.psi.search.FileTypeIndex; +import com.intellij.psi.search.GlobalSearchScope; import icons.JetgroovyIcons; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; +import org.jetbrains.plugins.groovy.GroovyFileType; import javax.swing.*; @@ -65,6 +68,11 @@ public class GroovyScriptRunConfigurationType implements ConfigurationType { super(type); } + @Override + public boolean isApplicable(@NotNull Project project) { + return FileTypeIndex.containsFileOfType(GroovyFileType.GROOVY_FILE_TYPE, GlobalSearchScope.allScope(project)); + } + public RunConfiguration createTemplateConfiguration(Project project) { return new GroovyScriptRunConfiguration("Groovy Script", project, this); }