mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
move ConfigurationFactoryEx methods to RunConfigurationBase to simplify configuration factory
No need to complicate and introduce yet another concept of configuration factory — all current implementations simply delegates work to configuration
This commit is contained in:
@@ -2,63 +2,31 @@
|
||||
package com.intellij.execution.applet;
|
||||
|
||||
import com.intellij.execution.ExecutionBundle;
|
||||
import com.intellij.execution.configuration.ConfigurationFactoryEx;
|
||||
import com.intellij.execution.configurations.*;
|
||||
import com.intellij.execution.configurations.ConfigurationFactory;
|
||||
import com.intellij.execution.configurations.ConfigurationTypeBase;
|
||||
import com.intellij.execution.configurations.ConfigurationTypeUtil;
|
||||
import com.intellij.execution.configurations.RunConfiguration;
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.openapi.components.BaseState;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.util.LazyUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
public class AppletConfigurationType implements ConfigurationType {
|
||||
private final ConfigurationFactory myFactory;
|
||||
|
||||
public final class AppletConfigurationType extends ConfigurationTypeBase {
|
||||
AppletConfigurationType() {
|
||||
myFactory = new ConfigurationFactoryEx(this) {
|
||||
super("Applet", ExecutionBundle.message("applet.configuration.name"), ExecutionBundle.message("applet.configuration.description"), LazyUtil.create(() -> AllIcons.RunConfigurations.Applet));
|
||||
addFactory(new ConfigurationFactory(this) {
|
||||
@NotNull
|
||||
@Override
|
||||
public RunConfiguration createTemplateConfiguration(@NotNull Project project) {
|
||||
return new AppletConfiguration(project, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNewConfigurationCreated(@NotNull RunConfiguration configuration) {
|
||||
((ModuleBasedConfiguration)configuration).onNewConfigurationCreated();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<? extends BaseState> getOptionsClass() {
|
||||
return AppletConfigurationOptions.class;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String getDisplayName() {
|
||||
return ExecutionBundle.message("applet.configuration.name");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getConfigurationTypeDescription() {
|
||||
return ExecutionBundle.message("applet.configuration.description");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Icon getIcon() {
|
||||
return AllIcons.RunConfigurations.Applet;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ConfigurationFactory[] getConfigurationFactories() {
|
||||
return new ConfigurationFactory[]{myFactory};
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public String getId() {
|
||||
return "Applet";
|
||||
});
|
||||
}
|
||||
|
||||
public static AppletConfigurationType getInstance() {
|
||||
|
||||
+7
-1
@@ -7,6 +7,7 @@ import com.intellij.execution.configurations.ConfigurationType;
|
||||
import com.intellij.execution.configurations.ConfigurationTypeUtil;
|
||||
import com.intellij.execution.configurations.RunConfiguration;
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.openapi.components.BaseState;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiElement;
|
||||
@@ -25,7 +26,12 @@ public class ApplicationConfigurationType implements ConfigurationType {
|
||||
private final ConfigurationFactory myFactory;
|
||||
|
||||
public ApplicationConfigurationType() {
|
||||
myFactory = new JvmMainMethodConfigurationFactoryBase(this) {
|
||||
myFactory = new ConfigurationFactory(this) {
|
||||
@Override
|
||||
public Class<? extends BaseState> getOptionsClass() {
|
||||
return ApplicationConfigurationOptions.class;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public RunConfiguration createTemplateConfiguration(@NotNull Project project) {
|
||||
|
||||
-25
@@ -1,25 +0,0 @@
|
||||
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.execution.application;
|
||||
|
||||
import com.intellij.execution.configuration.ConfigurationFactoryListener;
|
||||
import com.intellij.execution.configurations.ConfigurationFactory;
|
||||
import com.intellij.execution.configurations.ConfigurationType;
|
||||
import com.intellij.execution.configurations.ModuleBasedConfiguration;
|
||||
import com.intellij.openapi.components.BaseState;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public abstract class JvmMainMethodConfigurationFactoryBase extends ConfigurationFactory implements ConfigurationFactoryListener<ModuleBasedConfiguration> {
|
||||
protected JvmMainMethodConfigurationFactoryBase(@NotNull ConfigurationType type) {
|
||||
super(type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNewConfigurationCreated(@NotNull ModuleBasedConfiguration configuration) {
|
||||
configuration.onNewConfigurationCreated();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<? extends BaseState> getOptionsClass() {
|
||||
return ApplicationConfigurationOptions.class;
|
||||
}
|
||||
}
|
||||
+13
-3
@@ -1,6 +1,4 @@
|
||||
/*
|
||||
* Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
*/
|
||||
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.execution.jar;
|
||||
|
||||
import com.intellij.diagnostic.logging.LogConfigurationPanel;
|
||||
@@ -16,6 +14,8 @@ import com.intellij.openapi.options.SettingsEditorGroup;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.InvalidDataException;
|
||||
import com.intellij.openapi.util.WriteExternalException;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.util.xmlb.SkipDefaultValuesSerializationFilters;
|
||||
import com.intellij.util.xmlb.XmlSerializer;
|
||||
@@ -224,6 +224,16 @@ public class JarApplicationConfiguration extends LocatableConfigurationBase impl
|
||||
return myBean.PASS_PARENT_ENVS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNewConfigurationCreated() {
|
||||
super.onNewConfigurationCreated();
|
||||
|
||||
if (StringUtil.isEmpty(getWorkingDirectory())) {
|
||||
String baseDir = FileUtil.toSystemIndependentName(StringUtil.notNullize(getProject().getBasePath()));
|
||||
setWorkingDirectory(baseDir);
|
||||
}
|
||||
}
|
||||
|
||||
private static class JarApplicationConfigurationBean {
|
||||
public String JAR_PATH = "";
|
||||
public String VM_PARAMETERS = "";
|
||||
|
||||
+2
-17
@@ -2,15 +2,9 @@
|
||||
package com.intellij.execution.jar;
|
||||
|
||||
import com.intellij.execution.ExecutionBundle;
|
||||
import com.intellij.execution.configuration.ConfigurationFactoryEx;
|
||||
import com.intellij.execution.configurations.ConfigurationType;
|
||||
import com.intellij.execution.configurations.ConfigurationTypeBase;
|
||||
import com.intellij.execution.configurations.ConfigurationTypeUtil;
|
||||
import com.intellij.execution.configurations.RunConfiguration;
|
||||
import com.intellij.execution.configurations.*;
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.util.LazyUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -23,16 +17,7 @@ public class JarApplicationConfigurationType extends ConfigurationTypeBase imple
|
||||
public JarApplicationConfigurationType() {
|
||||
super("JarApplication", ExecutionBundle.message("jar.application.configuration.name"),
|
||||
ExecutionBundle.message("jar.application.configuration.description"), LazyUtil.create(() -> AllIcons.FileTypes.Archive));
|
||||
addFactory(new ConfigurationFactoryEx(this) {
|
||||
@Override
|
||||
public void onNewConfigurationCreated(@NotNull RunConfiguration configuration) {
|
||||
JarApplicationConfiguration jarApplicationConfiguration = (JarApplicationConfiguration)configuration;
|
||||
if (StringUtil.isEmpty(jarApplicationConfiguration.getWorkingDirectory())) {
|
||||
String baseDir = FileUtil.toSystemIndependentName(StringUtil.notNullize(configuration.getProject().getBasePath()));
|
||||
jarApplicationConfiguration.setWorkingDirectory(baseDir);
|
||||
}
|
||||
}
|
||||
|
||||
addFactory(new ConfigurationFactory(this) {
|
||||
@Override
|
||||
@NotNull
|
||||
public RunConfiguration createTemplateConfiguration(@NotNull Project project) {
|
||||
|
||||
+2
-8
@@ -1,10 +1,9 @@
|
||||
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.execution.scratch;
|
||||
|
||||
import com.intellij.execution.configuration.ConfigurationFactoryEx;
|
||||
import com.intellij.execution.configurations.ConfigurationFactory;
|
||||
import com.intellij.execution.configurations.ConfigurationTypeBase;
|
||||
import com.intellij.execution.configurations.ConfigurationTypeUtil;
|
||||
import com.intellij.execution.configurations.ModuleBasedConfiguration;
|
||||
import com.intellij.execution.configurations.RunConfiguration;
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.openapi.components.BaseState;
|
||||
@@ -19,7 +18,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
public final class JavaScratchConfigurationType extends ConfigurationTypeBase {
|
||||
public JavaScratchConfigurationType() {
|
||||
super("Java Scratch", "Java Scratch", "Configuration for java scratch files", LazyUtil.create(() -> LayeredIcon.create(AllIcons.RunConfigurations.Application, AllIcons.Actions.Scratch)));
|
||||
addFactory(new ConfigurationFactoryEx(this) {
|
||||
addFactory(new ConfigurationFactory(this) {
|
||||
@Override
|
||||
public boolean isApplicable(@NotNull Project project) {
|
||||
return false;
|
||||
@@ -31,11 +30,6 @@ public final class JavaScratchConfigurationType extends ConfigurationTypeBase {
|
||||
return new JavaScratchConfiguration("", project, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNewConfigurationCreated(@NotNull RunConfiguration configuration) {
|
||||
((ModuleBasedConfiguration)configuration).onNewConfigurationCreated();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<? extends BaseState> getOptionsClass() {
|
||||
return JavaScratchConfigurationOptions.class;
|
||||
|
||||
+1
@@ -181,6 +181,7 @@ public abstract class ModuleBasedConfiguration<ConfigurationModule extends RunCo
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNewConfigurationCreated() {
|
||||
final RunConfigurationModule configurationModule = getConfigurationModule();
|
||||
if (configurationModule.getModule() == null) {
|
||||
|
||||
@@ -308,4 +308,14 @@ public abstract class RunConfigurationBase extends UserDataHolderBase implements
|
||||
protected boolean isNewSerializationUsed() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when configuration created via UI (Add Configuration).
|
||||
* Suitable to perform some initialization tasks (in most cases it is indicator that you do something wrong, so, please override this method with care and only if really need).
|
||||
*/
|
||||
public void onNewConfigurationCreated() {
|
||||
}
|
||||
|
||||
public void onConfigurationCopied() {
|
||||
}
|
||||
}
|
||||
|
||||
+11
-4
@@ -1,6 +1,4 @@
|
||||
/*
|
||||
* Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
*/
|
||||
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.execution.configurations;
|
||||
|
||||
import com.intellij.execution.ExecutionBundle;
|
||||
@@ -30,7 +28,8 @@ public class RunConfigurationModule implements JDOMExternalizable {
|
||||
@NonNls private static final String ELEMENT = "module";
|
||||
@NonNls private static final String ATTRIBUTE = "name";
|
||||
|
||||
private @Nullable ModulePointer myModulePointer;
|
||||
@Nullable
|
||||
private ModulePointer myModulePointer;
|
||||
|
||||
private final Project myProject;
|
||||
|
||||
@@ -63,7 +62,15 @@ public class RunConfigurationModule implements JDOMExternalizable {
|
||||
prev.setAttribute(ATTRIBUTE, getModuleName());
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated It is not init. It sets module to any first module if no module yet configured. Use {@link #setModuleToAnyFirstIfNotSpecified} if need.
|
||||
*/
|
||||
@Deprecated
|
||||
public void init() {
|
||||
setModuleToAnyFirstIfNotSpecified();
|
||||
}
|
||||
|
||||
public void setModuleToAnyFirstIfNotSpecified() {
|
||||
if (StringUtil.isEmptyOrSpaces(getModuleName())) {
|
||||
Module[] modules = getModuleManager().getModules();
|
||||
if (modules.length > 0) {
|
||||
|
||||
+9
-2
@@ -4,14 +4,21 @@ package com.intellij.execution.configuration;
|
||||
import com.intellij.execution.configurations.ConfigurationFactory;
|
||||
import com.intellij.execution.configurations.ConfigurationType;
|
||||
import com.intellij.execution.configurations.RunConfiguration;
|
||||
import com.intellij.execution.configurations.RunConfigurationBase;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* @deprecated Use {@link ConfigurationFactoryListener}
|
||||
* @deprecated Use {@link RunConfigurationBase#onNewConfigurationCreated()}
|
||||
*/
|
||||
@Deprecated
|
||||
public abstract class ConfigurationFactoryEx<T extends RunConfiguration> extends ConfigurationFactory implements ConfigurationFactoryListener<T> {
|
||||
public abstract class ConfigurationFactoryEx<T extends RunConfiguration> extends ConfigurationFactory {
|
||||
protected ConfigurationFactoryEx(@NotNull ConfigurationType type) {
|
||||
super(type);
|
||||
}
|
||||
|
||||
public void onNewConfigurationCreated(@NotNull T configuration) {
|
||||
}
|
||||
|
||||
public void onConfigurationCopied(@NotNull T configuration) {
|
||||
}
|
||||
}
|
||||
|
||||
-13
@@ -1,13 +0,0 @@
|
||||
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.execution.configuration;
|
||||
|
||||
import com.intellij.execution.configurations.RunConfiguration;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public interface ConfigurationFactoryListener<T extends RunConfiguration> {
|
||||
default void onNewConfigurationCreated(@NotNull T configuration) {
|
||||
}
|
||||
|
||||
default void onConfigurationCopied(@NotNull T configuration) {
|
||||
}
|
||||
}
|
||||
+11
-3
@@ -4,8 +4,10 @@ package com.intellij.execution.dashboard.actions;
|
||||
import com.intellij.execution.ExecutionBundle;
|
||||
import com.intellij.execution.RunManager;
|
||||
import com.intellij.execution.RunnerAndConfigurationSettings;
|
||||
import com.intellij.execution.configuration.ConfigurationFactoryListener;
|
||||
import com.intellij.execution.configuration.ConfigurationFactoryEx;
|
||||
import com.intellij.execution.configurations.ConfigurationFactory;
|
||||
import com.intellij.execution.configurations.RunConfiguration;
|
||||
import com.intellij.execution.configurations.RunConfigurationBase;
|
||||
import com.intellij.execution.dashboard.RunDashboardManager;
|
||||
import com.intellij.execution.dashboard.RunDashboardRunConfigurationNode;
|
||||
import com.intellij.execution.impl.RunDialog;
|
||||
@@ -52,8 +54,14 @@ public class CopyConfigurationAction extends RunConfigurationTreeAction {
|
||||
copiedSettings.setFolderName(settings.getFolderName());
|
||||
|
||||
final ConfigurationFactory factory = settings.getFactory();
|
||||
if (factory instanceof ConfigurationFactoryListener) {
|
||||
((ConfigurationFactoryListener)factory).onConfigurationCopied(settings.getConfiguration());
|
||||
RunConfiguration configuration = settings.getConfiguration();
|
||||
//noinspection deprecation
|
||||
if (factory instanceof ConfigurationFactoryEx) {
|
||||
//noinspection deprecation
|
||||
((ConfigurationFactoryEx)factory).onConfigurationCopied(configuration);
|
||||
}
|
||||
if (configuration instanceof RunConfigurationBase) {
|
||||
((RunConfigurationBase)configuration).onConfigurationCopied();
|
||||
}
|
||||
|
||||
if (RunDialog.editConfiguration(node.getProject(), copiedSettings,
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
package com.intellij.execution.impl
|
||||
|
||||
import com.intellij.execution.*
|
||||
import com.intellij.execution.configuration.ConfigurationFactoryListener
|
||||
import com.intellij.execution.configuration.ConfigurationFactoryEx
|
||||
import com.intellij.execution.configurations.*
|
||||
import com.intellij.execution.impl.RunConfigurable.Companion.collectNodesRecursively
|
||||
import com.intellij.execution.impl.RunConfigurableNodeKind.*
|
||||
@@ -971,8 +971,7 @@ open class RunConfigurable @JvmOverloads constructor(private val project: Projec
|
||||
val name = createUniqueName(typeNode, suggestedName, CONFIGURATION, TEMPORARY_CONFIGURATION)
|
||||
configuration.name = name
|
||||
(configuration as? LocatableConfigurationBase)?.setNameChangedByUser(false)
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
(factory as? ConfigurationFactoryListener<RunConfiguration>)?.onNewConfigurationCreated(configuration)
|
||||
callNewConfigurationCreated(factory, configuration)
|
||||
return createNewConfiguration(settings, node, selectedNode)
|
||||
}
|
||||
|
||||
@@ -1181,7 +1180,8 @@ open class RunConfigurable @JvmOverloads constructor(private val project: Projec
|
||||
settings.name = copyName
|
||||
val factory = settings.factory
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
(factory as? ConfigurationFactoryListener<RunConfiguration>)?.onConfigurationCopied(settings.configuration)
|
||||
(factory as? ConfigurationFactoryEx<RunConfiguration>)?.onConfigurationCopied(settings.configuration)
|
||||
(settings.configuration as? RunConfigurationBase)?.onConfigurationCopied()
|
||||
val parentNode = selectedNode?.parent
|
||||
val node = (if ((parentNode as? DefaultMutableTreeNode)?.userObject is String) parentNode else typeNode) as DefaultMutableTreeNode
|
||||
val configurable = createNewConfiguration(settings, node, selectedNode)
|
||||
|
||||
@@ -4,6 +4,7 @@ package com.intellij.execution.impl
|
||||
import com.intellij.ProjectTopics
|
||||
import com.intellij.configurationStore.*
|
||||
import com.intellij.execution.*
|
||||
import com.intellij.execution.configuration.ConfigurationFactoryEx
|
||||
import com.intellij.execution.configurations.*
|
||||
import com.intellij.execution.runners.ExecutionEnvironment
|
||||
import com.intellij.execution.runners.ExecutionUtil
|
||||
@@ -1044,4 +1045,10 @@ internal fun doGetBeforeRunTasks(configuration: RunConfiguration): List<BeforeRu
|
||||
|
||||
internal fun RunConfiguration.cloneBeforeRunTasks() {
|
||||
beforeRunTasks = doGetBeforeRunTasks(this).mapSmart { it.clone() }
|
||||
}
|
||||
|
||||
fun callNewConfigurationCreated(factory: ConfigurationFactory, configuration: RunConfiguration) {
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
(factory as? ConfigurationFactoryEx<RunConfiguration>)?.onNewConfigurationCreated(configuration)
|
||||
(configuration as? RunConfigurationBase)?.onNewConfigurationCreated()
|
||||
}
|
||||
+7
-39
@@ -2,23 +2,19 @@
|
||||
package com.intellij.remoteServer.impl.configuration.deployment;
|
||||
|
||||
import com.intellij.execution.configuration.ConfigurationFactoryEx;
|
||||
import com.intellij.execution.configuration.ConfigurationFactoryListener;
|
||||
import com.intellij.execution.configurations.ConfigurationFactory;
|
||||
import com.intellij.execution.configurations.ConfigurationTypeBase;
|
||||
import com.intellij.execution.configurations.RunConfiguration;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.remoteServer.ServerType;
|
||||
import com.intellij.remoteServer.configuration.RemoteServer;
|
||||
import com.intellij.remoteServer.configuration.RemoteServersManager;
|
||||
import com.intellij.remoteServer.configuration.ServerConfiguration;
|
||||
import com.intellij.remoteServer.configuration.deployment.*;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.remoteServer.configuration.deployment.DeploymentConfigurator;
|
||||
import com.intellij.remoteServer.configuration.deployment.DeploymentSourceType;
|
||||
import com.intellij.remoteServer.configuration.deployment.SingletonDeploymentSourceType;
|
||||
import org.jetbrains.annotations.Nls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@@ -80,7 +76,8 @@ public final class DeployToServerConfigurationType extends ConfigurationTypeBase
|
||||
return myServerType;
|
||||
}
|
||||
|
||||
public class DeployToServerConfigurationFactory extends ConfigurationFactoryEx<DeployToServerRunConfiguration<?, ?>> implements ConfigurationFactoryListener<DeployToServerRunConfiguration<?, ?>> {
|
||||
// todo do not extends ConfigurationFactoryEx once Google Cloud Tools plugin will get rid of getFactory() usage
|
||||
public class DeployToServerConfigurationFactory extends ConfigurationFactoryEx<DeployToServerRunConfiguration<?, ?>> {
|
||||
public DeployToServerConfigurationFactory() {
|
||||
super(DeployToServerConfigurationType.this);
|
||||
}
|
||||
@@ -90,35 +87,6 @@ public final class DeployToServerConfigurationType extends ConfigurationTypeBase
|
||||
return myServerType.canAutoDetectConfiguration() || !RemoteServersManager.getInstance().getServers(myServerType).isEmpty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNewConfigurationCreated(@NotNull DeployToServerRunConfiguration<?, ?> configuration) {
|
||||
if (configuration.getServerName() == null) {
|
||||
RemoteServer<?> server = ContainerUtil.getFirstItem(RemoteServersManager.getInstance().getServers(myServerType));
|
||||
if (server != null) {
|
||||
configuration.setServerName(server.getName());
|
||||
}
|
||||
}
|
||||
|
||||
if (configuration.getDeploymentSource() == null) {
|
||||
setupDeploymentSource(configuration, configuration);
|
||||
}
|
||||
}
|
||||
|
||||
private <S extends ServerConfiguration, D extends DeploymentConfiguration> void setupDeploymentSource(
|
||||
@NotNull RunConfiguration configuration, @NotNull DeployToServerRunConfiguration<S, D> deployConfiguration) {
|
||||
|
||||
DeploymentConfigurator<D, S> deploymentConfigurator = deployConfiguration.getDeploymentConfigurator();
|
||||
List<DeploymentSource> sources = deploymentConfigurator.getAvailableDeploymentSources();
|
||||
DeploymentSource source = ContainerUtil.getFirstItem(sources);
|
||||
if (source != null) {
|
||||
deployConfiguration.setDeploymentSource(source);
|
||||
deployConfiguration.setDeploymentConfiguration(deploymentConfigurator.createDefaultConfiguration(source));
|
||||
DeploymentSourceType type = source.getType();
|
||||
//noinspection unchecked
|
||||
type.setBuildBeforeRunTask(configuration, source);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public DeployToServerRunConfiguration createTemplateConfiguration(@NotNull Project project) {
|
||||
@@ -128,7 +96,7 @@ public final class DeployToServerConfigurationType extends ConfigurationTypeBase
|
||||
}
|
||||
}
|
||||
|
||||
public class MultiSourcesConfigurationFactory extends DeployToServerConfigurationFactory {
|
||||
public final class MultiSourcesConfigurationFactory extends DeployToServerConfigurationFactory {
|
||||
@NotNull
|
||||
@Override
|
||||
public String getId() {
|
||||
@@ -137,7 +105,7 @@ public final class DeployToServerConfigurationType extends ConfigurationTypeBase
|
||||
}
|
||||
}
|
||||
|
||||
public class SingletonTypeConfigurationFactory extends DeployToServerConfigurationFactory {
|
||||
public final class SingletonTypeConfigurationFactory extends DeployToServerConfigurationFactory {
|
||||
private final SingletonDeploymentSourceType mySourceType;
|
||||
|
||||
public SingletonTypeConfigurationFactory(@NotNull SingletonDeploymentSourceType sourceType) {
|
||||
|
||||
+27
-3
@@ -1,6 +1,4 @@
|
||||
/*
|
||||
* Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
*/
|
||||
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.remoteServer.impl.configuration.deployment;
|
||||
|
||||
import com.intellij.configurationStore.ComponentSerializationUtil;
|
||||
@@ -23,6 +21,7 @@ import com.intellij.remoteServer.configuration.deployment.*;
|
||||
import com.intellij.remoteServer.impl.configuration.deployment.DeployToServerSettingsEditor.AnySource;
|
||||
import com.intellij.remoteServer.impl.configuration.deployment.DeployToServerSettingsEditor.LockedSource;
|
||||
import com.intellij.remoteServer.impl.runtime.DeployToServerState;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.xmlb.SkipDefaultValuesSerializationFilters;
|
||||
import com.intellij.util.xmlb.XmlSerializer;
|
||||
import com.intellij.util.xmlb.annotations.Attribute;
|
||||
@@ -32,6 +31,8 @@ import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author nik
|
||||
*/
|
||||
@@ -255,6 +256,29 @@ public class DeployToServerRunConfiguration<S extends ServerConfiguration, D ext
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNewConfigurationCreated() {
|
||||
if (getServerName() == null) {
|
||||
RemoteServer<?> server = ContainerUtil.getFirstItem(RemoteServersManager.getInstance().getServers(myServerType));
|
||||
if (server != null) {
|
||||
setServerName(server.getName());
|
||||
}
|
||||
}
|
||||
|
||||
if (getDeploymentSource() == null) {
|
||||
DeploymentConfigurator<D, S> deploymentConfigurator = getDeploymentConfigurator();
|
||||
List<DeploymentSource> sources = deploymentConfigurator.getAvailableDeploymentSources();
|
||||
DeploymentSource source = ContainerUtil.getFirstItem(sources);
|
||||
if (source != null) {
|
||||
setDeploymentSource(source);
|
||||
setDeploymentConfiguration(deploymentConfigurator.createDefaultConfiguration(source));
|
||||
DeploymentSourceType type = source.getType();
|
||||
//noinspection unchecked
|
||||
type.setBuildBeforeRunTask(this, source);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class ConfigurationState {
|
||||
@Attribute("server-name")
|
||||
public String myServerName;
|
||||
|
||||
+1
-4
@@ -4,9 +4,7 @@ package com.intellij.remoteServer.impl.configuration.deployment;
|
||||
import com.intellij.execution.ProgramRunnerUtil;
|
||||
import com.intellij.execution.RunManager;
|
||||
import com.intellij.execution.RunnerAndConfigurationSettings;
|
||||
import com.intellij.execution.configuration.ConfigurationFactoryListener;
|
||||
import com.intellij.execution.configurations.ConfigurationFactory;
|
||||
import com.intellij.execution.configurations.RunConfiguration;
|
||||
import com.intellij.execution.executors.DefaultRunExecutor;
|
||||
import com.intellij.execution.impl.RunDialog;
|
||||
import com.intellij.openapi.project.Project;
|
||||
@@ -53,9 +51,8 @@ public class DeploymentConfigurationManagerImpl extends DeploymentConfigurationM
|
||||
@SuppressWarnings("unchecked")
|
||||
ConfigurationFactory factory = configurationType.getFactoryForType(sourceType);
|
||||
RunnerAndConfigurationSettings settings = runManager.createRunConfiguration(configurationType.getDisplayName(), factory);
|
||||
//noinspection unchecked
|
||||
((ConfigurationFactoryListener<RunConfiguration>)factory).onNewConfigurationCreated(settings.getConfiguration());
|
||||
DeployToServerRunConfiguration<?, ?> runConfiguration = (DeployToServerRunConfiguration<?, ?>)settings.getConfiguration();
|
||||
runConfiguration.onNewConfigurationCreated();
|
||||
if (remoteServer != null) {
|
||||
runConfiguration.setServerName(remoteServer.getName());
|
||||
}
|
||||
|
||||
+2
-4
@@ -3,9 +3,8 @@ package com.intellij.remoteServer.util;
|
||||
|
||||
import com.intellij.execution.RunManager;
|
||||
import com.intellij.execution.RunnerAndConfigurationSettings;
|
||||
import com.intellij.execution.configuration.ConfigurationFactoryListener;
|
||||
import com.intellij.execution.configurations.ConfigurationFactory;
|
||||
import com.intellij.execution.configurations.RunConfiguration;
|
||||
import com.intellij.execution.impl.RunManagerImplKt;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.module.ModulePointer;
|
||||
import com.intellij.openapi.module.ModulePointerManager;
|
||||
@@ -42,8 +41,7 @@ public class CloudRunConfigurationUtil {
|
||||
result.setServerName(account.getName());
|
||||
result.setDeploymentSource(deploymentSource);
|
||||
result.setDeploymentConfiguration(deploymentConfiguration);
|
||||
//noinspection unchecked
|
||||
((ConfigurationFactoryListener<RunConfiguration>)configurationFactory).onNewConfigurationCreated(runSettings.getConfiguration());
|
||||
RunManagerImplKt.callNewConfigurationCreated(configurationFactory, runSettings.getConfiguration());
|
||||
|
||||
runManager.addConfiguration(runSettings);
|
||||
runManager.setSelectedConfiguration(runSettings);
|
||||
|
||||
@@ -3,8 +3,10 @@
|
||||
package com.intellij.execution.junit;
|
||||
|
||||
import com.intellij.execution.ExecutionBundle;
|
||||
import com.intellij.execution.configuration.ConfigurationFactoryEx;
|
||||
import com.intellij.execution.configurations.*;
|
||||
import com.intellij.execution.configurations.ConfigurationFactory;
|
||||
import com.intellij.execution.configurations.ConfigurationType;
|
||||
import com.intellij.execution.configurations.ConfigurationTypeUtil;
|
||||
import com.intellij.execution.configurations.RunConfiguration;
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -20,17 +22,12 @@ public class JUnitConfigurationType implements ConfigurationType {
|
||||
|
||||
/**reflection*/
|
||||
public JUnitConfigurationType() {
|
||||
myFactory = new ConfigurationFactoryEx(this) {
|
||||
myFactory = new ConfigurationFactory(this) {
|
||||
@Override
|
||||
@NotNull
|
||||
public RunConfiguration createTemplateConfiguration(@NotNull Project project) {
|
||||
return new JUnitConfiguration("", project, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNewConfigurationCreated(@NotNull RunConfiguration configuration) {
|
||||
((ModuleBasedConfiguration)configuration).onNewConfigurationCreated();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
+35
-73
@@ -1,96 +1,58 @@
|
||||
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
|
||||
package com.theoryinpractice.testng.configuration;
|
||||
|
||||
import com.intellij.execution.Location;
|
||||
import com.intellij.execution.RunManager;
|
||||
import com.intellij.execution.configuration.ConfigurationFactoryEx;
|
||||
import com.intellij.execution.configurations.*;
|
||||
import com.intellij.execution.configurations.ConfigurationFactory;
|
||||
import com.intellij.execution.configurations.ConfigurationTypeBase;
|
||||
import com.intellij.execution.configurations.ConfigurationTypeUtil;
|
||||
import com.intellij.execution.configurations.RunConfiguration;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.util.LazyUtil;
|
||||
import com.theoryinpractice.testng.model.TestData;
|
||||
import com.theoryinpractice.testng.model.TestNGTestObject;
|
||||
import icons.TestngIcons;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.swing.*;
|
||||
public final class TestNGConfigurationType extends ConfigurationTypeBase {
|
||||
public TestNGConfigurationType() {
|
||||
super("TestNG", "TestNG", null, LazyUtil.create(() -> TestngIcons.TestNG));
|
||||
addFactory(new ConfigurationFactory(this) {
|
||||
@NotNull
|
||||
@Override
|
||||
public RunConfiguration createTemplateConfiguration(@NotNull Project project) {
|
||||
return new TestNGConfiguration("", project, this);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public class TestNGConfigurationType implements ConfigurationType {
|
||||
|
||||
private final ConfigurationFactory myFactory;
|
||||
|
||||
public TestNGConfigurationType() {
|
||||
|
||||
myFactory = new ConfigurationFactoryEx(this)
|
||||
{
|
||||
@NotNull
|
||||
@Override
|
||||
public RunConfiguration createTemplateConfiguration(@NotNull Project project) {
|
||||
return new TestNGConfiguration("", project, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNewConfigurationCreated(@NotNull RunConfiguration configuration) {
|
||||
((ModuleBasedConfiguration)configuration).onNewConfigurationCreated();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public static TestNGConfigurationType getInstance() {
|
||||
return ConfigurationTypeUtil.findConfigurationType(TestNGConfigurationType.class);
|
||||
}
|
||||
public static TestNGConfigurationType getInstance() {
|
||||
return ConfigurationTypeUtil.findConfigurationType(TestNGConfigurationType.class);
|
||||
}
|
||||
|
||||
public boolean isConfigurationByLocation(RunConfiguration runConfiguration, Location location) {
|
||||
TestNGConfiguration config = (TestNGConfiguration) runConfiguration;
|
||||
TestData testobject = config.getPersistantData();
|
||||
if (testobject == null)
|
||||
return false;
|
||||
else {
|
||||
final PsiElement element = location.getPsiElement();
|
||||
final TestNGTestObject testNGTestObject = TestNGTestObject.fromConfig(config);
|
||||
if (testNGTestObject != null && testNGTestObject.isConfiguredByElement(element)) {
|
||||
final Module configurationModule = config.getConfigurationModule().getModule();
|
||||
if (Comparing.equal(location.getModule(), configurationModule)) return true;
|
||||
|
||||
final Module predefinedModule =
|
||||
((TestNGConfiguration)RunManager.getInstance(location.getProject()).getConfigurationTemplate(myFactory)
|
||||
.getConfiguration()).getConfigurationModule().getModule();
|
||||
return Comparing.equal(predefinedModule, configurationModule);
|
||||
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
TestNGConfiguration config = (TestNGConfiguration)runConfiguration;
|
||||
TestData testObject = config.getPersistantData();
|
||||
if (testObject == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String getDisplayName() {
|
||||
return "TestNG";
|
||||
}
|
||||
final PsiElement element = location.getPsiElement();
|
||||
final TestNGTestObject testNGTestObject = TestNGTestObject.fromConfig(config);
|
||||
if (testNGTestObject.isConfiguredByElement(element)) {
|
||||
final Module configurationModule = config.getConfigurationModule().getModule();
|
||||
if (Comparing.equal(location.getModule(), configurationModule)) return true;
|
||||
|
||||
@Override
|
||||
public String getConfigurationTypeDescription() {
|
||||
return "TestNG Configuration";
|
||||
final Module predefinedModule =
|
||||
((TestNGConfiguration)RunManager.getInstance(location.getProject()).getConfigurationTemplate(getConfigurationFactories()[0])
|
||||
.getConfiguration()).getConfigurationModule().getModule();
|
||||
return Comparing.equal(predefinedModule, configurationModule);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Icon getIcon() {
|
||||
return TestngIcons.TestNG;
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ConfigurationFactory[] getConfigurationFactories() {
|
||||
return new ConfigurationFactory[] {myFactory};
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public String getId() {
|
||||
return "TestNG";
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,6 @@ package com.jetbrains.python.run;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.intellij.diagnostic.logging.LogConfigurationPanel;
|
||||
import com.intellij.execution.ExecutionBundle;
|
||||
import com.intellij.execution.ExecutionException;
|
||||
import com.intellij.execution.configuration.AbstractRunConfiguration;
|
||||
import com.intellij.execution.configuration.EnvironmentVariablesComponent;
|
||||
import com.intellij.execution.configurations.*;
|
||||
@@ -59,7 +58,7 @@ public abstract class AbstractPythonRunConfiguration<T extends AbstractPythonRun
|
||||
|
||||
public AbstractPythonRunConfiguration(@NotNull Project project, @NotNull ConfigurationFactory factory) {
|
||||
super(project, factory);
|
||||
getConfigurationModule().init();
|
||||
getConfigurationModule().setModuleToAnyFirstIfNotSpecified();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -307,15 +306,6 @@ public abstract class AbstractPythonRunConfiguration<T extends AbstractPythonRun
|
||||
return getConfigurationModule().getModule();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public final Module getModuleNotNull() throws ExecutionException {
|
||||
final Module module = getModule();
|
||||
if (module == null) {
|
||||
throw new ExecutionException("No module set for configuration, please choose one");
|
||||
}
|
||||
return module;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isUseModuleSdk() {
|
||||
return myUseModuleSdk;
|
||||
|
||||
Reference in New Issue
Block a user