Example usage for com.intellij.openapi.actionSystem PlatformDataKeys PROJECT_CONTEXT

List of usage examples for com.intellij.openapi.actionSystem PlatformDataKeys PROJECT_CONTEXT

Introduction

In this page you can find the example usage for com.intellij.openapi.actionSystem PlatformDataKeys PROJECT_CONTEXT.

Prototype

DataKey PROJECT_CONTEXT

To view the source code for com.intellij.openapi.actionSystem PlatformDataKeys PROJECT_CONTEXT.

Click Source Link

Document

Returns project if project node is selected (in project view)

Usage

From source file:com.imaginea.kodebeagle.action.EditSettingsAction.java

License:Apache License

@Override
public final void actionPerformed(final AnActionEvent anActionEvent) {
    ShowSettingsUtil.getInstance().showSettingsDialog(anActionEvent.getData(PlatformDataKeys.PROJECT_CONTEXT),
            SettingsConfigurable.KODE_BEAGLE_SETTINGS);
}

From source file:com.intellij.analysis.BaseAnalysisAction.java

License:Apache License

@Nullable
private AnalysisScope getInspectionScopeImpl(@NotNull DataContext dataContext) {
    //Possible scopes: file, directory, package, project, module.
    Project projectContext = PlatformDataKeys.PROJECT_CONTEXT.getData(dataContext);
    if (projectContext != null) {
        return new AnalysisScope(projectContext);
    }//ww  w  .  j  a va2 s.co  m

    final AnalysisScope analysisScope = AnalysisScopeUtil.KEY.getData(dataContext);
    if (analysisScope != null) {
        return analysisScope;
    }

    final PsiFile psiFile = CommonDataKeys.PSI_FILE.getData(dataContext);
    if (psiFile != null && psiFile.getManager().isInProject(psiFile)) {
        final VirtualFile file = psiFile.getVirtualFile();
        if (file != null && file.isValid() && file.getFileType() instanceof ArchiveFileType
                && acceptNonProjectDirectories()) {
            final VirtualFile jarRoot = ArchiveVfsUtil.getArchiveRootForLocalFile(file);
            if (jarRoot != null) {
                PsiDirectory psiDirectory = psiFile.getManager().findDirectory(jarRoot);
                if (psiDirectory != null) {
                    return new AnalysisScope(psiDirectory);
                }
            }
        }
        return new AnalysisScope(psiFile);
    }

    VirtualFile[] virtualFiles = CommonDataKeys.VIRTUAL_FILE_ARRAY.getData(dataContext);
    Project project = CommonDataKeys.PROJECT.getData(dataContext);
    if (virtualFiles != null && project != null) { //analyze on selection
        ProjectFileIndex fileIndex = ProjectRootManager.getInstance(project).getFileIndex();
        if (virtualFiles.length == 1) {
            PsiDirectory psiDirectory = PsiManager.getInstance(project).findDirectory(virtualFiles[0]);
            if (psiDirectory != null
                    && (acceptNonProjectDirectories() || psiDirectory.getManager().isInProject(psiDirectory))) {
                return new AnalysisScope(psiDirectory);
            }
        }
        Set<VirtualFile> files = new HashSet<VirtualFile>();
        for (VirtualFile vFile : virtualFiles) {
            if (fileIndex.isInContent(vFile)) {
                files.add(vFile);
            }
        }
        return new AnalysisScope(project, files);
    }

    Module moduleContext = LangDataKeys.MODULE_CONTEXT.getData(dataContext);
    if (moduleContext != null) {
        return new AnalysisScope(moduleContext);
    }

    Module[] modulesArray = LangDataKeys.MODULE_CONTEXT_ARRAY.getData(dataContext);
    if (modulesArray != null) {
        return new AnalysisScope(modulesArray);
    }
    return project == null ? null : new AnalysisScope(project);
}

From source file:com.intellij.codeInsight.actions.OptimizeImportsAction.java

License:Apache License

