KT-25733: Fix regression after optimization
#KT-25733 fixed
This commit is contained in:
@@ -28,18 +28,19 @@ import com.intellij.openapi.fileEditor.FileDocumentManager
|
|||||||
import com.intellij.openapi.fileEditor.FileEditorManager
|
import com.intellij.openapi.fileEditor.FileEditorManager
|
||||||
import com.intellij.openapi.progress.ProgressManager
|
import com.intellij.openapi.progress.ProgressManager
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
|
import com.intellij.openapi.ui.MessageType
|
||||||
import com.intellij.openapi.ui.Messages
|
import com.intellij.openapi.ui.Messages
|
||||||
import com.intellij.openapi.ui.ex.MessagesEx
|
import com.intellij.openapi.ui.ex.MessagesEx
|
||||||
import com.intellij.openapi.util.Key
|
import com.intellij.openapi.util.Key
|
||||||
|
import com.intellij.openapi.ui.popup.JBPopupFactory
|
||||||
import com.intellij.openapi.vfs.VfsUtilCore
|
import com.intellij.openapi.vfs.VfsUtilCore
|
||||||
import com.intellij.openapi.vfs.VirtualFile
|
import com.intellij.openapi.vfs.VirtualFile
|
||||||
import com.intellij.openapi.vfs.VirtualFileVisitor
|
import com.intellij.openapi.vfs.VirtualFileVisitor
|
||||||
|
import com.intellij.openapi.wm.WindowManager
|
||||||
import com.intellij.psi.PsiDocumentManager
|
import com.intellij.psi.PsiDocumentManager
|
||||||
import com.intellij.psi.PsiErrorElement
|
import com.intellij.psi.PsiErrorElement
|
||||||
import com.intellij.psi.PsiJavaFile
|
import com.intellij.psi.PsiJavaFile
|
||||||
import com.intellij.psi.PsiManager
|
import com.intellij.psi.PsiManager
|
||||||
import com.intellij.psi.search.FileTypeIndex
|
|
||||||
import com.intellij.psi.search.GlobalSearchScopesCore
|
|
||||||
import com.intellij.psi.util.PsiTreeUtil
|
import com.intellij.psi.util.PsiTreeUtil
|
||||||
import org.jetbrains.kotlin.idea.KotlinFileType
|
import org.jetbrains.kotlin.idea.KotlinFileType
|
||||||
import org.jetbrains.kotlin.idea.j2k.IdeaJavaToKotlinServices
|
import org.jetbrains.kotlin.idea.j2k.IdeaJavaToKotlinServices
|
||||||
@@ -162,6 +163,14 @@ class JavaToKotlinAction : AnAction() {
|
|||||||
val javaFiles = selectedJavaFiles(e).filter { it.isWritable }.toList()
|
val javaFiles = selectedJavaFiles(e).filter { it.isWritable }.toList()
|
||||||
val project = CommonDataKeys.PROJECT.getData(e.dataContext)!!
|
val project = CommonDataKeys.PROJECT.getData(e.dataContext)!!
|
||||||
|
|
||||||
|
if (javaFiles.isEmpty()) {
|
||||||
|
val statusBar = WindowManager.getInstance().getStatusBar(project)
|
||||||
|
JBPopupFactory.getInstance()
|
||||||
|
.createHtmlTextBalloonBuilder("Nothing to convert:<br>No writable Java files found", MessageType.ERROR, null)
|
||||||
|
.createBalloon()
|
||||||
|
.showInCenterOf(statusBar.component)
|
||||||
|
}
|
||||||
|
|
||||||
val firstSyntaxError = javaFiles.asSequence().map { PsiTreeUtil.findChildOfType(it, PsiErrorElement::class.java) }.firstOrNull()
|
val firstSyntaxError = javaFiles.asSequence().map { PsiTreeUtil.findChildOfType(it, PsiErrorElement::class.java) }.firstOrNull()
|
||||||
|
|
||||||
if (firstSyntaxError != null) {
|
if (firstSyntaxError != null) {
|
||||||
@@ -196,14 +205,9 @@ class JavaToKotlinAction : AnAction() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun isAnyJavaFileSelected(project: Project, files: Array<VirtualFile>): Boolean {
|
private fun isAnyJavaFileSelected(project: Project, files: Array<VirtualFile>): Boolean {
|
||||||
|
if (files.any { it.isDirectory }) return true // Giving up on directories
|
||||||
val filesScope = GlobalSearchScopesCore.directoriesScope(project, true, *files)
|
|
||||||
val potentialJavaFiles = FileTypeIndex.getFiles(JavaFileType.INSTANCE, filesScope)
|
|
||||||
|
|
||||||
if (potentialJavaFiles.isEmpty()) return false
|
|
||||||
|
|
||||||
val manager = PsiManager.getInstance(project)
|
val manager = PsiManager.getInstance(project)
|
||||||
return potentialJavaFiles.any { manager.findFile(it) is PsiJavaFile && it.isWritable }
|
return files.any { it.extension == JavaFileType.DEFAULT_EXTENSION && manager.findFile(it) is PsiJavaFile && it.isWritable }
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun selectedJavaFiles(e: AnActionEvent): Sequence<PsiJavaFile> {
|
private fun selectedJavaFiles(e: AnActionEvent): Sequence<PsiJavaFile> {
|
||||||
|
|||||||
@@ -28,17 +28,19 @@ import com.intellij.openapi.fileEditor.FileDocumentManager
|
|||||||
import com.intellij.openapi.fileEditor.FileEditorManager
|
import com.intellij.openapi.fileEditor.FileEditorManager
|
||||||
import com.intellij.openapi.progress.ProgressManager
|
import com.intellij.openapi.progress.ProgressManager
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
|
import com.intellij.openapi.ui.MessageType
|
||||||
import com.intellij.openapi.ui.Messages
|
import com.intellij.openapi.ui.Messages
|
||||||
import com.intellij.openapi.ui.ex.MessagesEx
|
import com.intellij.openapi.ui.ex.MessagesEx
|
||||||
|
import com.intellij.openapi.util.Key
|
||||||
|
import com.intellij.openapi.ui.popup.JBPopupFactory
|
||||||
import com.intellij.openapi.vfs.VfsUtilCore
|
import com.intellij.openapi.vfs.VfsUtilCore
|
||||||
import com.intellij.openapi.vfs.VirtualFile
|
import com.intellij.openapi.vfs.VirtualFile
|
||||||
import com.intellij.openapi.vfs.VirtualFileVisitor
|
import com.intellij.openapi.vfs.VirtualFileVisitor
|
||||||
|
import com.intellij.openapi.wm.WindowManager
|
||||||
import com.intellij.psi.PsiDocumentManager
|
import com.intellij.psi.PsiDocumentManager
|
||||||
import com.intellij.psi.PsiErrorElement
|
import com.intellij.psi.PsiErrorElement
|
||||||
import com.intellij.psi.PsiJavaFile
|
import com.intellij.psi.PsiJavaFile
|
||||||
import com.intellij.psi.PsiManager
|
import com.intellij.psi.PsiManager
|
||||||
import com.intellij.psi.search.FileTypeIndex
|
|
||||||
import com.intellij.psi.search.GlobalSearchScopesCore
|
|
||||||
import com.intellij.psi.util.PsiTreeUtil
|
import com.intellij.psi.util.PsiTreeUtil
|
||||||
import org.jetbrains.kotlin.idea.KotlinFileType
|
import org.jetbrains.kotlin.idea.KotlinFileType
|
||||||
import org.jetbrains.kotlin.idea.j2k.IdeaJavaToKotlinServices
|
import org.jetbrains.kotlin.idea.j2k.IdeaJavaToKotlinServices
|
||||||
@@ -157,6 +159,14 @@ class JavaToKotlinAction : AnAction() {
|
|||||||
val javaFiles = selectedJavaFiles(e).filter { it.isWritable }.toList()
|
val javaFiles = selectedJavaFiles(e).filter { it.isWritable }.toList()
|
||||||
val project = CommonDataKeys.PROJECT.getData(e.dataContext)!!
|
val project = CommonDataKeys.PROJECT.getData(e.dataContext)!!
|
||||||
|
|
||||||
|
if (javaFiles.isEmpty()) {
|
||||||
|
val statusBar = WindowManager.getInstance().getStatusBar(project)
|
||||||
|
JBPopupFactory.getInstance()
|
||||||
|
.createHtmlTextBalloonBuilder("Nothing to convert:<br>No writable Java files found", MessageType.ERROR, null)
|
||||||
|
.createBalloon()
|
||||||
|
.showInCenterOf(statusBar.component)
|
||||||
|
}
|
||||||
|
|
||||||
val firstSyntaxError = javaFiles.asSequence().map { PsiTreeUtil.findChildOfType(it, PsiErrorElement::class.java) }.firstOrNull()
|
val firstSyntaxError = javaFiles.asSequence().map { PsiTreeUtil.findChildOfType(it, PsiErrorElement::class.java) }.firstOrNull()
|
||||||
|
|
||||||
if (firstSyntaxError != null) {
|
if (firstSyntaxError != null) {
|
||||||
@@ -191,14 +201,9 @@ class JavaToKotlinAction : AnAction() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun isAnyJavaFileSelected(project: Project, files: Array<VirtualFile>): Boolean {
|
private fun isAnyJavaFileSelected(project: Project, files: Array<VirtualFile>): Boolean {
|
||||||
|
if (files.any { it.isDirectory }) return true // Giving up on directories
|
||||||
val filesScope = GlobalSearchScopesCore.directoriesScope(project, true, *files)
|
|
||||||
val potentialJavaFiles = FileTypeIndex.getFiles(JavaFileType.INSTANCE, filesScope)
|
|
||||||
|
|
||||||
if (potentialJavaFiles.isEmpty()) return false
|
|
||||||
|
|
||||||
val manager = PsiManager.getInstance(project)
|
val manager = PsiManager.getInstance(project)
|
||||||
return potentialJavaFiles.any { manager.findFile(it) is PsiJavaFile && it.isWritable }
|
return files.any { it.extension == JavaFileType.DEFAULT_EXTENSION && manager.findFile(it) is PsiJavaFile && it.isWritable }
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun selectedJavaFiles(e: AnActionEvent): Sequence<PsiJavaFile> {
|
private fun selectedJavaFiles(e: AnActionEvent): Sequence<PsiJavaFile> {
|
||||||
|
|||||||
@@ -28,17 +28,18 @@ import com.intellij.openapi.fileEditor.FileDocumentManager
|
|||||||
import com.intellij.openapi.fileEditor.FileEditorManager
|
import com.intellij.openapi.fileEditor.FileEditorManager
|
||||||
import com.intellij.openapi.progress.ProgressManager
|
import com.intellij.openapi.progress.ProgressManager
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
|
import com.intellij.openapi.ui.MessageType
|
||||||
import com.intellij.openapi.ui.Messages
|
import com.intellij.openapi.ui.Messages
|
||||||
import com.intellij.openapi.ui.ex.MessagesEx
|
import com.intellij.openapi.ui.ex.MessagesEx
|
||||||
|
import com.intellij.openapi.ui.popup.JBPopupFactory
|
||||||
import com.intellij.openapi.vfs.VfsUtilCore
|
import com.intellij.openapi.vfs.VfsUtilCore
|
||||||
import com.intellij.openapi.vfs.VirtualFile
|
import com.intellij.openapi.vfs.VirtualFile
|
||||||
import com.intellij.openapi.vfs.VirtualFileVisitor
|
import com.intellij.openapi.vfs.VirtualFileVisitor
|
||||||
|
import com.intellij.openapi.wm.WindowManager
|
||||||
import com.intellij.psi.PsiDocumentManager
|
import com.intellij.psi.PsiDocumentManager
|
||||||
import com.intellij.psi.PsiErrorElement
|
import com.intellij.psi.PsiErrorElement
|
||||||
import com.intellij.psi.PsiJavaFile
|
import com.intellij.psi.PsiJavaFile
|
||||||
import com.intellij.psi.PsiManager
|
import com.intellij.psi.PsiManager
|
||||||
import com.intellij.psi.search.FileTypeIndex
|
|
||||||
import com.intellij.psi.search.GlobalSearchScopesCore
|
|
||||||
import com.intellij.psi.util.PsiTreeUtil
|
import com.intellij.psi.util.PsiTreeUtil
|
||||||
import org.jetbrains.kotlin.idea.KotlinFileType
|
import org.jetbrains.kotlin.idea.KotlinFileType
|
||||||
import org.jetbrains.kotlin.idea.j2k.IdeaJavaToKotlinServices
|
import org.jetbrains.kotlin.idea.j2k.IdeaJavaToKotlinServices
|
||||||
@@ -159,6 +160,14 @@ class JavaToKotlinAction : AnAction() {
|
|||||||
val javaFiles = selectedJavaFiles(e).filter { it.isWritable }.toList()
|
val javaFiles = selectedJavaFiles(e).filter { it.isWritable }.toList()
|
||||||
val project = CommonDataKeys.PROJECT.getData(e.dataContext)!!
|
val project = CommonDataKeys.PROJECT.getData(e.dataContext)!!
|
||||||
|
|
||||||
|
if (javaFiles.isEmpty()) {
|
||||||
|
val statusBar = WindowManager.getInstance().getStatusBar(project)
|
||||||
|
JBPopupFactory.getInstance()
|
||||||
|
.createHtmlTextBalloonBuilder("Nothing to convert:<br>No writable Java files found", MessageType.ERROR, null)
|
||||||
|
.createBalloon()
|
||||||
|
.showInCenterOf(statusBar.component)
|
||||||
|
}
|
||||||
|
|
||||||
val firstSyntaxError = javaFiles.asSequence().map { PsiTreeUtil.findChildOfType(it, PsiErrorElement::class.java) }.firstOrNull()
|
val firstSyntaxError = javaFiles.asSequence().map { PsiTreeUtil.findChildOfType(it, PsiErrorElement::class.java) }.firstOrNull()
|
||||||
|
|
||||||
if (firstSyntaxError != null) {
|
if (firstSyntaxError != null) {
|
||||||
@@ -193,14 +202,9 @@ class JavaToKotlinAction : AnAction() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun isAnyJavaFileSelected(project: Project, files: Array<VirtualFile>): Boolean {
|
private fun isAnyJavaFileSelected(project: Project, files: Array<VirtualFile>): Boolean {
|
||||||
|
if (files.any { it.isDirectory }) return true // Giving up on directories
|
||||||
val filesScope = GlobalSearchScopesCore.directoriesScope(project, true, *files)
|
|
||||||
val potentialJavaFiles = FileTypeIndex.getFiles(JavaFileType.INSTANCE, filesScope)
|
|
||||||
|
|
||||||
if (potentialJavaFiles.isEmpty()) return false
|
|
||||||
|
|
||||||
val manager = PsiManager.getInstance(project)
|
val manager = PsiManager.getInstance(project)
|
||||||
return potentialJavaFiles.any { manager.findFile(it) is PsiJavaFile && it.isWritable }
|
return files.any { it.extension == JavaFileType.DEFAULT_EXTENSION && manager.findFile(it) is PsiJavaFile && it.isWritable }
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun selectedJavaFiles(e: AnActionEvent): Sequence<PsiJavaFile> {
|
private fun selectedJavaFiles(e: AnActionEvent): Sequence<PsiJavaFile> {
|
||||||
|
|||||||
@@ -28,17 +28,18 @@ import com.intellij.openapi.fileEditor.FileDocumentManager
|
|||||||
import com.intellij.openapi.fileEditor.FileEditorManager
|
import com.intellij.openapi.fileEditor.FileEditorManager
|
||||||
import com.intellij.openapi.progress.ProgressManager
|
import com.intellij.openapi.progress.ProgressManager
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
|
import com.intellij.openapi.ui.MessageType
|
||||||
import com.intellij.openapi.ui.Messages
|
import com.intellij.openapi.ui.Messages
|
||||||
import com.intellij.openapi.ui.ex.MessagesEx
|
import com.intellij.openapi.ui.ex.MessagesEx
|
||||||
|
import com.intellij.openapi.ui.popup.JBPopupFactory
|
||||||
import com.intellij.openapi.vfs.VfsUtilCore
|
import com.intellij.openapi.vfs.VfsUtilCore
|
||||||
import com.intellij.openapi.vfs.VirtualFile
|
import com.intellij.openapi.vfs.VirtualFile
|
||||||
import com.intellij.openapi.vfs.VirtualFileVisitor
|
import com.intellij.openapi.vfs.VirtualFileVisitor
|
||||||
|
import com.intellij.openapi.wm.WindowManager
|
||||||
import com.intellij.psi.PsiDocumentManager
|
import com.intellij.psi.PsiDocumentManager
|
||||||
import com.intellij.psi.PsiErrorElement
|
import com.intellij.psi.PsiErrorElement
|
||||||
import com.intellij.psi.PsiJavaFile
|
import com.intellij.psi.PsiJavaFile
|
||||||
import com.intellij.psi.PsiManager
|
import com.intellij.psi.PsiManager
|
||||||
import com.intellij.psi.search.FileTypeIndex
|
|
||||||
import com.intellij.psi.search.GlobalSearchScopesCore
|
|
||||||
import com.intellij.psi.util.PsiTreeUtil
|
import com.intellij.psi.util.PsiTreeUtil
|
||||||
import org.jetbrains.kotlin.idea.KotlinFileType
|
import org.jetbrains.kotlin.idea.KotlinFileType
|
||||||
import org.jetbrains.kotlin.idea.j2k.IdeaJavaToKotlinServices
|
import org.jetbrains.kotlin.idea.j2k.IdeaJavaToKotlinServices
|
||||||
@@ -159,6 +160,14 @@ class JavaToKotlinAction : AnAction() {
|
|||||||
val javaFiles = selectedJavaFiles(e).filter { it.isWritable }.toList()
|
val javaFiles = selectedJavaFiles(e).filter { it.isWritable }.toList()
|
||||||
val project = CommonDataKeys.PROJECT.getData(e.dataContext)!!
|
val project = CommonDataKeys.PROJECT.getData(e.dataContext)!!
|
||||||
|
|
||||||
|
if (javaFiles.isEmpty()) {
|
||||||
|
val statusBar = WindowManager.getInstance().getStatusBar(project)
|
||||||
|
JBPopupFactory.getInstance()
|
||||||
|
.createHtmlTextBalloonBuilder("Nothing to convert:<br>No writable Java files found", MessageType.ERROR, null)
|
||||||
|
.createBalloon()
|
||||||
|
.showInCenterOf(statusBar.component)
|
||||||
|
}
|
||||||
|
|
||||||
val firstSyntaxError = javaFiles.asSequence().map { PsiTreeUtil.findChildOfType(it, PsiErrorElement::class.java) }.firstOrNull()
|
val firstSyntaxError = javaFiles.asSequence().map { PsiTreeUtil.findChildOfType(it, PsiErrorElement::class.java) }.firstOrNull()
|
||||||
|
|
||||||
if (firstSyntaxError != null) {
|
if (firstSyntaxError != null) {
|
||||||
@@ -193,14 +202,9 @@ class JavaToKotlinAction : AnAction() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun isAnyJavaFileSelected(project: Project, files: Array<VirtualFile>): Boolean {
|
private fun isAnyJavaFileSelected(project: Project, files: Array<VirtualFile>): Boolean {
|
||||||
|
if (files.any { it.isDirectory }) return true // Giving up on directories
|
||||||
val filesScope = GlobalSearchScopesCore.directoriesScope(project, true, *files)
|
|
||||||
val potentialJavaFiles = FileTypeIndex.getFiles(JavaFileType.INSTANCE, filesScope)
|
|
||||||
|
|
||||||
if (potentialJavaFiles.isEmpty()) return false
|
|
||||||
|
|
||||||
val manager = PsiManager.getInstance(project)
|
val manager = PsiManager.getInstance(project)
|
||||||
return potentialJavaFiles.any { manager.findFile(it) is PsiJavaFile && it.isWritable }
|
return files.any { it.extension == JavaFileType.DEFAULT_EXTENSION && manager.findFile(it) is PsiJavaFile && it.isWritable }
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun selectedJavaFiles(e: AnActionEvent): Sequence<PsiJavaFile> {
|
private fun selectedJavaFiles(e: AnActionEvent): Sequence<PsiJavaFile> {
|
||||||
|
|||||||
Reference in New Issue
Block a user