boolean (@NotNull AnActionEvent event) { DataContext dataContext = event.getDataContext(); Project project = CommonDataKeys.PROJECT.getData(dataContext); if (project == null) { return false; } final VirtualFile[] files = CommonDataKeys.VIRTUAL_FILE_ARRAY.getData(dataContext); final Editor editor = BaseCodeInsightAction.getInjectedEditor(project, CommonDataKeys.EDITOR.getData(dataContext), false); if (editor != null) { PsiFile file = PsiDocumentManager.getInstance(project).getPsiFile(editor.getDocument()); if (file == null || !isOptimizeImportsAvailable(file)) { return false; } } else if (files != null && ReformatCodeAction.containsOnlyFiles(files)) { boolean anyHasOptimizeImports = false; for (VirtualFile virtualFile : files) { PsiFile file = PsiManager.getInstance(project).findFile(virtualFile); if (file == null) { return false; } if (isOptimizeImportsAvailable(file)) { anyHasOptimizeImports = true; break; } } if (!anyHasOptimizeImports) { 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 || !isOptimizeImportsAvailable(file)) { return false; } } } return true; }