diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/inspections/JavaOutsideModuleDetector.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/inspections/JavaOutsideModuleDetector.kt index c5c93294130..c89dc66a28f 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/inspections/JavaOutsideModuleDetector.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/inspections/JavaOutsideModuleDetector.kt @@ -5,11 +5,15 @@ package org.jetbrains.kotlin.idea.inspections +import com.intellij.icons.AllIcons import com.intellij.ide.highlighter.JavaFileType import com.intellij.openapi.fileEditor.FileEditor import com.intellij.openapi.project.Project import com.intellij.openapi.util.Key import com.intellij.openapi.vfs.VirtualFile +import com.intellij.openapi.vfs.VirtualFileListener +import com.intellij.openapi.vfs.VirtualFileManager +import com.intellij.openapi.vfs.VirtualFileMoveEvent import com.intellij.ui.EditorNotificationPanel import com.intellij.ui.EditorNotifications import org.jetbrains.kotlin.idea.facet.KotlinFacet @@ -17,9 +21,18 @@ import org.jetbrains.kotlin.idea.framework.isGradleModule import org.jetbrains.kotlin.idea.util.findModule import org.jetbrains.kotlin.idea.util.sourceRoots -class JavaOutsideModuleDetector(private val project: Project) : EditorNotifications.Provider() { +class JavaOutsideModuleDetector(private val project: Project, notifications: EditorNotifications) : + EditorNotifications.Provider() { override fun getKey(): Key = KEY + init { + VirtualFileManager.getInstance().addVirtualFileListener(object : VirtualFileListener { + override fun fileMoved(event: VirtualFileMoveEvent) { + if (event.file.fileType == JavaFileType.INSTANCE) notifications.updateNotifications(event.file) + } + }) + } + override fun createNotificationPanel(file: VirtualFile, fileEditor: FileEditor): EditorNotificationPanel? { if (file.fileType != JavaFileType.INSTANCE) return null val module = file.findModule(project) ?: return null @@ -30,7 +43,8 @@ class JavaOutsideModuleDetector(private val project: Project) : EditorNotificati val nonKotlinPath = module.sourceRoots.map { it.path } - facetSettings.pureKotlinSourceFolders if (nonKotlinPath.any { filePath.startsWith(it) }) return null return EditorNotificationPanel().apply { - setText("This .java file is outside of Java source roots and won't be added to the class-path.") + text("This .java file is outside of Java source roots and won't be added to the classpath.") + icon(AllIcons.General.Warning) } }