boolean (@NotNull AnActionEvent event) { DataContext dataContext = event.getDataContext(); Project project = CommonDataKeys.PROJECT.getData(dataContext); if (project == null) { return false; } Editor editor = CommonDataKeys.EDITOR.getData(dataContext); final VirtualFile[] files = CommonDataKeys.VIRTUAL_FILE_ARRAY.getData(dataContext); if (editor != null){ PsiFile file = PsiDocumentManager.getInstance(project).getPsiFile(editor.getDocument()); if (file == null || file.getVirtualFile() == null) { return false; } if (LanguageFormatting.INSTANCE.forContext(file) != null) { return true; } } else if (files != null && containsOnlyFiles(files)) { boolean anyFormatters = false; for (VirtualFile virtualFile : files) { final PsiFile psiFile = PsiManager.getInstance(project).findFile(virtualFile); if (psiFile == null) { return false; } final FormattingModelBuilder builder = LanguageFormatting.INSTANCE.forContext(psiFile); if (builder != null) { anyFormatters = true; break; } } if (!anyFormatters) { return false; } } else if (files != null && files.length == 1) { // skip. Both directories and single files are supported. } else if (LangDataKeys.MODULE_CONTEXT.getData(dataContext) == null && PlatformCoreDataKeys.PROJECT_CONTEXT.getData(dataContext) == null) { PsiElement element = CommonDataKeys.PSI_ELEMENT.getData(dataContext); if (element == null) { return false; } if (!(element instanceof PsiDirectory)) { PsiFile file = element.getContainingFile(); if (file == null || LanguageFormatting.INSTANCE.forContext(file) == null) { return false; } } } return true; }