Backport ActionUtil.underModalProgress to fix 191/192 compilation
Relates to #EA-143709
This commit is contained in:
+4
-3
@@ -16,17 +16,18 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea.refactoring.introduce.extractionEngine
|
package org.jetbrains.kotlin.idea.refactoring.introduce.extractionEngine
|
||||||
|
|
||||||
import com.intellij.openapi.actionSystem.ex.ActionUtil
|
|
||||||
import com.intellij.openapi.application.ApplicationManager
|
import com.intellij.openapi.application.ApplicationManager
|
||||||
import com.intellij.openapi.editor.Editor
|
import com.intellij.openapi.editor.Editor
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.ui.MessageType
|
import com.intellij.openapi.ui.MessageType
|
||||||
import com.intellij.openapi.ui.popup.Balloon
|
import com.intellij.openapi.ui.popup.Balloon
|
||||||
import com.intellij.openapi.ui.popup.JBPopupFactory
|
import com.intellij.openapi.ui.popup.JBPopupFactory
|
||||||
|
import com.intellij.openapi.util.Computable
|
||||||
import com.intellij.refactoring.BaseRefactoringProcessor
|
import com.intellij.refactoring.BaseRefactoringProcessor
|
||||||
import com.intellij.ui.awt.RelativePoint
|
import com.intellij.ui.awt.RelativePoint
|
||||||
import org.jetbrains.kotlin.idea.refactoring.checkConflictsInteractively
|
import org.jetbrains.kotlin.idea.refactoring.checkConflictsInteractively
|
||||||
import org.jetbrains.kotlin.idea.refactoring.introduce.showErrorHint
|
import org.jetbrains.kotlin.idea.refactoring.introduce.showErrorHint
|
||||||
|
import org.jetbrains.kotlin.idea.util.ProgressIndicatorUtils
|
||||||
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
|
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
|
||||||
import javax.swing.event.HyperlinkEvent
|
import javax.swing.event.HyperlinkEvent
|
||||||
|
|
||||||
@@ -59,9 +60,9 @@ class ExtractionEngine(
|
|||||||
val project = extractionData.project
|
val project = extractionData.project
|
||||||
|
|
||||||
val adjustExtractionData = helper.adjustExtractionData(extractionData)
|
val adjustExtractionData = helper.adjustExtractionData(extractionData)
|
||||||
val analysisResult = ActionUtil.underModalProgress(project, "Analyze extraction data...") {
|
val analysisResult = ProgressIndicatorUtils.underModalProgress(project, "Analyze extraction data...", Computable {
|
||||||
adjustExtractionData.performAnalysis()
|
adjustExtractionData.performAnalysis()
|
||||||
}
|
})
|
||||||
|
|
||||||
if (ApplicationManager.getApplication()!!.isUnitTestMode && analysisResult.status != AnalysisResult.Status.SUCCESS) {
|
if (ApplicationManager.getApplication()!!.isUnitTestMode && analysisResult.status != AnalysisResult.Status.SUCCESS) {
|
||||||
throw BaseRefactoringProcessor.ConflictsInTestsException(analysisResult.messages.map { it.renderMessage() })
|
throw BaseRefactoringProcessor.ConflictsInTestsException(analysisResult.messages.map { it.renderMessage() })
|
||||||
|
|||||||
@@ -8,7 +8,10 @@ package org.jetbrains.kotlin.idea.util
|
|||||||
import com.intellij.openapi.progress.ProcessCanceledException
|
import com.intellij.openapi.progress.ProcessCanceledException
|
||||||
import com.intellij.openapi.progress.ProgressIndicator
|
import com.intellij.openapi.progress.ProgressIndicator
|
||||||
import com.intellij.openapi.progress.ProgressManager
|
import com.intellij.openapi.progress.ProgressManager
|
||||||
|
import com.intellij.openapi.project.Project
|
||||||
|
import com.intellij.openapi.util.Computable
|
||||||
import com.intellij.util.ExceptionUtil
|
import com.intellij.util.ExceptionUtil
|
||||||
|
import org.jetbrains.annotations.Nls
|
||||||
import java.util.concurrent.CancellationException
|
import java.util.concurrent.CancellationException
|
||||||
import java.util.concurrent.Future
|
import java.util.concurrent.Future
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
@@ -18,6 +21,13 @@ import java.util.concurrent.TimeoutException
|
|||||||
* Copied from [com.intellij.openapi.progress.util.ProgressIndicatorUtils]
|
* Copied from [com.intellij.openapi.progress.util.ProgressIndicatorUtils]
|
||||||
*/
|
*/
|
||||||
object ProgressIndicatorUtils {
|
object ProgressIndicatorUtils {
|
||||||
|
@Throws(ProcessCanceledException::class)
|
||||||
|
fun <T> underModalProgress(
|
||||||
|
project: Project,
|
||||||
|
@Nls progressTitle: String,
|
||||||
|
computable: Computable<T>
|
||||||
|
): T = com.intellij.openapi.actionSystem.ex.ActionUtil.underModalProgress(project, progressTitle, computable)
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun <T> awaitWithCheckCanceled(future: Future<T>) {
|
fun <T> awaitWithCheckCanceled(future: Future<T>) {
|
||||||
val indicator =
|
val indicator =
|
||||||
|
|||||||
@@ -8,6 +8,12 @@ package org.jetbrains.kotlin.idea.util
|
|||||||
import com.intellij.openapi.diagnostic.Logger
|
import com.intellij.openapi.diagnostic.Logger
|
||||||
import com.intellij.openapi.progress.ProcessCanceledException
|
import com.intellij.openapi.progress.ProcessCanceledException
|
||||||
import com.intellij.openapi.progress.ProgressManager
|
import com.intellij.openapi.progress.ProgressManager
|
||||||
|
import com.intellij.openapi.project.DumbService
|
||||||
|
import com.intellij.openapi.project.Project
|
||||||
|
import com.intellij.openapi.util.Computable
|
||||||
|
import com.intellij.openapi.util.ThrowableComputable
|
||||||
|
import org.jetbrains.annotations.Nls
|
||||||
|
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
||||||
import java.util.concurrent.Future
|
import java.util.concurrent.Future
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
import java.util.concurrent.TimeoutException
|
import java.util.concurrent.TimeoutException
|
||||||
@@ -15,6 +21,20 @@ import java.util.concurrent.TimeoutException
|
|||||||
object ProgressIndicatorUtils {
|
object ProgressIndicatorUtils {
|
||||||
private val LOG = Logger.getInstance(ProgressIndicatorUtils::class.java)
|
private val LOG = Logger.getInstance(ProgressIndicatorUtils::class.java)
|
||||||
|
|
||||||
|
fun <T> underModalProgress(
|
||||||
|
project: Project,
|
||||||
|
@Nls progressTitle: String,
|
||||||
|
computable: Computable<T>
|
||||||
|
): T {
|
||||||
|
val dumbService = DumbService.getInstance(project)
|
||||||
|
val useAlternativeResolve = dumbService.isAlternativeResolveEnabled
|
||||||
|
val inReadAction =
|
||||||
|
ThrowableComputable<T, RuntimeException> { runReadAction { return@runReadAction computable.compute() } }
|
||||||
|
val process =
|
||||||
|
if (useAlternativeResolve) ThrowableComputable { dumbService.computeWithAlternativeResolveEnabled(inReadAction) } else inReadAction
|
||||||
|
return ProgressManager.getInstance().runProcessWithProgressSynchronously(process, progressTitle, true, project)
|
||||||
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun <T> awaitWithCheckCanceled(future: Future<T>) {
|
fun <T> awaitWithCheckCanceled(future: Future<T>) {
|
||||||
while (true) {
|
while (true) {
|
||||||
|
|||||||
@@ -5,9 +5,33 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea.util
|
package org.jetbrains.kotlin.idea.util
|
||||||
|
|
||||||
|
import com.intellij.openapi.progress.ProcessCanceledException
|
||||||
|
import com.intellij.openapi.progress.ProgressManager
|
||||||
|
import com.intellij.openapi.project.DumbService
|
||||||
|
import com.intellij.openapi.project.Project
|
||||||
|
import com.intellij.openapi.util.Computable
|
||||||
|
import com.intellij.openapi.util.ThrowableComputable
|
||||||
|
import org.jetbrains.annotations.Nls
|
||||||
|
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
||||||
import java.util.concurrent.Future
|
import java.util.concurrent.Future
|
||||||
|
|
||||||
object ProgressIndicatorUtils {
|
object ProgressIndicatorUtils {
|
||||||
|
fun <T> underModalProgress(
|
||||||
|
project: Project,
|
||||||
|
@Nls progressTitle: String,
|
||||||
|
computable: Computable<T>
|
||||||
|
): T {
|
||||||
|
val dumbService = DumbService.getInstance(project)
|
||||||
|
val useAlternativeResolve = dumbService.isAlternativeResolveEnabled
|
||||||
|
val inReadAction =
|
||||||
|
ThrowableComputable<T, RuntimeException> { runReadAction { return@runReadAction computable.compute() } }
|
||||||
|
val prioritizedRunnable =
|
||||||
|
ThrowableComputable<T, RuntimeException> { ProgressManager.getInstance().computePrioritized(inReadAction) }
|
||||||
|
val process =
|
||||||
|
if (useAlternativeResolve) ThrowableComputable { dumbService.computeWithAlternativeResolveEnabled(prioritizedRunnable) } else prioritizedRunnable
|
||||||
|
return ProgressManager.getInstance().runProcessWithProgressSynchronously(process, progressTitle, true, project)
|
||||||
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun <T> awaitWithCheckCanceled(future: Future<T>) =
|
fun <T> awaitWithCheckCanceled(future: Future<T>) =
|
||||||
com.intellij.openapi.progress.util.BackgroundTaskUtil.awaitWithCheckCanceled(future)
|
com.intellij.openapi.progress.util.BackgroundTaskUtil.awaitWithCheckCanceled(future)
|
||||||
|
|||||||
Reference in New Issue
Block a user