GradleLegacyScriptListener: call from GradleScriptListener

GradleScriptListener is called from VFS listener
This commit is contained in:
Sergey Rostov
2020-05-07 12:57:17 +03:00
parent 80991f7c56
commit 9302a620c2
3 changed files with 35 additions and 24 deletions
@@ -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) {
@@ -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
-1
View File
@@ -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"/>