public static void actionPerformedImpl(final DataContext dataContext) {
    final Project project = CommonDataKeys.PROJECT.getData(dataContext);
    if (project == null) {
        return;//from w w w .  ja v  a2 s .  c  om
    }
    PsiDocumentManager.getInstance(project).commitAllDocuments();
    final Editor editor = BaseCodeInsightAction.getInjectedEditor(project,
            CommonDataKeys.EDITOR.getData(dataContext));

    final VirtualFile[] files = CommonDataKeys.VIRTUAL_FILE_ARRAY.getData(dataContext);

    PsiFile file = null;
    PsiDirectory dir;

    if (editor != null) {
        file = PsiDocumentManager.getInstance(project).getPsiFile(editor.getDocument());
        if (file == null)
            return;
        dir = file.getContainingDirectory();
    } else if (files != null && ReformatCodeAction.areFiles(files)) {
        final ReadonlyStatusHandler.OperationStatus operationStatus = ReadonlyStatusHandler.getInstance(project)
                .ensureFilesWritable(files);
        if (!operationStatus.hasReadonlyFiles()) {
            new OptimizeImportsProcessor(project, ReformatCodeAction.convertToPsiFiles(files, project), null)
                    .run();
        }
        return;
    } else {
        Project projectContext = PlatformDataKeys.PROJECT_CONTEXT.getData(dataContext);
        Module moduleContext = LangDataKeys.MODULE_CONTEXT.getData(dataContext);

        if (projectContext != null || moduleContext != null) {
            final String text;
            if (moduleContext != null) {
                text = CodeInsightBundle.message("process.scope.module", moduleContext.getName());
            } else {
                text = CodeInsightBundle.message("process.scope.project", projectContext.getPresentableUrl());
            }
            LayoutProjectCodeDialog dialog = new LayoutProjectCodeDialog(project, null,
                    CodeInsightBundle.message("process.optimize.imports"), text, false);
            dialog.show();
            if (!dialog.isOK())
                return;
            if (moduleContext != null) {
                new OptimizeImportsProcessor(project, moduleContext).run();
            } else {
                new OptimizeImportsProcessor(projectContext).run();
            }
            return;
        }

        PsiElement element = CommonDataKeys.PSI_ELEMENT.getData(dataContext);
        if (element == null)
            return;
        if (element instanceof PsiDirectoryContainer) {
            dir = ((PsiDirectoryContainer) element).getDirectories()[0];
        } else if (element instanceof PsiDirectory) {
            dir = (PsiDirectory) element;
        } else {
            file = element.getContainingFile();
            if (file == null)
                return;
            dir = file.getContainingDirectory();
        }
    }

    boolean processDirectory;
    boolean includeSubdirectories;

    if (ApplicationManager.getApplication().isUnitTestMode()) {
        includeSubdirectories = processDirectory = false;
    } else if (!EditorSettingsExternalizable.getInstance().getOptions().SHOW_OPIMIZE_IMPORTS_DIALOG
            && file != null) {
        includeSubdirectories = processDirectory = false;
    } else {
        final LayoutCodeDialog dialog = new LayoutCodeDialog(project,
                CodeInsightBundle.message("process.optimize.imports"), file, dir, null, HELP_ID);
        dialog.show();
        if (!dialog.isOK())
            return;
        EditorSettingsExternalizable.getInstance().getOptions().SHOW_OPIMIZE_IMPORTS_DIALOG = !dialog
                .isDoNotAskMe();
        ReformatCodeAction.updateShowDialogSetting(dialog, "\"Optimize Imports\" dialog disabled");
        processDirectory = dialog.isProcessDirectory();
        includeSubdirectories = dialog.isIncludeSubdirectories();
    }

    if (processDirectory) {
        new OptimizeImportsProcessor(project, dir, includeSubdirectories).run();
    } else {
        new OptimizeImportsProcessor(project, file).run();
    }
}

From source file:com.intellij.codeInsight.actions.OptimizeImportsAction.java

License:Apache License

