Example usage for com.intellij.openapi.vfs ReadonlyStatusHandler getInstance

List of usage examples for com.intellij.openapi.vfs ReadonlyStatusHandler getInstance

Introduction

In this page you can find the example usage for com.intellij.openapi.vfs ReadonlyStatusHandler getInstance.

Prototype

public static ReadonlyStatusHandler getInstance(@NotNull Project project) 

Source Link

Usage

From source file:bazaar4idea.action.ResolveAction.java

License:Open Source License

private void addIfWritable(final VirtualFile fileOrDir, final Project project,
        final List<VirtualFile> fileList) {
    final ReadonlyStatusHandler.OperationStatus operationStatus = ReadonlyStatusHandler.getInstance(project)
            .ensureFilesWritable(fileOrDir);
    if (!operationStatus.hasReadonlyFiles()) {
        fileList.add(fileOrDir);/*from  ww w . j a v a  2 s.c o  m*/
    }
}

From source file:com.android.tools.idea.templates.recipe.DefaultRecipeExecutor.java

License:Apache License

public DefaultRecipeExecutor(@NotNull RenderingContext context, boolean dryRun) {
    myReferences = new FindReferencesRecipeExecutor(context);
    myContext = context;/*from w ww. j  a v  a2s  .c o m*/
    myIO = dryRun ? new DryRunRecipeIO() : new RecipeIO();
    myReadonlyStatusHandler = ReadonlyStatusHandler.getInstance(context.getProject());
}

From source file:com.deepsky.findUsages.workarounds.UsageView2Impl.java

License:Apache License

private boolean checkReadonlyUsages() {
    final Set<VirtualFile> readOnlyUsages = getReadOnlyUsagesFiles();

    return readOnlyUsages.isEmpty() || !ReadonlyStatusHandler.getInstance(myProject)
            .ensureFilesWritable(VfsUtil.toVirtualFileArray(readOnlyUsages)).hasReadonlyFiles();
}

From source file:com.eightbitmage.moonscript.editor.inspections.MoonFix.java

License:Apache License

private static boolean isQuickFixOnReadOnlyFile(PsiElement problemElement) {
    final PsiFile containingPsiFile = problemElement.getContainingFile();
    if (containingPsiFile == null) {
        return false;
    }//from w  ww .j  av a  2s .  c o  m
    final VirtualFile virtualFile = containingPsiFile.getVirtualFile();

    final Project project = problemElement.getProject();
    final ReadonlyStatusHandler handler = ReadonlyStatusHandler.getInstance(project);
    final ReadonlyStatusHandler.OperationStatus status;
    if (virtualFile != null) {
        status = handler.ensureFilesWritable(virtualFile);
        return status.hasReadonlyFiles();
    }

    return false;
}

From source file:com.eightbitmage.moonscript.intentions.utils.QuickfixUtil.java

License:Apache License

public static boolean ensureFileWritable(Project project, PsiFile file) {
    final VirtualFile virtualFile = file.getVirtualFile();
    final ReadonlyStatusHandler readonlyStatusHandler = ReadonlyStatusHandler.getInstance(project);
    final ReadonlyStatusHandler.OperationStatus operationStatus = readonlyStatusHandler
            .ensureFilesWritable(virtualFile);
    return !operationStatus.hasReadonlyFiles();
}

From source file:com.google.gct.idea.appengine.gradle.facet.AppEngineGradleFacet.java

License:Apache License

/**
 * Returns a model of this App Engine module's web.xml that has been checked for writability. i.e. it's no longer read-only.
 *//*from w  ww  .j av a  2s  . c  o  m*/
@NotNull
public WebApp getWebXmlForEdit() {
    XmlFile webXmlFile = getAppEngineXmlFile(WebAppFileDescription.WEB_XML_FILE_NAME);
    ReadonlyStatusHandler.getInstance(getModule().getProject())
            .ensureFilesWritable(webXmlFile.getVirtualFile());
    return getDomElement(webXmlFile, WebApp.class);
}

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;/* w  w w .j ava2 s .  c  o m*/
    }
    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.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;/*w w  w. ja v  a 2s. c  om*/
    }
    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.CodeInsightUtilBase.java

License:Apache License

@Override
public boolean preparePsiElementsForWrite(@NotNull Collection<? extends PsiElement> elements) {
    if (elements.isEmpty())
        return true;
    Set<VirtualFile> files = new THashSet<VirtualFile>();
    Project project = null;/*from   w ww.j a  v a2  s.c  o m*/
    for (PsiElement element : elements) {
        if (element == null)
            continue;
        PsiFile file = element.getContainingFile();
        if (file == null || !file.isPhysical())
            continue;
        project = file.getProject();
        VirtualFile virtualFile = file.getVirtualFile();
        if (virtualFile == null)
            continue;
        files.add(virtualFile);
    }
    if (!files.isEmpty()) {
        VirtualFile[] virtualFiles = VfsUtilCore.toVirtualFileArray(files);
        ReadonlyStatusHandler.OperationStatus status = ReadonlyStatusHandler.getInstance(project)
                .ensureFilesWritable(virtualFiles);
        return !status.hasReadonlyFiles();
    }
    return true;
}

From source file:com.intellij.codeInsight.CodeInsightUtilBase.java

License:Apache License

@Override
public boolean prepareVirtualFilesForWrite(@NotNull Project project, @NotNull Collection<VirtualFile> files) {
    ReadonlyStatusHandler.OperationStatus status = ReadonlyStatusHandler.getInstance(project)
            .ensureFilesWritable(files);
    return !status.hasReadonlyFiles();
}