Replace ConfigurationFactory with SimpleConfigurationType

#KT-36781 Fixed
This commit is contained in:
Dmitry Gridin
2020-03-12 17:58:56 +07:00
parent 43d6ddd405
commit b9ffed3f04
4 changed files with 32 additions and 29 deletions
@@ -18,7 +18,8 @@ package org.jetbrains.kotlin.idea.run
import com.intellij.execution.Location import com.intellij.execution.Location
import com.intellij.execution.actions.ConfigurationContext import com.intellij.execution.actions.ConfigurationContext
import com.intellij.execution.actions.RunConfigurationProducer import com.intellij.execution.actions.LazyRunConfigurationProducer
import com.intellij.execution.configurations.ConfigurationFactory
import com.intellij.openapi.project.DumbService import com.intellij.openapi.project.DumbService
import com.intellij.openapi.util.Ref import com.intellij.openapi.util.Ref
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
@@ -34,7 +35,7 @@ import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.getParentOfType import org.jetbrains.kotlin.psi.psiUtil.getParentOfType
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
class KotlinRunConfigurationProducer : RunConfigurationProducer<KotlinRunConfiguration>(KotlinRunConfigurationType.getInstance()) { class KotlinRunConfigurationProducer : LazyRunConfigurationProducer<KotlinRunConfiguration>() {
override fun setupConfigurationFromContext( override fun setupConfigurationFromContext(
configuration: KotlinRunConfiguration, configuration: KotlinRunConfiguration,
context: ConfigurationContext, context: ConfigurationContext,
@@ -111,4 +112,6 @@ class KotlinRunConfigurationProducer : RunConfigurationProducer<KotlinRunConfigu
return element as KtDeclarationContainer? return element as KtDeclarationContainer?
} }
} }
override fun getConfigurationFactory(): ConfigurationFactory = KotlinRunConfigurationType.getInstance()
} }
@@ -16,31 +16,31 @@
package org.jetbrains.kotlin.idea.run; package org.jetbrains.kotlin.idea.run;
import com.intellij.execution.configurations.*; import com.intellij.execution.configurations.ConfigurationTypeUtil;
import com.intellij.execution.configurations.JavaRunConfigurationModule;
import com.intellij.execution.configurations.RunConfiguration;
import com.intellij.execution.configurations.SimpleConfigurationType;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.NotNullLazyValue;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.idea.KotlinIcons; import org.jetbrains.kotlin.idea.KotlinIcons;
import org.jetbrains.kotlin.idea.KotlinLanguage; import org.jetbrains.kotlin.idea.KotlinLanguage;
public class KotlinRunConfigurationType extends ConfigurationTypeBase { public class KotlinRunConfigurationType extends SimpleConfigurationType {
public static KotlinRunConfigurationType getInstance() { public static KotlinRunConfigurationType getInstance() {
return ConfigurationTypeUtil.findConfigurationType(KotlinRunConfigurationType.class); return ConfigurationTypeUtil.findConfigurationType(KotlinRunConfigurationType.class);
} }
public KotlinRunConfigurationType() { public KotlinRunConfigurationType() {
super("JetRunConfigurationType", KotlinLanguage.NAME, KotlinLanguage.NAME, KotlinIcons.SMALL_LOGO); super("JetRunConfigurationType",
addFactory(new KotlinRunConfigurationFactory(this)); KotlinLanguage.NAME,
KotlinLanguage.NAME,
NotNullLazyValue.createValue(() -> KotlinIcons.SMALL_LOGO));
} }
private static class KotlinRunConfigurationFactory extends ConfigurationFactory { @NotNull
protected KotlinRunConfigurationFactory(@NotNull ConfigurationType type) { @Override
super(type); public RunConfiguration createTemplateConfiguration(@NotNull Project project) {
} return new KotlinRunConfiguration("", new JavaRunConfigurationModule(project, true), this);
@NotNull
@Override
public RunConfiguration createTemplateConfiguration(@NotNull Project project) {
return new KotlinRunConfiguration("", new JavaRunConfigurationModule(project, true), this);
}
} }
} }
@@ -6,14 +6,15 @@
package org.jetbrains.kotlin.idea.run.script.standalone package org.jetbrains.kotlin.idea.run.script.standalone
import com.intellij.execution.actions.ConfigurationContext import com.intellij.execution.actions.ConfigurationContext
import com.intellij.execution.actions.RunConfigurationProducer import com.intellij.execution.actions.LazyRunConfigurationProducer
import com.intellij.execution.configurations.ConfigurationFactory
import com.intellij.openapi.util.Ref import com.intellij.openapi.util.Ref
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.psiUtil.getParentOfType import org.jetbrains.kotlin.psi.psiUtil.getParentOfType
class KotlinStandaloneScriptRunConfigurationProducer : class KotlinStandaloneScriptRunConfigurationProducer :
RunConfigurationProducer<KotlinStandaloneScriptRunConfiguration>(KotlinStandaloneScriptRunConfigurationType.instance) { LazyRunConfigurationProducer<KotlinStandaloneScriptRunConfiguration>() {
override fun setupConfigurationFromContext( override fun setupConfigurationFromContext(
configuration: KotlinStandaloneScriptRunConfiguration, configuration: KotlinStandaloneScriptRunConfiguration,
context: ConfigurationContext, context: ConfigurationContext,
@@ -41,4 +42,6 @@ class KotlinStandaloneScriptRunConfigurationProducer :
return script.containingKtFile.virtualFile.canonicalPath return script.containingKtFile.virtualFile.canonicalPath
} }
} }
override fun getConfigurationFactory(): ConfigurationFactory = KotlinStandaloneScriptRunConfigurationType.instance
} }
@@ -5,24 +5,21 @@
package org.jetbrains.kotlin.idea.run.script.standalone package org.jetbrains.kotlin.idea.run.script.standalone
import com.intellij.execution.configurations.* import com.intellij.execution.configurations.ConfigurationTypeUtil
import com.intellij.execution.configurations.RunConfiguration
import com.intellij.execution.configurations.SimpleConfigurationType
import com.intellij.openapi.project.Project import com.intellij.openapi.project.Project
import com.intellij.openapi.util.NotNullLazyValue
import org.jetbrains.kotlin.idea.KotlinIcons import org.jetbrains.kotlin.idea.KotlinIcons
class KotlinStandaloneScriptRunConfigurationType : ConfigurationTypeBase( class KotlinStandaloneScriptRunConfigurationType : SimpleConfigurationType(
"KotlinStandaloneScriptRunConfigurationType", "KotlinStandaloneScriptRunConfigurationType",
"Kotlin script", "Kotlin script",
"Run Kotlin script", "Run Kotlin script",
KotlinIcons.SMALL_LOGO NotNullLazyValue.createValue { KotlinIcons.SMALL_LOGO }
) { ) {
init { override fun createTemplateConfiguration(project: Project): RunConfiguration {
addFactory(Factory(this)) return KotlinStandaloneScriptRunConfiguration(project, this, "")
}
private class Factory(type: ConfigurationType) : ConfigurationFactory(type) {
override fun createTemplateConfiguration(project: Project): RunConfiguration {
return KotlinStandaloneScriptRunConfiguration(project, this, "")
}
} }
companion object { companion object {