diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/JavaToKotlinAction.kt b/idea/src/org/jetbrains/kotlin/idea/actions/JavaToKotlinAction.kt index ae996bda146..aa0b0499501 100644 --- a/idea/src/org/jetbrains/kotlin/idea/actions/JavaToKotlinAction.kt +++ b/idea/src/org/jetbrains/kotlin/idea/actions/JavaToKotlinAction.kt @@ -35,9 +35,9 @@ import com.intellij.openapi.vfs.VirtualFileVisitor import com.intellij.psi.PsiJavaFile import com.intellij.psi.PsiManager 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.J2kPostProcessor +import org.jetbrains.kotlin.idea.refactoring.toPsiFile import org.jetbrains.kotlin.idea.util.application.executeWriteCommand import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.j2k.ConverterSettings @@ -45,7 +45,7 @@ import org.jetbrains.kotlin.j2k.JavaToKotlinConverter import org.jetbrains.kotlin.psi.KtFile import java.io.File import java.io.IOException -import java.util.ArrayList +import java.util.* class JavaToKotlinAction : AnAction() { companion object { @@ -142,8 +142,17 @@ class JavaToKotlinAction : AnAction() { } override fun update(e: AnActionEvent) { - val enabled = selectedJavaFiles(e).any() - e.presentation.isEnabled = enabled + val virtualFiles = e.getData(CommonDataKeys.VIRTUAL_FILE_ARRAY) ?: return + val project = e.project ?: return + + e.presentation.isEnabled = isAnyJavaFileSelected(project, virtualFiles) + } + + private fun isAnyJavaFileSelected(project: Project, files: Array): 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 {