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
|
package org.jetbrains.kotlin.idea.inspections
|
||||||
|
|
||||||
|
import com.intellij.icons.AllIcons
|
||||||
import com.intellij.ide.highlighter.JavaFileType
|
import com.intellij.ide.highlighter.JavaFileType
|
||||||
import com.intellij.openapi.fileEditor.FileEditor
|
import com.intellij.openapi.fileEditor.FileEditor
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.util.Key
|
import com.intellij.openapi.util.Key
|
||||||
import com.intellij.openapi.vfs.VirtualFile
|
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.EditorNotificationPanel
|
||||||
import com.intellij.ui.EditorNotifications
|
import com.intellij.ui.EditorNotifications
|
||||||
import org.jetbrains.kotlin.idea.facet.KotlinFacet
|
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.findModule
|
||||||
import org.jetbrains.kotlin.idea.util.sourceRoots
|
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
|
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? {
|
override fun createNotificationPanel(file: VirtualFile, fileEditor: FileEditor): EditorNotificationPanel? {
|
||||||
if (file.fileType != JavaFileType.INSTANCE) return null
|
if (file.fileType != JavaFileType.INSTANCE) return null
|
||||||
val module = file.findModule(project) ?: 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
|
val nonKotlinPath = module.sourceRoots.map { it.path } - facetSettings.pureKotlinSourceFolders
|
||||||
if (nonKotlinPath.any { filePath.startsWith(it) }) return null
|
if (nonKotlinPath.any { filePath.startsWith(it) }) return null
|
||||||
return EditorNotificationPanel().apply {
|
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