JavaOutsideModuleDetector: should refresh notification after move
#KT-32967 Fixed
This commit is contained in:
+16
-2
@@ -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<EditorNotificationPanel>() {
|
||||
class JavaOutsideModuleDetector(private val project: Project, notifications: EditorNotifications) :
|
||||
EditorNotifications.Provider<EditorNotificationPanel>() {
|
||||
override fun getKey(): Key<EditorNotificationPanel> = 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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user