Refactoring: move application utility methods from refactoring utility to common place
This commit is contained in:
@@ -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!!
|
||||
}
|
||||
@@ -41,7 +41,7 @@ import org.jetbrains.jet.lang.psi.JetExpression
|
||||
import org.jetbrains.jet.plugin.completion.ExpectedInfos
|
||||
import org.jetbrains.jet.lang.psi.JetFile
|
||||
import org.jetbrains.jet.plugin.caches.resolve.getLazyResolveSession
|
||||
import org.jetbrains.jet.plugin.refactoring.runWriteAction
|
||||
import org.jetbrains.jet.plugin.util.application.runWriteAction
|
||||
import org.jetbrains.jet.plugin.refactoring.EmptyValidator
|
||||
|
||||
fun insertLambdaTemplate(context: InsertionContext, placeholderRange: TextRange, lambdaType: JetType) {
|
||||
|
||||
@@ -39,7 +39,7 @@ import org.jetbrains.jet.plugin.codeInsight.CodeInsightUtils
|
||||
import com.intellij.psi.PsiDocumentManager
|
||||
import org.jetbrains.jet.lang.resolve.calls.callUtil.getResolvedCall
|
||||
import org.jetbrains.jet.lang.resolve.DescriptorToSourceUtils
|
||||
import org.jetbrains.jet.plugin.refactoring.runReadAction
|
||||
import org.jetbrains.jet.plugin.util.application.runReadAction
|
||||
|
||||
public class KotlinSmartStepIntoHandler : JvmSmartStepIntoHandler() {
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ import org.jetbrains.jet.lang.resolve.BindingContext
|
||||
import com.sun.jdi.VirtualMachine
|
||||
import org.jetbrains.jet.codegen.AsmUtil
|
||||
import com.sun.jdi.InvalidStackFrameException
|
||||
import org.jetbrains.jet.plugin.refactoring.runReadAction
|
||||
import org.jetbrains.jet.plugin.util.application.runReadAction
|
||||
import org.jetbrains.jet.lang.psi.analysisContext
|
||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor
|
||||
import org.jetbrains.jet.lang.resolve.java.JvmClassName
|
||||
@@ -396,7 +396,8 @@ fun Type.getClassDescriptor(project: Project): ClassDescriptor? {
|
||||
|
||||
return runReadAction {
|
||||
val classes = JavaPsiFacade.getInstance(project).findClasses(jvmName.asString(), GlobalSearchScope.allScope(project))
|
||||
if (classes.isEmpty()) null else {
|
||||
if (classes.isEmpty()) null
|
||||
else {
|
||||
val clazz = classes.first()
|
||||
JavaResolveExtension.getResolver(project, clazz).resolveClass(JavaClassImpl(clazz))
|
||||
}
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@ import org.jetbrains.jet.plugin.refactoring.extractFunction.AnalysisResult.Statu
|
||||
import com.intellij.debugger.engine.evaluation.EvaluateExceptionUtil
|
||||
import org.jetbrains.jet.plugin.refactoring.extractFunction.validate
|
||||
import org.jetbrains.jet.plugin.refactoring.extractFunction.ExtractionOptions
|
||||
import org.jetbrains.jet.plugin.refactoring.runReadAction
|
||||
import org.jetbrains.jet.plugin.util.application.runReadAction
|
||||
import com.intellij.psi.PsiManager
|
||||
import com.intellij.psi.impl.PsiModificationTrackerImpl
|
||||
import org.jetbrains.jet.lang.psi.*
|
||||
|
||||
+3
-3
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2013 JetBrains s.r.o.
|
||||
* Copyright 2010-2014 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -36,7 +36,7 @@ import org.jetbrains.jet.plugin.findUsages.toSearchTarget
|
||||
import org.jetbrains.jet.plugin.findUsages.toClassHelper
|
||||
import org.jetbrains.jet.plugin.findUsages.toClassDeclarationsHelper
|
||||
import org.jetbrains.jet.plugin.search.usagesSearch.search
|
||||
import org.jetbrains.jet.plugin.refactoring.runReadAction
|
||||
import org.jetbrains.jet.plugin.util.application.runReadAction
|
||||
|
||||
public class KotlinFindClassUsagesHandler(
|
||||
jetClass: JetClassOrObject,
|
||||
@@ -80,7 +80,7 @@ public class KotlinFindClassUsagesHandler(
|
||||
val classUsages = kotlinOptions.toClassHelper().newRequest(target).search()
|
||||
val declarationUsages = kotlinOptions.toClassDeclarationsHelper().newRequest(target).search()
|
||||
|
||||
(classUsages + declarationUsages).all { ref -> KotlinFindUsagesHandler.processUsage(processor, ref)} && processInheritors()
|
||||
(classUsages + declarationUsages).all { ref -> KotlinFindUsagesHandler.processUsage(processor, ref) } && processInheritors()
|
||||
}!!
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2013 JetBrains s.r.o.
|
||||
* Copyright 2010-2014 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -28,7 +28,7 @@ import org.jetbrains.jet.plugin.findUsages.dialogs.KotlinTypeParameterFindUsages
|
||||
import org.jetbrains.jet.plugin.search.usagesSearch.DefaultSearchHelper
|
||||
import org.jetbrains.jet.plugin.findUsages.toSearchTarget
|
||||
import org.jetbrains.jet.plugin.search.usagesSearch.search
|
||||
import org.jetbrains.jet.plugin.refactoring.runReadAction
|
||||
import org.jetbrains.jet.plugin.util.application.runReadAction
|
||||
|
||||
public class KotlinTypeParameterFindUsagesHandler(
|
||||
element: JetNamedDeclaration,
|
||||
@@ -46,7 +46,7 @@ public class KotlinTypeParameterFindUsagesHandler(
|
||||
return runReadAction {
|
||||
val target = options.toSearchTarget(element as JetNamedDeclaration, true)
|
||||
val request = DefaultSearchHelper<JetNamedDeclaration>().newRequest(target)
|
||||
request.search().all {ref -> KotlinFindUsagesHandler.processUsage(processor, ref)}
|
||||
request.search().all { ref -> KotlinFindUsagesHandler.processUsage(processor, ref) }
|
||||
}!!
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -51,13 +51,13 @@ import org.jetbrains.jet.lang.resolve.DescriptorToSourceUtils
|
||||
import org.jetbrains.jet.plugin.refactoring.EmptyValidator
|
||||
import org.jetbrains.jet.plugin.refactoring.CollectingValidator
|
||||
import org.jetbrains.jet.plugin.util.isUnit
|
||||
import org.jetbrains.jet.plugin.refactoring.runWriteAction
|
||||
import com.intellij.util.ArrayUtil
|
||||
import com.intellij.psi.PsiWhiteSpace
|
||||
import org.jetbrains.jet.plugin.refactoring.isMultiLine
|
||||
import org.jetbrains.jet.plugin.refactoring.getLineCount
|
||||
import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.jet.lexer.JetTokens
|
||||
import org.jetbrains.jet.plugin.util.application.runWriteAction
|
||||
|
||||
private val TYPE_PARAMETER_LIST_VARIABLE_NAME = "typeParameterList"
|
||||
private val TEMPLATE_FROM_USAGE_FUNCTION_BODY = "New Kotlin Function Body.kt"
|
||||
@@ -128,7 +128,7 @@ class FunctionBuilder(val config: FunctionBuilderConfiguration) {
|
||||
return typeCandidates.getOrPut(typeInfo) {
|
||||
val types = typeInfo.getPossibleTypes(this).reverse()
|
||||
|
||||
val newTypes = LinkedHashSet<JetType>(types)
|
||||
val newTypes = LinkedHashSet(types)
|
||||
for (substitution in substitutions) {
|
||||
// each substitution can be applied or not, so we offer all options
|
||||
val toAdd = newTypes.map { theType -> theType.substitute(substitution, typeInfo.variance) }
|
||||
|
||||
+2
-2
@@ -34,7 +34,7 @@ import org.jetbrains.jet.lang.psi.JetElement
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import org.jetbrains.jet.lang.psi.psiUtil.getOutermostParentContainedIn
|
||||
import org.jetbrains.jet.plugin.refactoring.checkConflictsInteractively
|
||||
import org.jetbrains.jet.plugin.refactoring.executeWriteCommand
|
||||
import org.jetbrains.jet.plugin.util.application.executeWriteCommand
|
||||
import org.jetbrains.jet.lang.psi.JetBlockExpression
|
||||
import kotlin.test.fail
|
||||
import org.jetbrains.jet.plugin.refactoring.extractFunction.AnalysisResult.Status
|
||||
@@ -241,4 +241,4 @@ fun selectElements(
|
||||
|
||||
editor.getScrollingModel().scrollToCaret(ScrollType.MAKE_VISIBLE)
|
||||
selectSingleExpression()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ import com.intellij.codeInsight.highlighting.HighlightManager
|
||||
import com.intellij.codeInsight.folding.CodeFoldingManager
|
||||
import com.intellij.ui.ReplacePromptDialog
|
||||
import com.intellij.find.FindManager
|
||||
import org.jetbrains.jet.plugin.refactoring.executeWriteCommand
|
||||
import org.jetbrains.jet.plugin.util.application.executeWriteCommand
|
||||
import com.intellij.refactoring.util.duplicates.MethodDuplicatesHandler
|
||||
import com.intellij.refactoring.RefactoringBundle
|
||||
|
||||
|
||||
@@ -67,6 +67,7 @@ import org.jetbrains.jet.lang.resolve.BindingContext
|
||||
import org.jetbrains.jet.lang.psi.psiUtil.getParentByType
|
||||
import org.jetbrains.jet.lang.psi.psiUtil.isAncestor
|
||||
import org.jetbrains.jet.plugin.caches.resolve.getLazyResolveSession
|
||||
import org.jetbrains.jet.plugin.util.application.runWriteAction
|
||||
import com.intellij.psi.PsiNamedElement
|
||||
import org.jetbrains.jet.plugin.project.AnalyzerFacadeWithCache
|
||||
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor
|
||||
@@ -218,24 +219,6 @@ public fun Project.checkConflictsInteractively(conflicts: MultiMap<PsiElement, S
|
||||
onAccept()
|
||||
}
|
||||
|
||||
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!!
|
||||
}
|
||||
|
||||
public fun <T, E: PsiElement> getPsiElementPopup(
|
||||
editor: Editor,
|
||||
elements: List<T>,
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2013 JetBrains s.r.o.
|
||||
* Copyright 2010-2014 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -25,7 +25,7 @@ import org.jetbrains.jet.lang.psi.JetNamedFunction
|
||||
import com.intellij.refactoring.rename.RenameJavaMethodProcessor
|
||||
import org.jetbrains.jet.asJava.KotlinLightMethod
|
||||
import kotlin.properties.Delegates
|
||||
import org.jetbrains.jet.plugin.refactoring.runReadAction
|
||||
import org.jetbrains.jet.plugin.util.application.runReadAction
|
||||
|
||||
public class RenameKotlinFunctionProcessor : RenameKotlinPsiProcessor() {
|
||||
private val javaMethodProcessorInstance by Delegates.lazy {
|
||||
|
||||
+1
-1
@@ -41,7 +41,7 @@ import org.jetbrains.jet.lang.descriptors.PropertyDescriptor
|
||||
import org.jetbrains.jet.asJava.namedUnwrappedElement
|
||||
import org.jetbrains.jet.lang.resolve.OverrideResolver
|
||||
import org.jetbrains.jet.lang.resolve.DescriptorToSourceUtils
|
||||
import org.jetbrains.jet.plugin.refactoring.runReadAction
|
||||
import org.jetbrains.jet.plugin.util.application.runReadAction
|
||||
|
||||
public class RenameKotlinPropertyProcessor : RenamePsiElementProcessor() {
|
||||
override fun canProcessElement(element: PsiElement): Boolean = element.namedUnwrappedElement is JetProperty
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2013 JetBrains s.r.o.
|
||||
* Copyright 2010-2014 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -47,7 +47,7 @@ import java.util.Collections
|
||||
import com.intellij.openapi.roots.FileIndexFacade
|
||||
import com.intellij.util.indexing.FileBasedIndex
|
||||
import com.intellij.psi.impl.cache.impl.id.IdIndex
|
||||
import org.jetbrains.jet.plugin.refactoring.runReadAction
|
||||
import org.jetbrains.jet.plugin.util.application.runReadAction
|
||||
import com.intellij.psi.search.TextOccurenceProcessor
|
||||
import org.jetbrains.jet.plugin.references.JetMultiDeclarationReference
|
||||
import com.intellij.psi.PsiManager
|
||||
@@ -142,7 +142,7 @@ public class KotlinPsiSearchHelper(private val project: Project): PsiSearchHelpe
|
||||
val entries = Collections.singletonList(IdIndexEntry(text, caseSensitively))
|
||||
val index = FileIndexFacade.getInstance(project)
|
||||
val checker: (Int?) -> Boolean = { (it!! and searchContext.toInt()) != 0 }
|
||||
return runReadAction{
|
||||
return runReadAction {
|
||||
FileBasedIndex.getInstance().processFilesContainingAllKeys(IdIndex.NAME, entries, scope, checker) { file ->
|
||||
!index.shouldBeFound(scope, file) || processor.process(file)
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ import com.intellij.debugger.DebuggerManagerEx
|
||||
import com.intellij.debugger.ui.breakpoints.LineBreakpoint
|
||||
import com.intellij.debugger.actions.MethodSmartStepTarget
|
||||
import com.intellij.debugger.engine.BasicStepMethodFilter
|
||||
import org.jetbrains.jet.plugin.refactoring.runReadAction
|
||||
import org.jetbrains.jet.plugin.util.application.runReadAction
|
||||
import org.jetbrains.jet.InTextDirectivesUtils.*
|
||||
import com.intellij.openapi.util.io.FileUtil
|
||||
import java.io.File
|
||||
|
||||
@@ -19,7 +19,7 @@ package org.jetbrains.jet.plugin.debugger
|
||||
import com.intellij.debugger.engine.DebugProcessImpl
|
||||
import com.intellij.debugger.engine.SuspendContextImpl
|
||||
import com.intellij.debugger.engine.MethodFilter
|
||||
import org.jetbrains.jet.plugin.refactoring.runReadAction
|
||||
import org.jetbrains.jet.plugin.util.application.runReadAction
|
||||
import com.intellij.debugger.impl.PositionUtil
|
||||
import com.intellij.execution.process.ProcessOutputTypes
|
||||
import com.intellij.openapi.roots.libraries.LibraryUtil
|
||||
@@ -46,7 +46,7 @@ abstract class KotlinDebuggerTestBase : KotlinDebuggerTestCase() {
|
||||
}
|
||||
|
||||
protected fun SuspendContextImpl.printContext() {
|
||||
runReadAction { (): Unit ->
|
||||
runReadAction {(): Unit ->
|
||||
if (this.getFrameProxy() == null) {
|
||||
return@runReadAction println("Context thread is null", ProcessOutputTypes.SYSTEM)
|
||||
}
|
||||
|
||||
@@ -58,9 +58,9 @@ import org.jetbrains.jet.plugin.refactoring.move.moveTopLevelDeclarations.MoveKo
|
||||
import org.jetbrains.jet.plugin.refactoring.move.moveTopLevelDeclarations.JetFileKotlinMoveTarget
|
||||
import org.jetbrains.jet.lang.psi.JetFile
|
||||
import org.jetbrains.jet.plugin.search.allScope
|
||||
import org.jetbrains.jet.plugin.refactoring.runWriteAction
|
||||
import org.jetbrains.jet.InTextDirectivesUtils
|
||||
import org.jetbrains.jet.testing.ConfigLibraryUtil
|
||||
import org.jetbrains.jet.plugin.util.application.runWriteAction
|
||||
|
||||
public abstract class AbstractJetMoveTest : MultiFileTestCase() {
|
||||
protected fun doTest(path: String) {
|
||||
@@ -93,7 +93,7 @@ public abstract class AbstractJetMoveTest : MultiFileTestCase() {
|
||||
doTest { rootDir, rootAfter ->
|
||||
val mainFile = rootDir.findFileByRelativePath(mainFilePath)!!
|
||||
val mainPsiFile = PsiManager.getInstance(getProject()!!).findFile(mainFile)!!
|
||||
val document = FileDocumentManager.getInstance()!!.getDocument(mainFile)!!
|
||||
val document = FileDocumentManager.getInstance().getDocument(mainFile)!!
|
||||
val editor = EditorFactory.getInstance()!!.createEditor(document, getProject()!!)!!
|
||||
|
||||
val caretOffset = extractCaretOffset(document)
|
||||
@@ -112,11 +112,11 @@ public abstract class AbstractJetMoveTest : MultiFileTestCase() {
|
||||
assert(!conflictFile.exists())
|
||||
}
|
||||
catch(e: ConflictsInTestsException) {
|
||||
JetTestUtils.assertEqualsToFile(conflictFile, e.getMessages().sort().makeString("\n"))
|
||||
JetTestUtils.assertEqualsToFile(conflictFile, e.getMessages().sort().joinToString("\n"))
|
||||
}
|
||||
finally {
|
||||
PsiDocumentManager.getInstance(getProject()!!).commitAllDocuments()
|
||||
FileDocumentManager.getInstance()?.saveAllDocuments()
|
||||
FileDocumentManager.getInstance().saveAllDocuments()
|
||||
|
||||
EditorFactory.getInstance()!!.releaseEditor(editor)
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ import com.intellij.openapi.module.Module
|
||||
import java.io.File
|
||||
import com.intellij.openapi.roots.ModuleRootModificationUtil
|
||||
import org.jetbrains.jet.plugin.search.allScope
|
||||
import org.jetbrains.jet.plugin.refactoring.runWriteAction
|
||||
import org.jetbrains.jet.plugin.util.application.runWriteAction
|
||||
|
||||
class RunConfigurationTest: CodeInsightTestCase() {
|
||||
fun getTestProject() = myProject!!
|
||||
|
||||
Reference in New Issue
Block a user