From ecd0e2ca704a2407fef5ebcd84a80e75fd76a194 Mon Sep 17 00:00:00 2001 From: Eugene Vigdorchik Date: Fri, 21 Jan 2005 20:47:28 +0300 Subject: [PATCH] (no message) --- .../refactoring/BaseRefactoringProcessor.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/source/com/intellij/refactoring/BaseRefactoringProcessor.java b/source/com/intellij/refactoring/BaseRefactoringProcessor.java index e03526bc414e..570378db8a0c 100644 --- a/source/com/intellij/refactoring/BaseRefactoringProcessor.java +++ b/source/com/intellij/refactoring/BaseRefactoringProcessor.java @@ -12,8 +12,11 @@ import com.intellij.openapi.util.EmptyRunnable; import com.intellij.openapi.util.Factory; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.wm.WindowManager; +import com.intellij.openapi.vfs.ReadonlyStatusHandler; +import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiFile; import com.intellij.refactoring.listeners.RefactoringListenerManager; import com.intellij.refactoring.listeners.impl.RefactoringListenerManagerImpl; import com.intellij.refactoring.listeners.impl.RefactoringTransaction; @@ -26,6 +29,7 @@ import com.intellij.usageView.UsageViewDescriptor; import com.intellij.usageView.UsageViewUtil; import com.intellij.usages.*; import com.intellij.util.Processor; +import com.intellij.util.containers.HashSet; import javax.swing.*; import java.lang.reflect.InvocationTargetException; @@ -146,12 +150,23 @@ public abstract class BaseRefactoringProcessor { }; UsageViewDescriptor descriptor = createUsageViewDescriptor(usages[0], findUsagesCommand); showUsageView(descriptor, isVariable(), isVariable()); + ensureFilesWritable(usages[0]); } else { final UsageInfo[] usages1 = usages[0]; + ensureFilesWritable(usages[0]); execute(usages1); } } + private void ensureFilesWritable(UsageInfo[] usages) { + Set files = new HashSet(); + for (int i = 0; i < usages.length; i++) { + final PsiFile file = usages[i].getElement().getContainingFile(); + files.add(file.getVirtualFile()); + } + ReadonlyStatusHandler.getInstance(myProject).ensureFilesWritable(files.toArray(new VirtualFile[files.size()])); + } + void execute(final UsageInfo[] usages) { CommandProcessor.getInstance().executeCommand( myProject, new Runnable() {