@Override
public void update(AnActionEvent event) {
    if (!LanguageImportStatements.INSTANCE.hasAnyExtensions()) {
        event.getPresentation().setVisible(false);
        return;/*w w w . j av a 2s  .co  m*/
    }

    Presentation presentation = event.getPresentation();
    DataContext dataContext = event.getDataContext();
    Project project = CommonDataKeys.PROJECT.getData(dataContext);
    if (project == null) {
        presentation.setEnabled(false);
        return;
    }

    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)) {
            presentation.setEnabled(false);
            return;
        }
    } else if (files != null && ReformatCodeAction.areFiles(files)) {
        boolean anyHasOptimizeImports = false;
        for (VirtualFile virtualFile : files) {
            PsiFile file = PsiManager.getInstance(project).findFile(virtualFile);
            if (file == null) {
                presentation.setEnabled(false);
                return;
            }
            if (isOptimizeImportsAvailable(file)) {
                anyHasOptimizeImports = true;
            }
        }
        if (!anyHasOptimizeImports) {
            presentation.setEnabled(false);
            return;
        }
    } else if (files != null && files.length == 1) {
        // skip. Both directories and single files are supported.
    } else if (LangDataKeys.MODULE_CONTEXT.getData(dataContext) == null
            && PlatformDataKeys.PROJECT_CONTEXT.getData(dataContext) == null) {
        PsiElement element = CommonDataKeys.PSI_ELEMENT.getData(dataContext);
        if (element == null) {
            presentation.setEnabled(false);
            return;
        }

        if (!(element instanceof PsiDirectory)) {
            PsiFile file = element.getContainingFile();
            if (file == null || !isOptimizeImportsAvailable(file)) {
                presentation.setEnabled(false);
                return;
            }
        }
    }

    presentation.setEnabled(true);
}

From source file:com.intellij.codeInsight.actions.ReformatCodeAction.java

License:Apache License

