hide Groovy run configuration if there are no groovy files in project (IDEA-116046)

This commit is contained in:
nik
2013-11-06 17:13:22 +04:00
parent 29427e71b4
commit 7b00b8f698
2 changed files with 17 additions and 0 deletions
@@ -103,4 +103,13 @@ public class FileTypeIndex extends ScalarIndexExtension<FileType>
public Map<FileType, Void> 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<Void>() {
@Override
public boolean process(VirtualFile file, Void value) {
return false;
}
}, scope);
}
}
@@ -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);
}