GradleLegacyScriptListener: call from GradleScriptListener
GradleScriptListener is called from VFS listener
This commit is contained in:
+24
-6
@@ -8,27 +8,45 @@ package org.jetbrains.kotlin.idea.scripting.gradle
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import org.jetbrains.kotlin.idea.core.script.configuration.listener.ScriptChangeListener
|
||||
import org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRoot
|
||||
import org.jetbrains.kotlin.idea.scripting.gradle.legacy.GradleLegacyScriptListener
|
||||
import org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRootsManager
|
||||
|
||||
class GradleScriptListener(project: Project) : ScriptChangeListener(project) {
|
||||
// todo(gradle6): remove
|
||||
private val legacy = GradleLegacyScriptListener(project)
|
||||
private val buildRootsManager = GradleBuildRootsManager.getInstance(project)
|
||||
|
||||
init {
|
||||
// listen changes using VFS events, including gradle-configuration related files
|
||||
addVfsListener(this)
|
||||
}
|
||||
|
||||
fun fileChanged(filePath: String, ts: Long) =
|
||||
GradleBuildRootsManager.getInstance(project).fileChanged(filePath, ts)
|
||||
buildRootsManager.fileChanged(filePath, ts)
|
||||
|
||||
override fun isApplicable(vFile: VirtualFile) =
|
||||
GradleBuildRootsManager.getInstance(project).isApplicable(vFile)
|
||||
// todo(gradle6): replace with `isCustomScriptingSupport(vFile)`
|
||||
legacy.isApplicable(vFile)
|
||||
|
||||
override fun editorActivated(vFile: VirtualFile) =
|
||||
checkUpToDate(vFile)
|
||||
private fun isCustomScriptingSupport(vFile: VirtualFile) =
|
||||
buildRootsManager.isApplicable(vFile)
|
||||
|
||||
override fun editorActivated(vFile: VirtualFile) {
|
||||
if (isCustomScriptingSupport(vFile)) {
|
||||
checkUpToDate(vFile)
|
||||
} else {
|
||||
legacy.editorActivated(vFile)
|
||||
}
|
||||
}
|
||||
|
||||
override fun documentChanged(vFile: VirtualFile) {
|
||||
fileChanged(vFile.path, System.currentTimeMillis())
|
||||
checkUpToDate(vFile)
|
||||
|
||||
if (isCustomScriptingSupport(vFile)) {
|
||||
checkUpToDate(vFile)
|
||||
} else {
|
||||
legacy.documentChanged(vFile)
|
||||
}
|
||||
}
|
||||
|
||||
private fun checkUpToDate(vFile: VirtualFile) {
|
||||
|
||||
+11
-17
@@ -13,27 +13,21 @@ import org.jetbrains.kotlin.idea.scripting.gradle.isInAffectedGradleProjectFiles
|
||||
import org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRootsManager
|
||||
import org.jetbrains.kotlin.idea.scripting.gradle.useScriptConfigurationFromImportOnly
|
||||
|
||||
// called from GradleScriptListener
|
||||
// todo(gradle6): remove
|
||||
class GradleLegacyScriptListener(project: Project) : ScriptChangeListener(project) {
|
||||
override fun isApplicable(vFile: VirtualFile): Boolean {
|
||||
return isGradleKotlinScript(vFile)
|
||||
}
|
||||
override fun isApplicable(vFile: VirtualFile) =
|
||||
isGradleKotlinScript(vFile)
|
||||
|
||||
override fun editorActivated(vFile: VirtualFile) {
|
||||
override fun editorActivated(vFile: VirtualFile) =
|
||||
checkUpToDate(vFile)
|
||||
|
||||
override fun documentChanged(vFile: VirtualFile) =
|
||||
checkUpToDate(vFile)
|
||||
|
||||
private fun checkUpToDate(vFile: VirtualFile) {
|
||||
if (!isInAffectedGradleProjectFiles(project, vFile.path)) return
|
||||
|
||||
if (useScriptConfigurationFromImportOnly()) {
|
||||
// do nothing
|
||||
} else {
|
||||
val file = getAnalyzableKtFileForScript(vFile) ?: return
|
||||
default.suggestToUpdateConfigurationIfOutOfDate(file)
|
||||
}
|
||||
}
|
||||
|
||||
override fun documentChanged(vFile: VirtualFile) {
|
||||
if (!isInAffectedGradleProjectFiles(project, vFile.path)) return
|
||||
|
||||
GradleBuildRootsManager.getInstance(project).fileChanged(vFile.path)
|
||||
|
||||
val file = getAnalyzableKtFileForScript(vFile)
|
||||
if (file != null) {
|
||||
// *.gradle.kts file was changed
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
|
||||
<extensions defaultExtensionNs="org.jetbrains.kotlin.scripting.idea">
|
||||
<listener order="first" implementation="org.jetbrains.kotlin.idea.scripting.gradle.GradleScriptListener"/>
|
||||
<listener order="first" implementation="org.jetbrains.kotlin.idea.scripting.gradle.legacy.GradleLegacyScriptListener"/>
|
||||
|
||||
<loader order="first" implementation="org.jetbrains.kotlin.idea.scripting.gradle.legacy.GradleLegacyScriptConfigurationLoader"/>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user