List of usage examples for com.intellij.openapi.vfs ReadonlyStatusHandler getInstance
public static ReadonlyStatusHandler getInstance(@NotNull Project project)
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(); }