mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Allow dynamic load/unload for <configurationType>
GitOrigin-RevId: 21521546551d00dfbfaf8684abb81a4ccc7bbd8e
This commit is contained in:
committed by
intellij-monorepo-bot
parent
e162303586
commit
ecfb5a3dfd
@@ -14,6 +14,8 @@ import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.components.*
|
||||
import com.intellij.openapi.diagnostic.logger
|
||||
import com.intellij.openapi.diagnostic.runAndLogException
|
||||
import com.intellij.openapi.extensions.ExtensionPointListener
|
||||
import com.intellij.openapi.extensions.PluginDescriptor
|
||||
import com.intellij.openapi.extensions.ProjectExtensionPointName
|
||||
import com.intellij.openapi.options.SchemeManager
|
||||
import com.intellij.openapi.options.SchemeManagerFactory
|
||||
@@ -194,6 +196,25 @@ open class RunManagerImpl @JvmOverloads constructor(val project: Project, shared
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
ConfigurationType.CONFIGURATION_TYPE_EP.addExtensionPointListener(object : ExtensionPointListener<ConfigurationType> {
|
||||
override fun extensionAdded(extension: ConfigurationType, pluginDescriptor: PluginDescriptor) {
|
||||
idToType.drop()
|
||||
project.stateStore.reloadState(RunManagerImpl::class.java)
|
||||
}
|
||||
|
||||
override fun extensionRemoved(extension: ConfigurationType, pluginDescriptor: PluginDescriptor) {
|
||||
idToType.drop()
|
||||
for (runnerAndConfigurationSettings in allSettings) {
|
||||
val settingsImpl = runnerAndConfigurationSettings as RunnerAndConfigurationSettingsImpl
|
||||
if (settingsImpl.type == extension) {
|
||||
val configuration = UnknownConfigurationType.getInstance().createTemplateConfiguration(project)
|
||||
configuration.name = settingsImpl.configuration.name
|
||||
settingsImpl.setConfiguration(configuration)
|
||||
}
|
||||
}
|
||||
}
|
||||
}, project)
|
||||
}
|
||||
|
||||
@TestOnly
|
||||
|
||||
+11
-4
@@ -50,10 +50,13 @@ enum class RunConfigurationLevel {
|
||||
WORKSPACE, PROJECT, TEMPORARY
|
||||
}
|
||||
|
||||
class RunnerAndConfigurationSettingsImpl @JvmOverloads constructor(val manager: RunManagerImpl,
|
||||
private var _configuration: RunConfiguration? = null,
|
||||
private var isTemplate: Boolean = false,
|
||||
var level: RunConfigurationLevel = RunConfigurationLevel.WORKSPACE) : Cloneable, RunnerAndConfigurationSettings, Comparable<Any>, SerializableScheme {
|
||||
class RunnerAndConfigurationSettingsImpl @JvmOverloads constructor(
|
||||
val manager: RunManagerImpl,
|
||||
private var _configuration: RunConfiguration? = null,
|
||||
private var isTemplate: Boolean = false,
|
||||
var level: RunConfigurationLevel = RunConfigurationLevel.WORKSPACE
|
||||
) : Cloneable, RunnerAndConfigurationSettings, Comparable<Any>, SerializableScheme {
|
||||
|
||||
@Deprecated("isSingleton parameter removed", level = DeprecationLevel.ERROR)
|
||||
@Suppress("UNUSED_PARAMETER")
|
||||
constructor(manager: RunManagerImpl, configuration: RunConfiguration, isTemplate: Boolean, isSingleton: Boolean) : this(manager, configuration, isTemplate)
|
||||
@@ -115,6 +118,10 @@ class RunnerAndConfigurationSettingsImpl @JvmOverloads constructor(val manager:
|
||||
|
||||
override fun getConfiguration() = _configuration ?: UnknownConfigurationType.getInstance().createTemplateConfiguration(manager.project)
|
||||
|
||||
fun setConfiguration(configuration: RunConfiguration?) {
|
||||
_configuration = configuration
|
||||
}
|
||||
|
||||
override fun createFactory(): Factory<RunnerAndConfigurationSettings> {
|
||||
return Factory {
|
||||
val configuration = configuration
|
||||
|
||||
@@ -468,7 +468,7 @@
|
||||
<with attribute="implementationClass" implements="com.intellij.psi.impl.cache.CommentTokenSetProvider"/>
|
||||
</extensionPoint>
|
||||
|
||||
<extensionPoint name="configurationType" interface="com.intellij.execution.configurations.ConfigurationType"/>
|
||||
<extensionPoint name="configurationType" interface="com.intellij.execution.configurations.ConfigurationType" dynamic="true"/>
|
||||
<extensionPoint name="runConfigurationTemplateProvider" interface="com.intellij.execution.impl.RunConfigurationTemplateProvider" area="IDEA_PROJECT"/>
|
||||
|
||||
<extensionPoint name="runConfigurationsSettings"
|
||||
|
||||
Reference in New Issue
Block a user