mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[jdk] Use a workspace model subscription in UnknownSdkStartupChecker
#IJPL-16015 Fixed GitOrigin-RevId: 384d58434987bc9e7dc6dd2d27316663c175374b
This commit is contained in:
committed by
intellij-monorepo-bot
parent
3dfdbff173
commit
4a3dcd0b5e
+15
-26
@@ -8,13 +8,12 @@ import com.intellij.openapi.extensions.PluginDescriptor
|
||||
import com.intellij.openapi.progress.blockingContext
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.project.ex.ProjectEx
|
||||
import com.intellij.openapi.projectRoots.ProjectJdkTable
|
||||
import com.intellij.openapi.projectRoots.Sdk
|
||||
import com.intellij.openapi.roots.ModuleRootEvent
|
||||
import com.intellij.openapi.roots.ModuleRootListener
|
||||
import com.intellij.openapi.roots.ex.ProjectRootManagerEx
|
||||
import com.intellij.openapi.roots.ui.configuration.UnknownSdkResolver
|
||||
import com.intellij.openapi.startup.ProjectActivity
|
||||
import com.intellij.platform.backend.workspace.WorkspaceModel
|
||||
import com.intellij.platform.workspace.jps.entities.ContentRootEntity
|
||||
import com.intellij.platform.workspace.jps.entities.SdkEntity
|
||||
|
||||
private class UnknownSdkStartupChecker : ProjectActivity {
|
||||
init {
|
||||
@@ -24,8 +23,18 @@ private class UnknownSdkStartupChecker : ProjectActivity {
|
||||
}
|
||||
}
|
||||
|
||||
override suspend fun execute(project: Project) : Unit = blockingContext {
|
||||
checkUnknownSdks(project)
|
||||
override suspend fun execute(project: Project) {
|
||||
blockingContext {
|
||||
checkUnknownSdks(project)
|
||||
}
|
||||
|
||||
WorkspaceModel.getInstance(project).subscribe { _, changes ->
|
||||
changes.collect { event ->
|
||||
if (event.getChanges(SdkEntity::class.java).any() || event.getChanges(ContentRootEntity::class.java).any()) {
|
||||
checkUnknownSdks(project)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
UnknownSdkResolver.EP_NAME.addExtensionPointListener(object: ExtensionPointListener<UnknownSdkResolver> {
|
||||
override fun extensionAdded(extension: UnknownSdkResolver, pluginDescriptor: PluginDescriptor) {
|
||||
@@ -37,29 +46,9 @@ private class UnknownSdkStartupChecker : ProjectActivity {
|
||||
}
|
||||
}, project)
|
||||
|
||||
project.messageBus.connect().subscribe(ModuleRootListener.TOPIC, object: ModuleRootListener {
|
||||
override fun rootsChanged(event: ModuleRootEvent) {
|
||||
checkUnknownSdks(event.project)
|
||||
}
|
||||
})
|
||||
|
||||
ProjectRootManagerEx.getInstanceEx(project).addProjectJdkListener {
|
||||
checkUnknownSdks(project)
|
||||
}
|
||||
|
||||
project.messageBus.simpleConnect().subscribe(ProjectJdkTable.JDK_TABLE_TOPIC, object : ProjectJdkTable.Listener {
|
||||
override fun jdkAdded(jdk: Sdk) {
|
||||
checkUnknownSdks(project)
|
||||
}
|
||||
|
||||
override fun jdkRemoved(jdk: Sdk) {
|
||||
checkUnknownSdks(project)
|
||||
}
|
||||
|
||||
override fun jdkNameChanged(jdk: Sdk, previousName: String) {
|
||||
checkUnknownSdks(project)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
private fun checkUnknownSdks(project: Project) {
|
||||
|
||||
Reference in New Issue
Block a user