@Override
public void actionPerformed(AnActionEvent event) {
    DataContext dataContext = event.getDataContext();
    final Project project = CommonDataKeys.PROJECT.getData(dataContext);
    if (project == null) {
        return;//from  w w  w .j a  v a2s. c o  m
    }
    PsiDocumentManager.getInstance(project).commitAllDocuments();
    final Editor editor = CommonDataKeys.EDITOR.getData(dataContext);
    final VirtualFile[] files = CommonDataKeys.VIRTUAL_FILE_ARRAY.getData(dataContext);
    if (files == null) {
        return;
    }

    PsiFile file = null;
    final PsiDirectory dir;
    boolean hasSelection = false;

    if (editor != null) {
        file = PsiDocumentManager.getInstance(project).getPsiFile(editor.getDocument());
        if (file == null)
            return;
        dir = file.getContainingDirectory();
        hasSelection = editor.getSelectionModel().hasSelection();
    } else if (areFiles(files)) {
        final ReadonlyStatusHandler.OperationStatus operationStatus = ReadonlyStatusHandler.getInstance(project)
                .ensureFilesWritable(files);
        if (!operationStatus.hasReadonlyFiles()) {
            ReformatFilesOptions selectedFlags = getReformatFilesOptions(project, files);
            if (selectedFlags == null)
                return;

            final boolean processOnlyChangedText = selectedFlags.isProcessOnlyChangedText();
            final boolean shouldOptimizeImports = selectedFlags.isOptimizeImports()
                    && !DumbService.getInstance(project).isDumb();

            AbstractLayoutCodeProcessor processor = new ReformatCodeProcessor(project,
                    convertToPsiFiles(files, project), null, processOnlyChangedText);
            if (shouldOptimizeImports) {
                processor = new OptimizeImportsProcessor(processor);
            }
            if (selectedFlags.isRearrangeEntries()) {
                processor = new RearrangeCodeProcessor(processor, null);
            }

            processor.run();
        }
        return;
    } else {
        Project projectContext = PlatformDataKeys.PROJECT_CONTEXT.getData(dataContext);
        Module moduleContext = LangDataKeys.MODULE_CONTEXT.getData(dataContext);

        if (projectContext != null || moduleContext != null) {
            ReformatFilesOptions selectedFlags = getLayoutProjectOptions(project, moduleContext); // module menu - only 2 options available
            if (selectedFlags != null) {
                reformatModule(project, moduleContext, selectedFlags);
            }
            return;
        }

        PsiElement element = CommonDataKeys.PSI_ELEMENT.getData(dataContext);
        if (element == null)
            return;
        if (element instanceof PsiDirectoryContainer) {
            dir = ((PsiDirectoryContainer) element).getDirectories()[0];
        } else if (element instanceof PsiDirectory) {
            dir = (PsiDirectory) element;
        } else {
            file = element.getContainingFile();
            if (file == null)
                return;
            dir = file.getContainingDirectory();
        }
    }

    boolean optimizeImports = ReformatFilesDialog.isOptmizeImportsOptionOn();
    boolean processWholeFile = false;
    boolean processChangedTextOnly = PropertiesComponent.getInstance()
            .getBoolean(LayoutCodeConstants.PROCESS_CHANGED_TEXT_KEY, false);
    boolean rearrangeEntries = getLastSavedRearrangeCbState(project, file);

    final boolean showDialog = EditorSettingsExternalizable.getInstance().getOptions().SHOW_REFORMAT_DIALOG;

    if (showDialog || (file == null && dir != null)) {
        LayoutCodeOptions selectedFlags = getLayoutCodeOptions(project, file, dir, hasSelection);
        if (selectedFlags == null)
            return;

        optimizeImports = selectedFlags.isOptimizeImports();
        rearrangeEntries = selectedFlags.isRearrangeEntries();
        processWholeFile = selectedFlags.isProcessWholeFile();
        processChangedTextOnly = selectedFlags.isProcessOnlyChangedText();

        if (selectedFlags.isProcessDirectory()) {
            AbstractLayoutCodeProcessor processor = new ReformatCodeProcessor(project, dir,
                    selectedFlags.isIncludeSubdirectories(), processChangedTextOnly);
            if (optimizeImports) {
                processor = new OptimizeImportsProcessor(processor);
            }
            if (selectedFlags.isRearrangeEntries()) {
                processor = new RearrangeCodeProcessor(processor, null);
            }

            processor.run();
            return;
        }
    }

    final TextRange range;
    if (!processWholeFile && editor != null && editor.getSelectionModel().hasSelection()) {
        range = TextRange.create(editor.getSelectionModel().getSelectionStart(),
                editor.getSelectionModel().getSelectionEnd());
    } else {
        range = null;
    }

    if (optimizeImports && range == null) {
        if (file != null || dir == null) {
            new OptimizeImportsProcessor(new ReformatCodeProcessor(project, file, null, processChangedTextOnly))
                    .run();
        } else {
            new OptimizeImportsProcessor(new ReformatCodeProcessor(project, dir, true, processChangedTextOnly))
                    .run();
        }
    } else {
        new ReformatCodeProcessor(project, file, range, processChangedTextOnly).run();
    }

    if (rearrangeEntries && file != null && editor != null) {
        final ArrangementEngine engine = ServiceManager.getService(project, ArrangementEngine.class);
        try {
            final PsiFile finalFile = file;
            SelectionModel selectionModel = editor.getSelectionModel();
            final TextRange rangeToUse = selectionModel.hasSelection()
                    ? TextRange.create(selectionModel.getSelectionStart(), selectionModel.getSelectionEnd())
                    : TextRange.create(0, editor.getDocument().getTextLength());
            CommandProcessor.getInstance().executeCommand(project, new Runnable() {
                @Override
                public void run() {
                    engine.arrange(finalFile, Collections.singleton(rangeToUse));
                }
            }, getTemplatePresentation().getText(), null);
        } finally {
            PsiDocumentManager.getInstance(project).commitDocument(editor.getDocument());
        }
    }
}

From source file:com.intellij.codeInsight.actions.ReformatCodeAction.java

License:Apache License

