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
|
||||
|
||||
import com.intellij.openapi.actionSystem.ex.ActionUtil
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.editor.Editor
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.ui.MessageType
|
||||
import com.intellij.openapi.ui.popup.Balloon
|
||||
import com.intellij.openapi.ui.popup.JBPopupFactory
|
||||
import com.intellij.openapi.util.Computable
|
||||
import com.intellij.refactoring.BaseRefactoringProcessor
|
||||
import com.intellij.ui.awt.RelativePoint
|
||||
import org.jetbrains.kotlin.idea.refactoring.checkConflictsInteractively
|
||||
import org.jetbrains.kotlin.idea.refactoring.introduce.showErrorHint
|
||||
import org.jetbrains.kotlin.idea.util.ProgressIndicatorUtils
|
||||
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
|
||||
import javax.swing.event.HyperlinkEvent
|
||||
|
||||
@@ -59,9 +60,9 @@ class ExtractionEngine(
|
||||
val project = extractionData.project
|
||||
|
||||
val adjustExtractionData = helper.adjustExtractionData(extractionData)
|
||||
val analysisResult = ActionUtil.underModalProgress(project, "Analyze extraction data...") {
|
||||
val analysisResult = ProgressIndicatorUtils.underModalProgress(project, "Analyze extraction data...", Computable {
|
||||
adjustExtractionData.performAnalysis()
|
||||
}
|
||||
})
|
||||
|
||||
if (ApplicationManager.getApplication()!!.isUnitTestMode && analysisResult.status != AnalysisResult.Status.SUCCESS) {
|
||||
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.ProgressIndicator
|
||||
import com.intellij.openapi.progress.ProgressManager
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.util.Computable
|
||||
import com.intellij.util.ExceptionUtil
|
||||
import org.jetbrains.annotations.Nls
|
||||
import java.util.concurrent.CancellationException
|
||||
import java.util.concurrent.Future
|
||||
import java.util.concurrent.TimeUnit
|
||||
@@ -18,6 +21,13 @@ import java.util.concurrent.TimeoutException
|
||||
* Copied from [com.intellij.openapi.progress.util.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
|
||||
fun <T> awaitWithCheckCanceled(future: Future<T>) {
|
||||
val indicator =
|
||||
|
||||
@@ -8,6 +8,12 @@ package org.jetbrains.kotlin.idea.util
|
||||
import com.intellij.openapi.diagnostic.Logger
|
||||
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.TimeUnit
|
||||
import java.util.concurrent.TimeoutException
|
||||
@@ -15,6 +21,20 @@ import java.util.concurrent.TimeoutException
|
||||
object ProgressIndicatorUtils {
|
||||
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
|
||||
fun <T> awaitWithCheckCanceled(future: Future<T>) {
|
||||
while (true) {
|
||||
|
||||
@@ -5,9 +5,33 @@
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
fun <T> awaitWithCheckCanceled(future: Future<T>) =
|
||||
com.intellij.openapi.progress.util.BackgroundTaskUtil.awaitWithCheckCanceled(future)
|
||||
|
||||
Reference in New Issue
Block a user