J2K: do not invoke visitChildrenRecursively in Action.update
#KT-11160 Fixed
This commit is contained in:
@@ -35,9 +35,9 @@ import com.intellij.openapi.vfs.VirtualFileVisitor
|
|||||||
import com.intellij.psi.PsiJavaFile
|
import com.intellij.psi.PsiJavaFile
|
||||||
import com.intellij.psi.PsiManager
|
import com.intellij.psi.PsiManager
|
||||||
import org.jetbrains.kotlin.idea.KotlinFileType
|
import org.jetbrains.kotlin.idea.KotlinFileType
|
||||||
import org.jetbrains.kotlin.idea.refactoring.toPsiFile
|
|
||||||
import org.jetbrains.kotlin.idea.j2k.IdeaJavaToKotlinServices
|
import org.jetbrains.kotlin.idea.j2k.IdeaJavaToKotlinServices
|
||||||
import org.jetbrains.kotlin.idea.j2k.J2kPostProcessor
|
import org.jetbrains.kotlin.idea.j2k.J2kPostProcessor
|
||||||
|
import org.jetbrains.kotlin.idea.refactoring.toPsiFile
|
||||||
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
|
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
|
||||||
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
||||||
import org.jetbrains.kotlin.j2k.ConverterSettings
|
import org.jetbrains.kotlin.j2k.ConverterSettings
|
||||||
@@ -45,7 +45,7 @@ import org.jetbrains.kotlin.j2k.JavaToKotlinConverter
|
|||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import java.util.ArrayList
|
import java.util.*
|
||||||
|
|
||||||
class JavaToKotlinAction : AnAction() {
|
class JavaToKotlinAction : AnAction() {
|
||||||
companion object {
|
companion object {
|
||||||
@@ -142,8 +142,17 @@ class JavaToKotlinAction : AnAction() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun update(e: AnActionEvent) {
|
override fun update(e: AnActionEvent) {
|
||||||
val enabled = selectedJavaFiles(e).any()
|
val virtualFiles = e.getData(CommonDataKeys.VIRTUAL_FILE_ARRAY) ?: return
|
||||||
e.presentation.isEnabled = enabled
|
val project = e.project ?: return
|
||||||
|
|
||||||
|
e.presentation.isEnabled = isAnyJavaFileSelected(project, virtualFiles)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun isAnyJavaFileSelected(project: Project, files: Array<VirtualFile>): Boolean {
|
||||||
|
val manager = PsiManager.getInstance(project)
|
||||||
|
|
||||||
|
if (files.any { manager.findFile(it) is PsiJavaFile }) return true
|
||||||
|
return files.any { it.isDirectory && isAnyJavaFileSelected(project, it.children) }
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun selectedJavaFiles(e: AnActionEvent): Sequence<PsiJavaFile> {
|
private fun selectedJavaFiles(e: AnActionEvent): Sequence<PsiJavaFile> {
|
||||||
|
|||||||
Reference in New Issue
Block a user