@Override
public void update(AnActionEvent event) {
    Presentation presentation = event.getPresentation();
    DataContext dataContext = event.getDataContext();
    Project project = CommonDataKeys.PROJECT.getData(dataContext);
    if (project == null) {
        presentation.setEnabled(false);//  www .  j av a 2s .  c  o  m
        return;
    }

    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) {
            presentation.setEnabled(false);
            return;
        }

        if (LanguageFormatting.INSTANCE.forContext(file) != null) {
            presentation.setEnabled(true);
            return;
        }
    } else if (files != null && areFiles(files)) {
        boolean anyFormatters = false;
        for (VirtualFile virtualFile : files) {
            if (virtualFile.isDirectory()) {
                presentation.setEnabled(false);
                return;
            }
            final PsiFile psiFile = PsiManager.getInstance(project).findFile(virtualFile);
            if (psiFile == null) {
                presentation.setEnabled(false);
                return;
            }
            final FormattingModelBuilder builder = LanguageFormatting.INSTANCE.forContext(psiFile);
            if (builder != null) {
                anyFormatters = true;
            }
        }
        if (!anyFormatters) {
            presentation.setEnabled(false);
            return;
        }
    } else if (files != null && files.length == 1) {
        // skip. Both directories and single files are supported.
    } else if (LangDataKeys.MODULE_CONTEXT.getData(dataContext) == null
            && PlatformDataKeys.PROJECT_CONTEXT.getData(dataContext) == null) {
        PsiElement element = CommonDataKeys.PSI_ELEMENT.getData(dataContext);
        if (element == null) {
            presentation.setEnabled(false);
            return;
        }
        if (!(element instanceof PsiDirectory)) {
            PsiFile file = element.getContainingFile();
            if (file == null || LanguageFormatting.INSTANCE.forContext(file) == null) {
                presentation.setEnabled(false);
                return;
            }
        }
    }
    presentation.setEnabled(true);
}

From source file:com.intellij.cyclicDependencies.actions.CyclicDependenciesAction.java

License:Apache License

@Nullable
private static AnalysisScope getInspectionScopeImpl(DataContext dataContext) {
    //Possible scopes: package, project, module.
    Project projectContext = PlatformDataKeys.PROJECT_CONTEXT.getData(dataContext);
    if (projectContext != null) {
        return null;
    }/*from  w  w w .  ja v a 2  s. co  m*/

    Module moduleContext = LangDataKeys.MODULE_CONTEXT.getData(dataContext);
    if (moduleContext != null) {
        return null;
    }

    Module[] modulesArray = LangDataKeys.MODULE_CONTEXT_ARRAY.getData(dataContext);
    if (modulesArray != null) {
        return new AnalysisScope(modulesArray);
    }

    PsiElement psiTarget = LangDataKeys.PSI_ELEMENT.getData(dataContext);
    if (psiTarget instanceof PsiDirectory) {
        PsiDirectory psiDirectory = (PsiDirectory) psiTarget;
        if (!psiDirectory.getManager().isInProject(psiDirectory))
            return null;
        return new AnalysisScope(psiDirectory);
    } else if (psiTarget instanceof PsiJavaPackage) {
        PsiJavaPackage pack = (PsiJavaPackage) psiTarget;
        PsiDirectory[] dirs = pack.getDirectories(GlobalSearchScope.projectScope(pack.getProject()));
        if (dirs.length == 0)
            return null;
        return new JavaAnalysisScope(pack, LangDataKeys.MODULE.getData(dataContext));
    }

    return null;
}

From source file:com.intellij.ide.impl.dataRules.VirtualFileArrayRule.java

License:Apache License

