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); }