mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
progress added (IDEA-45452 )
This commit is contained in:
+7
-12
@@ -20,7 +20,6 @@ import com.intellij.codeInsight.highlighting.HighlightManager;
|
||||
import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.actionSystem.LangDataKeys;
|
||||
import com.intellij.openapi.actionSystem.PlatformDataKeys;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.command.CommandProcessor;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
@@ -136,16 +135,12 @@ public class ExtractMethodHandler implements RefactoringActionHandler {
|
||||
public void run() {
|
||||
PostprocessReformattingAspect.getInstance(project).postponeFormattingInside(new Runnable() {
|
||||
public void run() {
|
||||
ApplicationManager.getApplication().runWriteAction(new Runnable() {
|
||||
public void run() {
|
||||
try {
|
||||
processor.doRefactoring();
|
||||
}
|
||||
catch (IncorrectOperationException e) {
|
||||
LOG.error(e);
|
||||
}
|
||||
}
|
||||
});
|
||||
try {
|
||||
processor.doRefactoring();
|
||||
}
|
||||
catch (IncorrectOperationException e) {
|
||||
LOG.error(e);
|
||||
}
|
||||
DuplicatesImpl.processDuplicates(processor, project, editor);
|
||||
}
|
||||
});
|
||||
@@ -230,4 +225,4 @@ public class ExtractMethodHandler implements RefactoringActionHandler {
|
||||
final OpenFileDescriptor fileDescriptor = new OpenFileDescriptor(project, virtualFile);
|
||||
return FileEditorManager.getInstance(project).openTextEditor(fileDescriptor, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+21
-6
@@ -34,6 +34,7 @@ import com.intellij.openapi.editor.ScrollType;
|
||||
import com.intellij.openapi.editor.colors.EditorColors;
|
||||
import com.intellij.openapi.editor.colors.EditorColorsManager;
|
||||
import com.intellij.openapi.editor.markup.TextAttributes;
|
||||
import com.intellij.openapi.progress.ProgressManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
@@ -542,15 +543,29 @@ public class ExtractMethodProcessor implements MatchProvider {
|
||||
LogicalPosition pos = new LogicalPosition(0, 0);
|
||||
myEditor.getCaretModel().moveToLogicalPosition(pos);
|
||||
|
||||
SearchScope processConflictsScope = myMethodVisibility.equals(PsiModifier.PRIVATE) ?
|
||||
final SearchScope processConflictsScope = myMethodVisibility.equals(PsiModifier.PRIVATE) ?
|
||||
new LocalSearchScope(myTargetClass) :
|
||||
GlobalSearchScope.projectScope(myProject);
|
||||
|
||||
final Map<PsiMethodCallExpression, PsiMethod> overloadsResolveMap =
|
||||
ExtractMethodUtil.encodeOverloadTargets(myTargetClass, processConflictsScope, myMethodName, myCodeFragmentMember);
|
||||
|
||||
doExtract();
|
||||
ExtractMethodUtil.decodeOverloadTargets(overloadsResolveMap, myExtractedMethod, myCodeFragmentMember);
|
||||
final Map<PsiMethodCallExpression, PsiMethod> overloadsResolveMap = new HashMap<PsiMethodCallExpression, PsiMethod>();
|
||||
final Runnable collectOverloads = new Runnable() {
|
||||
public void run() {
|
||||
overloadsResolveMap.putAll(ExtractMethodUtil.encodeOverloadTargets(myTargetClass, processConflictsScope, myMethodName, myCodeFragmentMember));
|
||||
}
|
||||
};
|
||||
final Runnable extract = new Runnable() {
|
||||
public void run() {
|
||||
doExtract();
|
||||
ExtractMethodUtil.decodeOverloadTargets(overloadsResolveMap, myExtractedMethod, myCodeFragmentMember);
|
||||
}
|
||||
};
|
||||
if (ApplicationManager.getApplication().isWriteAccessAllowed()) {
|
||||
collectOverloads.run();
|
||||
extract.run();
|
||||
} else {
|
||||
if (!ProgressManager.getInstance().runProcessWithProgressSynchronously(collectOverloads, "Collect overloads...", true, myProject)) return;
|
||||
ApplicationManager.getApplication().runWriteAction(extract);
|
||||
}
|
||||
|
||||
LogicalPosition pos1 = new LogicalPosition(line, col);
|
||||
myEditor.getCaretModel().moveToLogicalPosition(pos1);
|
||||
|
||||
Reference in New Issue
Block a user