@Override
public Object getData(final DataProvider dataProvider) {
    // Try to detect multiselection.

    Project project = PlatformDataKeys.PROJECT_CONTEXT.getData(dataProvider);
    if (project != null && !project.isDisposed()) {
        return ProjectRootManager.getInstance(project).getContentRoots();
    }/*from  w  ww  .  j  a va 2  s . c  o m*/

    Module[] selectedModules = LangDataKeys.MODULE_CONTEXT_ARRAY.getData(dataProvider);
    if (selectedModules != null && selectedModules.length > 0) {
        return getFilesFromModules(selectedModules);
    }

    Module selectedModule = LangDataKeys.MODULE_CONTEXT.getData(dataProvider);
    if (selectedModule != null && !selectedModule.isDisposed()) {
        return ModuleRootManager.getInstance(selectedModule).getContentRoots();
    }

    PsiElement[] psiElements = LangDataKeys.PSI_ELEMENT_ARRAY.getData(dataProvider);
    if (psiElements != null && psiElements.length != 0) {
        return getFilesFromPsiElements(psiElements);
    }

    // VirtualFile -> VirtualFile[]
    VirtualFile vFile = PlatformDataKeys.VIRTUAL_FILE.getData(dataProvider);
    if (vFile != null) {
        return new VirtualFile[] { vFile };
    }

    //

    PsiFile psiFile = LangDataKeys.PSI_FILE.getData(dataProvider);
    if (psiFile != null && psiFile.getVirtualFile() != null) {
        return new VirtualFile[] { psiFile.getVirtualFile() };
    }

    PsiElement elem = LangDataKeys.PSI_ELEMENT.getData(dataProvider);
    if (elem != null) {
        return getFilesFromPsiElement(elem);
    }

    Usage[] usages = UsageView.USAGES_KEY.getData(dataProvider);
    UsageTarget[] usageTargets = UsageView.USAGE_TARGETS_KEY.getData(dataProvider);
    if (usages != null || usageTargets != null) {
        return UsageDataUtil.provideVirtualFileArray(usages, usageTargets);
    }

    return null;
}

From source file:com.maddyhome.idea.copyright.actions.UpdateCopyrightAction.java

License:Apache License

private static boolean isEnabled(AnActionEvent event) {
    final DataContext context = event.getDataContext();
    final Project project = CommonDataKeys.PROJECT.getData(context);
    if (project == null) {
        return false;
    }//from  w ww . ja v  a  2 s .com

    if (!CopyrightManager.getInstance(project).hasAnyCopyrights()) {
        return false;
    }
    final VirtualFile[] files = CommonDataKeys.VIRTUAL_FILE_ARRAY.getData(context);
    final Editor editor = CommonDataKeys.EDITOR.getData(context);
    if (editor != null) {
        final PsiFile file = PsiDocumentManager.getInstance(project).getPsiFile(editor.getDocument());
        if (file == null || !CopyrightUpdaters.hasExtension(file)) {
            return false;
        }
    } else if (files != null && FileUtil.areFiles(files)) {
        boolean copyrightEnabled = false;
        for (VirtualFile vfile : files) {
            if (CopyrightUpdaters.hasExtension(vfile)) {
                copyrightEnabled = true;
                break;
            }
        }
        if (!copyrightEnabled) {
            return false;
        }

    } else if ((files == null || files.length != 1) && LangDataKeys.MODULE_CONTEXT.getData(context) == null
            && LangDataKeys.MODULE_CONTEXT_ARRAY.getData(context) == null
            && PlatformDataKeys.PROJECT_CONTEXT.getData(context) == null) {
        final PsiElement[] elems = LangDataKeys.PSI_ELEMENT_ARRAY.getData(context);
        if (elems != null) {
            boolean copyrightEnabled = false;
            for (PsiElement elem : elems) {
                if (!(elem instanceof PsiDirectory)) {
                    final PsiFile file = elem.getContainingFile();
                    if (file == null || !CopyrightUpdaters.hasExtension(file.getVirtualFile())) {
                        copyrightEnabled = true;
                        break;
                    }
                }
            }
            if (!copyrightEnabled) {
                return false;
            }
        }
    }
    return true;
}

From source file:krasa.formatter.action.OptimizeImportsAction.java

License:Apache License

