diff --git a/java/java-impl-refactorings/src/com/intellij/refactoring/extractMethod/newImpl/MethodExtractor.kt b/java/java-impl-refactorings/src/com/intellij/refactoring/extractMethod/newImpl/MethodExtractor.kt index 91d4ee8a83ac..590e6d56e38d 100644 --- a/java/java-impl-refactorings/src/com/intellij/refactoring/extractMethod/newImpl/MethodExtractor.kt +++ b/java/java-impl-refactorings/src/com/intellij/refactoring/extractMethod/newImpl/MethodExtractor.kt @@ -9,7 +9,6 @@ import com.intellij.java.refactoring.JavaRefactoringBundle import com.intellij.openapi.application.EDT import com.intellij.openapi.application.WriteAction import com.intellij.openapi.application.readAction -import com.intellij.openapi.command.CommandProcessor import com.intellij.openapi.command.writeCommandAction import com.intellij.openapi.diagnostic.Logger import com.intellij.openapi.editor.Editor @@ -185,6 +184,7 @@ class MethodExtractor { private suspend fun runInplaceExtract(editor: Editor, extractor: DuplicatesMethodExtractor, methodNames: List){ val popupSettings = readAction { createInplaceSettingsPopup(extractor.extractOptions) } val suggestedNames = methodNames.takeIf { it.size > 1 }.orEmpty() + setupRestartOnSettingsChange(editor, popupSettings, extractor) val inplaceExtractor = readAction { InplaceMethodExtractor(editor, popupSettings, extractor) } inplaceExtractor.extractAndRunTemplate(suggestedNames) } @@ -223,10 +223,6 @@ class MethodExtractor { ) } - fun executeRefactoringCommand(project: Project, command: () -> Unit) { - CommandProcessor.getInstance().executeCommand(project, command, ExtractMethodHandler.getRefactoringName(), null) - } - fun extractMethod(extractOptions: ExtractOptions): ExtractedElements { val preparedElements = prepareRefactoringElements(extractOptions) return WriteAction.compute { diff --git a/java/java-impl-refactorings/src/com/intellij/refactoring/extractMethod/newImpl/inplace/InplaceMethodExtractor.kt b/java/java-impl-refactorings/src/com/intellij/refactoring/extractMethod/newImpl/inplace/InplaceMethodExtractor.kt index 73a7be750961..63464768faf5 100644 --- a/java/java-impl-refactorings/src/com/intellij/refactoring/extractMethod/newImpl/inplace/InplaceMethodExtractor.kt +++ b/java/java-impl-refactorings/src/com/intellij/refactoring/extractMethod/newImpl/inplace/InplaceMethodExtractor.kt @@ -148,7 +148,6 @@ internal class InplaceMethodExtractor( private fun afterTemplateStart(templateState: TemplateState) { setActiveExtractor(editor, this) - setupRestartOnSettingsChange(templateState, popupProvider, defaultExtractor) addInlaySettingsElement(templateState, popupProvider)?.also { inlay -> Disposer.register(templateState, inlay) } @@ -156,8 +155,8 @@ internal class InplaceMethodExtractor( } -private fun setupRestartOnSettingsChange(templateState: TemplateState, popupProvider: ExtractMethodPopupProvider, defaultExtractor: DuplicatesMethodExtractor){ - val project = templateState.editor.project ?: return +fun setupRestartOnSettingsChange(editor: Editor, popupProvider: ExtractMethodPopupProvider, defaultExtractor: DuplicatesMethodExtractor){ + val project = editor.project ?: return popupProvider.setChangeListener { val shouldAnnotate = popupProvider.annotate if (shouldAnnotate != null) { @@ -168,10 +167,12 @@ private fun setupRestartOnSettingsChange(templateState: TemplateState, popupProv JavaRefactoringSettings.getInstance().EXTRACT_STATIC_METHOD = makeStatic } ExtractMethodService.getInstance(project).scope.launch { + val templateState = TemplateManagerImpl.getTemplateState(editor) ?: return@launch MethodExtractor().restartInplace(templateState, defaultExtractor, popupProvider) } } popupProvider.setShowDialogAction { actionEvent -> + val templateState = TemplateManagerImpl.getTemplateState(editor) ?:return@setShowDialogAction val extractor = createExtractor(defaultExtractor, popupProvider) MethodExtractor().restartInDialog(templateState, extractor, actionEvent == null) }