listen changes only after initial synchronizeSchemesAndRunConfigurations

This commit is contained in:
Vladimir Krivosheev
2017-05-10 07:33:01 +02:00
parent e46d305cb0
commit a2699c7de1
2 changed files with 32 additions and 12 deletions
@@ -22,6 +22,7 @@ import com.intellij.openapi.options.SchemeManagerFactory
import com.intellij.openapi.project.DumbAware
import com.intellij.openapi.project.Project
import com.intellij.openapi.startup.StartupActivity
import com.intellij.openapi.util.Key
import com.intellij.openapi.util.Pair
import com.intellij.openapi.util.registry.Registry
import gnu.trove.THashSet
@@ -33,17 +34,7 @@ internal class ProjectRunConfigurationStartupActivity : StartupActivity, DumbAwa
return
}
val eventPublisher = createRunManagerEventPublisher(project)
eventPublisher.beginUpdate()
try {
RunManagerImpl.getInstanceImpl(project)
ServiceManager.getService(project, ProjectRunConfigurationManager::class.java)
// important, especially for AppCode ("hack" (projectOpened listener) in the OCWorkspaceRunConfigurationListener removed in favour of platform fix)
eventPublisher.runConfigurationSelected()
}
finally {
eventPublisher.endUpdate()
}
requestLoadWorkspaceAndProjectRunConfiguration(project)
if (!Registry.`is`("runManager.use.schemeManager", false)) {
return
@@ -57,6 +48,28 @@ internal class ProjectRunConfigurationStartupActivity : StartupActivity, DumbAwa
}
}
private val isInitializedKey = Key.create<Boolean>("RunManagerInitialized")
fun requestLoadWorkspaceAndProjectRunConfiguration(project: Project) {
if (isInitializedKey.isIn(project)) {
return
}
isInitializedKey.set(project, true)
val eventPublisher = createRunManagerEventPublisher(project)
eventPublisher.beginUpdate()
try {
RunManagerImpl.getInstanceImpl(project)
ServiceManager.getService(project, ProjectRunConfigurationManager::class.java)
// important, especially for AppCode ("hack" (projectOpened listener) in the OCWorkspaceRunConfigurationListener removed in favour of platform fix)
eventPublisher.runConfigurationSelected()
}
finally {
eventPublisher.endUpdate()
}
}
@State(name = "ProjectRunConfigurationManager", storages = arrayOf(Storage(value = "runConfigurations", stateSplitter = ProjectRunConfigurationManager.RunConfigurationStateSplitter::class)))
internal class ProjectRunConfigurationManager(manager: RunManager) : PersistentStateComponent<Element> {
private val manager = manager as RunManagerImpl
@@ -625,7 +625,14 @@ open class RunManagerImpl(internal val project: Project) : RunManagerEx(), Persi
}
name
}
workspaceSchemeManager.reload()
try {
eventPublisher.beginUpdate()
workspaceSchemeManager.reload()
}
finally {
eventPublisher.endUpdate()
}
val order = ArrayList<String>()
@Suppress("DEPRECATION")