public static void actionPerformedImpl(final DataContext dataContext) {
    final Project project = PlatformDataKeys.PROJECT.getData(dataContext);
    if (project == null) {
        return;/*from   w  w w  . java  2 s  .c om*/
    }
    PsiDocumentManager.getInstance(project).commitAllDocuments();
    final Editor editor = BaseCodeInsightAction.getInjectedEditor(project,
            PlatformDataKeys.EDITOR.getData(dataContext));

    final VirtualFile[] files = PlatformDataKeys.VIRTUAL_FILE_ARRAY.getData(dataContext);

    PsiFile file = null;
    PsiDirectory dir;

    if (editor != null) {
        file = PsiDocumentManager.getInstance(project).getPsiFile(editor.getDocument());
        if (file == null)
            return;
        dir = file.getContainingDirectory();
    } else if (files != null && ReformatCodeAction.areFiles(files)) {
        final ReadonlyStatusHandler.OperationStatus operationStatus = ReadonlyStatusHandler.getInstance(project)
                .ensureFilesWritable(files);
        if (!operationStatus.hasReadonlyFiles()) {
            new OptimizeImportsProcessor(project, ReformatCodeAction.convertToPsiFiles(files, project), null)
                    .run();
        }
        return;
    } else {
        Project projectContext = PlatformDataKeys.PROJECT_CONTEXT.getData(dataContext);
        Module moduleContext = LangDataKeys.MODULE_CONTEXT.getData(dataContext);

        if (projectContext != null || moduleContext != null) {
            final String text;
            if (moduleContext != null) {
                text = CodeInsightBundle.message("process.scope.module", moduleContext.getName());
            } else {
                text = CodeInsightBundle.message("process.scope.project", projectContext.getPresentableUrl());
            }
            LayoutProjectCodeDialog dialog = new LayoutProjectCodeDialog(project, null,
                    CodeInsightBundle.message("process.optimize.imports"), text, false);
            dialog.show();
            if (!dialog.isOK())
                return;
            if (moduleContext != null) {
                new OptimizeImportsProcessor(project, moduleContext).run();
            } else {
                new OptimizeImportsProcessor(projectContext).run();
            }
            return;
        }

        PsiElement element = LangDataKeys.PSI_ELEMENT.getData(dataContext);
        if (element == null)
            return;
        if (element instanceof PsiDirectoryContainer) {
            dir = ((PsiDirectoryContainer) element).getDirectories()[0];
        } else if (element instanceof PsiDirectory) {
            dir = (PsiDirectory) element;
        } else {
            file = element.getContainingFile();
            if (file == null)
                return;
            dir = file.getContainingDirectory();
        }
    }

    boolean processDirectory;
    boolean includeSubdirectories;

    if (ApplicationManager.getApplication().isUnitTestMode()) {
        includeSubdirectories = processDirectory = false;
    } else if (!EditorSettingsExternalizable.getInstance().getOptions().SHOW_OPIMIZE_IMPORTS_DIALOG
            && file != null) {
        includeSubdirectories = processDirectory = false;
    } else {
        // final LayoutCodeDialog dialog = new LayoutCodeDialog(project,
        // CodeInsightBundle.message("process.optimize.imports"), file, dir, null, HELP_ID);
        // dialog.show();
        // if (!dialog.isOK()) return;
        // // EditorSettingsExternalizable.getInstance().getOptions().SHOW_OPIMIZE_IMPORTS_DIALOG =
        // !dialog.isDoNotAskMe();
        // EditorSettingsExternalizable.getInstance().getOptions().SHOW_OPIMIZE_IMPORTS_DIALOG = false;
        // ReformatCodeAction.updateShowDialogSetting(dialog, "\"Optimize Imports\" dialog disabled");
        // processDirectory = dialog.isProcessDirectory();
        // includeSubdirectories = dialog.isIncludeSubdirectories();
        processDirectory = file == null;
        includeSubdirectories = true;
    }

    if (processDirectory) {
        new OptimizeImportsProcessor(project, dir, includeSubdirectories).run();
    } else {
        new OptimizeImportsProcessor(project, file).run();
    }
}