diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/MissingGradleScriptConfigurationNotificationProvider.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/MissingGradleScriptConfigurationNotificationProvider.kt index b774f982ede..f7cb60b56eb 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/MissingGradleScriptConfigurationNotificationProvider.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/MissingGradleScriptConfigurationNotificationProvider.kt @@ -16,6 +16,7 @@ import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.idea.KotlinIdeaGradleBundle import org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRootsLocator.NotificationKind.* import org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRootsManager +import org.jetbrains.kotlin.idea.scripting.gradle.roots.Imported class MissingGradleScriptConfigurationNotificationProvider(private val project: Project) : EditorNotifications.Provider() { @@ -32,25 +33,40 @@ class MissingGradleScriptConfigurationNotificationProvider(private val project: outsideAnything -> EditorNotificationPanel().apply { text(KotlinIdeaGradleBundle.message("notification.outsideAnything.text")) createActionLabel(KotlinIdeaGradleBundle.message("notification.outsideAnything.linkAction")) { - runPartialGradleImport(project) + linkProject(project) } } wasNotImportedAfterCreation -> EditorNotificationPanel().apply { text(KotlinIdeaGradleBundle.message("notification.wasNotImportedAfterCreation.text")) createActionLabel(getMissingConfigurationActionText()) { - runPartialGradleImport(project) + linkProject(project) } } notEvaluatedInLastImport -> EditorNotificationPanel().apply { - text(KotlinIdeaGradleBundle.message(KotlinIdeaGradleBundle.message("notification.notEvaluatedInLastImport.text"))) + text(KotlinIdeaGradleBundle.message("notification.notEvaluatedInLastImport.text")) - createActionLabel(KotlinIdeaGradleBundle.message("notification.notEvaluatedInLastImport.info")) { + // suggest to reimport project if something changed after import + val importTs = (scriptUnderRoot.nearest as? Imported)?.data?.importTs + if (importTs != null && !scriptUnderRoot.nearest.areRelatedFilesChangedBefore(file, importTs)) { + createActionLabel(getMissingConfigurationActionText()) { + rootsManager.updateStandaloneScripts { + runPartialGradleImport(project) + } + } + } + + // suggest to choose new gradle project + createActionLabel(KotlinIdeaGradleBundle.message("notification.outsideAnything.linkAction")) { + linkProject(project) + } + + createActionLabel(KotlinIdeaGradleBundle.message("notification.notEvaluatedInLastImport.addAsStandaloneAction")) { rootsManager.updateStandaloneScripts { addStandaloneScript(file.path) } } - contextHelp(KotlinIdeaGradleBundle.message("notification.notEvaluatedInLastImport.addAsStandaloneAction")) + contextHelp(KotlinIdeaGradleBundle.message("notification.notEvaluatedInLastImport.info")) } standalone -> EditorNotificationPanel().apply { text(KotlinIdeaGradleBundle.message("notification.standalone.text")) @@ -64,6 +80,10 @@ class MissingGradleScriptConfigurationNotificationProvider(private val project: } } + private fun linkProject(project: Project) { + TODO() + } + private fun EditorNotificationPanel.contextHelp(text: String) { val helpIcon = createActionLabel("") {} helpIcon.setIcon(AllIcons.General.ContextHelp)