Refactoring: move application utility methods from refactoring utility to common place

This commit is contained in:
Nikolay Krasko
2014-09-27 22:29:18 +04:00
parent 89f0c8dc87
commit b79b7554ff
18 changed files with 52 additions and 48 deletions
@@ -19,6 +19,8 @@ package org.jetbrains.jet.plugin.util.application
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.diagnostic.Logger
import com.intellij.openapi.util.ShutDownTracker
import com.intellij.openapi.project.Project
import com.intellij.openapi.command.CommandProcessor
public fun warnTimeConsuming(logger: Logger) {
val application = ApplicationManager.getApplication()!!
@@ -33,3 +35,21 @@ public fun warnTimeConsuming(logger: Logger) {
logger.warn("This operation is time consuming and must not be called on EDT.")
Throwable().printStackTrace()
}
public fun runReadAction<T: Any>(action: () -> T?): T? {
return ApplicationManager.getApplication()?.runReadAction<T>(action)
}
public fun runWriteAction<T: Any>(action: () -> T?): T? {
return ApplicationManager.getApplication()?.runWriteAction<T>(action)
}
public fun Project.executeWriteCommand(name: String, command: () -> Unit) {
CommandProcessor.getInstance().executeCommand(this, { runWriteAction(command) }, name, null)
}
public fun <T: Any> Project.executeWriteCommand(name: String, command: () -> T): T {
var result: T? = null
CommandProcessor.getInstance().executeCommand(this, { result = runWriteAction(command) }, name, null)
return result!!
}