From 8a6c987ae46605521964bc6b40f18f52e756a382 Mon Sep 17 00:00:00 2001 From: Anton Makeev Date: Wed, 5 May 2010 16:56:33 +0400 Subject: [PATCH] Run Configurations: CommonProgramParameters extracted --- ...CommonJavaRunConfigurationParameters.java} | 15 +--- .../execution/RunConfigurationExtension.java | 25 +++--- ...ble2.form => ApplicationConfigurable.form} | 4 +- ...ble2.java => ApplicationConfigurable.java} | 10 +-- .../application/ApplicationConfiguration.java | 60 ++++++------- ...rs.java => CommonJavaParametersPanel.java} | 24 +++-- .../execution/util/JavaParametersUtil.java | 39 +++----- .../execution/util/JreVersionDetector.java | 4 +- .../configurations/SimpleJavaParameters.java | 22 +---- .../SimpleProgramParameters.java | 40 +++++++++ ...mmonProgramRunConfigurationParameters.java | 30 +++++++ .../execution/ExternalizablePath.java | 0 .../ui/CommonProgramParametersPanel.java | 17 +++- .../execution/util/ProgramParametersUtil.java | 64 ++++++++++++++ .../execution/junit/JUnitConfiguration.java | 88 ++++++++++--------- .../configuration/JUnitConfigurable.form | 2 +- .../configuration/JUnitConfigurable.java | 4 +- .../configuration/TestNGConfiguration.java | 31 +++++-- .../TestNGConfigurationEditor.java | 4 +- .../configuration/TestNGRunnableState.java | 2 +- .../testng/model/TestData.java | 69 +++++---------- .../SnapShooterConfigurationExtension.java | 12 +-- 22 files changed, 331 insertions(+), 235 deletions(-) rename java/execution/impl/src/com/intellij/execution/{RunJavaConfiguration.java => CommonJavaRunConfigurationParameters.java} (70%) rename java/execution/impl/src/com/intellij/execution/application/{ApplicationConfigurable2.form => ApplicationConfigurable.form} (97%) rename java/execution/impl/src/com/intellij/execution/application/{ApplicationConfigurable2.java => ApplicationConfigurable.java} (93%) rename java/execution/impl/src/com/intellij/execution/ui/{CommonJavaParameters.java => CommonJavaParametersPanel.java} (62%) create mode 100644 platform/lang-api/src/com/intellij/execution/configurations/SimpleProgramParameters.java create mode 100644 platform/lang-impl/src/com/intellij/execution/CommonProgramRunConfigurationParameters.java rename {java/execution/impl => platform/lang-impl}/src/com/intellij/execution/ExternalizablePath.java (100%) rename java/execution/impl/src/com/intellij/execution/ui/CommonProgramParameters.java => platform/lang-impl/src/com/intellij/execution/ui/CommonProgramParametersPanel.java (89%) create mode 100644 platform/lang-impl/src/com/intellij/execution/util/ProgramParametersUtil.java diff --git a/java/execution/impl/src/com/intellij/execution/RunJavaConfiguration.java b/java/execution/impl/src/com/intellij/execution/CommonJavaRunConfigurationParameters.java similarity index 70% rename from java/execution/impl/src/com/intellij/execution/RunJavaConfiguration.java rename to java/execution/impl/src/com/intellij/execution/CommonJavaRunConfigurationParameters.java index 0776098495d6..46333b9668bf 100644 --- a/java/execution/impl/src/com/intellij/execution/RunJavaConfiguration.java +++ b/java/execution/impl/src/com/intellij/execution/CommonJavaRunConfigurationParameters.java @@ -15,18 +15,12 @@ */ package com.intellij.execution; -import com.intellij.openapi.project.Project; import org.jetbrains.annotations.Nullable; -public interface RunJavaConfiguration { - int VM_PARAMETERS_PROPERTY = 0; - int PROGRAM_PARAMETERS_PROPERTY = 1; - int WORKING_DIRECTORY_PROPERTY = 2; +public interface CommonJavaRunConfigurationParameters extends CommonProgramRunConfigurationParameters { + void setVMParameters(String value); - void setProperty(int property, String value); - String getProperty(int property); - - Project getProject(); + String getVMParameters(); boolean isAlternativeJrePathEnabled(); @@ -34,12 +28,11 @@ public interface RunJavaConfiguration { String getAlternativeJrePath(); - void setAlternativeJrePath(String ALTERNATIVE_JRE_PATH); + void setAlternativeJrePath(String path); @Nullable String getRunClass(); @Nullable String getPackage(); - } diff --git a/java/execution/impl/src/com/intellij/execution/RunConfigurationExtension.java b/java/execution/impl/src/com/intellij/execution/RunConfigurationExtension.java index 5f77484789f3..3a833f51f11c 100644 --- a/java/execution/impl/src/com/intellij/execution/RunConfigurationExtension.java +++ b/java/execution/impl/src/com/intellij/execution/RunConfigurationExtension.java @@ -22,7 +22,10 @@ */ package com.intellij.execution; -import com.intellij.execution.configurations.*; +import com.intellij.execution.configurations.JavaParameters; +import com.intellij.execution.configurations.ModuleBasedConfiguration; +import com.intellij.execution.configurations.RunnerSettings; +import com.intellij.execution.configurations.RuntimeConfigurationException; import com.intellij.execution.process.OSProcessHandler; import com.intellij.openapi.extensions.ExtensionPointName; import com.intellij.openapi.extensions.Extensions; @@ -45,13 +48,13 @@ public abstract class RunConfigurationExtension { public static final ExtensionPointName EP_NAME = new ExtensionPointName("com.intellij.runConfigurationExtension"); public static final Key RUN_EXTENSIONS = Key.create("run.extension.elemnts"); public abstract void handleStartProcess(final ModuleBasedConfiguration configuration, final OSProcessHandler handler); - public abstract SettingsEditor createEditor(T configuration); + public abstract SettingsEditor createEditor(T configuration); public abstract String getEditorTitle(); public abstract String getName(); @Nullable - public abstract Icon getIcon(T runConfiguration); + public abstract Icon getIcon(T runConfiguration); - public static void appendEditors(T configuration, SettingsEditorGroup group) { + public static void appendEditors(T configuration, SettingsEditorGroup group) { for (RunConfigurationExtension extension : Extensions.getExtensions(EP_NAME)) { final SettingsEditor editor = extension.createEditor(configuration); if (editor != null) { @@ -60,7 +63,7 @@ public abstract class RunConfigurationExtension { } } - public static Icon getIcon(T configuration, Icon icon) { + public static Icon getIcon(T configuration, Icon icon) { for (RunConfigurationExtension extension : Extensions.getExtensions(EP_NAME)) { final Icon extIcon = extension.getIcon(configuration); if (extIcon != null) { @@ -70,7 +73,7 @@ public abstract class RunConfigurationExtension { return icon; } - public abstract void updateJavaParameters(final T configuration, final JavaParameters params, RunnerSettings runnerSettings); + public abstract void updateJavaParameters(final T configuration, final JavaParameters params, RunnerSettings runnerSettings); protected abstract void readExternal(ModuleBasedConfiguration runConfiguration, Element element) throws InvalidDataException; @@ -124,22 +127,22 @@ public abstract class RunConfigurationExtension { protected abstract void writeExternal(ModuleBasedConfiguration runConfiguration, Element element) throws WriteExternalException; - public abstract void patchConfiguration(T runJavaConfiguration); - public abstract void checkConfiguration(T runJavaConfiguration) throws RuntimeConfigurationException; + public abstract void patchConfiguration(T runJavaConfiguration); + public abstract void checkConfiguration(T runJavaConfiguration) throws RuntimeConfigurationException; - public static void patchCreatedConfiguration(T configuration) { + public static void patchCreatedConfiguration(T configuration) { for (RunConfigurationExtension extension : Extensions.getExtensions(EP_NAME)) { extension.patchConfiguration(configuration); } } - public static void checkConfigurationIsValid(T configuration) throws RuntimeConfigurationException { + public static void checkConfigurationIsValid(T configuration) throws RuntimeConfigurationException { for (RunConfigurationExtension extension : Extensions.getExtensions(EP_NAME)) { extension.checkConfiguration(configuration); } } - public boolean isListenerDisabled(T configuration, Object listener) { + public boolean isListenerDisabled(T configuration, Object listener) { return false; } } \ No newline at end of file diff --git a/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurable2.form b/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurable.form similarity index 97% rename from java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurable2.form rename to java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurable.form index e5b071cd1d10..e0b618cf023b 100644 --- a/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurable2.form +++ b/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurable.form @@ -1,5 +1,5 @@ -
+ @@ -13,7 +13,7 @@ - + diff --git a/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurable2.java b/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurable.java similarity index 93% rename from java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurable2.java rename to java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurable.java index b32098aa306d..e3f37b5cf27e 100644 --- a/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurable2.java +++ b/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurable.java @@ -19,7 +19,7 @@ import com.intellij.execution.ExecutionBundle; import com.intellij.execution.configuration.EnvironmentVariablesComponent; import com.intellij.execution.ui.AlternativeJREPanel; import com.intellij.execution.ui.ClassBrowser; -import com.intellij.execution.ui.CommonJavaParameters; +import com.intellij.execution.ui.CommonJavaParametersPanel; import com.intellij.execution.ui.ConfigurationModuleSelector; import com.intellij.execution.util.JreVersionDetector; import com.intellij.openapi.options.ConfigurationException; @@ -33,8 +33,8 @@ import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -public class ApplicationConfigurable2 extends SettingsEditor { - private CommonJavaParameters myCommonProgramParameters; +public class ApplicationConfigurable extends SettingsEditor { + private CommonJavaParametersPanel myCommonProgramParameters; private LabeledComponent myMainClass; private LabeledComponent myModule; private JPanel myWholePanel; @@ -45,7 +45,7 @@ public class ApplicationConfigurable2 extends SettingsEditor implements RunJavaConfiguration, SingleClassConfiguration, RefactoringListenerProvider { +public class ApplicationConfiguration extends ModuleBasedConfiguration + implements CommonJavaRunConfigurationParameters, SingleClassConfiguration, RefactoringListenerProvider { private static final Logger LOG = Logger.getInstance("com.intellij.execution.application.ApplicationConfiguration"); public String MAIN_CLASS_NAME; @@ -82,7 +83,7 @@ public class ApplicationConfiguration extends ModuleBasedConfiguration getConfigurationEditor() { SettingsEditorGroup group = new SettingsEditorGroup(); - group.addEditor(ExecutionBundle.message("run.configuration.configuration.tab.title"), new ApplicationConfigurable2(getProject())); + group.addEditor(ExecutionBundle.message("run.configuration.configuration.tab.title"), new ApplicationConfigurable(getProject())); RunConfigurationExtension.appendEditors(this, group); group.addEditor(ExecutionBundle.message("logs.tab.title"), new LogConfigurationPanel()); return group; @@ -144,33 +145,28 @@ public class ApplicationConfiguration extends ModuleBasedConfiguration getValidModules() { return JavaRunConfigurationModule.getModulesForClass(getProject(), MAIN_CLASS_NAME); } diff --git a/java/execution/impl/src/com/intellij/execution/ui/CommonJavaParameters.java b/java/execution/impl/src/com/intellij/execution/ui/CommonJavaParametersPanel.java similarity index 62% rename from java/execution/impl/src/com/intellij/execution/ui/CommonJavaParameters.java rename to java/execution/impl/src/com/intellij/execution/ui/CommonJavaParametersPanel.java index 2364ccece6aa..a4534cd7097f 100644 --- a/java/execution/impl/src/com/intellij/execution/ui/CommonJavaParameters.java +++ b/java/execution/impl/src/com/intellij/execution/ui/CommonJavaParametersPanel.java @@ -15,17 +15,17 @@ */ package com.intellij.execution.ui; +import com.intellij.execution.CommonJavaRunConfigurationParameters; import com.intellij.execution.ExecutionBundle; -import com.intellij.execution.RunJavaConfiguration; import com.intellij.openapi.ui.LabeledComponent; import com.intellij.ui.RawCommandLineEditor; import java.awt.*; -public class CommonJavaParameters extends CommonProgramParameters { +public class CommonJavaParametersPanel extends CommonProgramParametersPanel { private LabeledComponent myVMParameters; - public CommonJavaParameters() { + public CommonJavaParametersPanel() { super(); } @@ -42,12 +42,6 @@ public class CommonJavaParameters extends CommonProgramParameters { super.addComponents(c); } - public void applyTo(RunJavaConfiguration configuration) { - configuration.setProperty(RunJavaConfiguration.VM_PARAMETERS_PROPERTY, getVMParameters()); - configuration.setProperty(RunJavaConfiguration.PROGRAM_PARAMETERS_PROPERTY, getProgramParameters()); - configuration.setProperty(RunJavaConfiguration.WORKING_DIRECTORY_PROPERTY, getWorkingDirectory()); - } - public void setVMParameters(String text) { myVMParameters.getComponent().setText(text); } @@ -56,9 +50,13 @@ public class CommonJavaParameters extends CommonProgramParameters { return myVMParameters.getComponent().getText(); } - public void reset(final RunJavaConfiguration configuration) { - setVMParameters(configuration.getProperty(RunJavaConfiguration.VM_PARAMETERS_PROPERTY)); - setProgramParameters(configuration.getProperty(RunJavaConfiguration.PROGRAM_PARAMETERS_PROPERTY)); - setWorkingDirectory(configuration.getProperty(RunJavaConfiguration.WORKING_DIRECTORY_PROPERTY)); + public void applyTo(CommonJavaRunConfigurationParameters configuration) { + super.applyTo(configuration); + configuration.setVMParameters(getVMParameters()); + } + + public void reset(CommonJavaRunConfigurationParameters configuration) { + super.reset(configuration); + setVMParameters(configuration.getVMParameters()); } } diff --git a/java/execution/impl/src/com/intellij/execution/util/JavaParametersUtil.java b/java/execution/impl/src/com/intellij/execution/util/JavaParametersUtil.java index 33f45fbb5314..d858e7f3d9bf 100644 --- a/java/execution/impl/src/com/intellij/execution/util/JavaParametersUtil.java +++ b/java/execution/impl/src/com/intellij/execution/util/JavaParametersUtil.java @@ -16,13 +16,12 @@ package com.intellij.execution.util; import com.intellij.execution.CantRunException; +import com.intellij.execution.CommonJavaRunConfigurationParameters; import com.intellij.execution.JavaExecutionUtil; -import com.intellij.execution.RunJavaConfiguration; import com.intellij.execution.configurations.JavaParameters; -import com.intellij.execution.configurations.ModuleBasedConfiguration; import com.intellij.execution.configurations.RunConfigurationModule; +import com.intellij.execution.configurations.SimpleJavaParameters; import com.intellij.execution.junit.JUnitUtil; -import com.intellij.openapi.components.PathMacroManager; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import com.intellij.openapi.projectRoots.JavaSdk; @@ -33,7 +32,6 @@ import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiFile; -import com.intellij.util.PathUtil; import java.util.HashMap; import java.util.Map; @@ -44,21 +42,20 @@ import java.util.Map; * Time: 10:38:01 PM */ public class JavaParametersUtil { - public static void configureConfiguration(final JavaParameters parameters, final RunJavaConfiguration configuration) { - final Project project = configuration.getProject(); - parameters.getProgramParametersList().addParametersString(configuration.getProperty(RunJavaConfiguration.PROGRAM_PARAMETERS_PROPERTY)); - Module module = null; - if (configuration instanceof ModuleBasedConfiguration) { - module = ((ModuleBasedConfiguration)configuration).getConfigurationModule().getModule(); - } - String vmParameters = configuration.getProperty(RunJavaConfiguration.VM_PARAMETERS_PROPERTY); + public static void configureConfiguration(SimpleJavaParameters parameters, CommonJavaRunConfigurationParameters configuration) { + ProgramParametersUtil.configureConfiguration(parameters, configuration); + + Project project = configuration.getProject(); + Module module = ProgramParametersUtil.getModule(configuration); + + String vmParameters = configuration.getVMParameters(); if (vmParameters != null) { - vmParameters = expandPath(vmParameters, module, project); + vmParameters = ProgramParametersUtil.expandPath(vmParameters, module, project); } if (parameters.getEnv() != null) { final Map envs = new HashMap(); for (String env : parameters.getEnv().keySet()) { - final String value = expandPath(parameters.getEnv().get(env), module, project); + final String value = ProgramParametersUtil.expandPath(parameters.getEnv().get(env), module, project); envs.put(env, value); if (vmParameters != null) { vmParameters = StringUtil.replace(vmParameters, "$" + env + "$", value, false); //replace env usages @@ -67,20 +64,6 @@ public class JavaParametersUtil { parameters.setEnv(envs); } parameters.getVMParametersList().addParametersString(vmParameters); - String workingDirectory = configuration.getProperty(RunJavaConfiguration.WORKING_DIRECTORY_PROPERTY); - if (workingDirectory == null || workingDirectory.trim().length() == 0) { - workingDirectory = PathUtil.getLocalPath(project.getBaseDir()); - } - parameters.setWorkingDirectory(expandPath(workingDirectory, module, project)); - } - - private static String expandPath(String path, Module module, Project project) { - path = PathMacroManager.getInstance(project).expandPath(path); - if (module != null) { - path = PathMacroManager.getInstance(module).expandPath(path); - } - return path; - } public static int getClasspathType(final RunConfigurationModule configurationModule, final String mainClassName, diff --git a/java/execution/impl/src/com/intellij/execution/util/JreVersionDetector.java b/java/execution/impl/src/com/intellij/execution/util/JreVersionDetector.java index 6c345b1a984f..ff2f70b36ba1 100644 --- a/java/execution/impl/src/com/intellij/execution/util/JreVersionDetector.java +++ b/java/execution/impl/src/com/intellij/execution/util/JreVersionDetector.java @@ -22,7 +22,7 @@ */ package com.intellij.execution.util; -import com.intellij.execution.RunJavaConfiguration; +import com.intellij.execution.CommonJavaRunConfigurationParameters; import com.intellij.execution.configurations.ModuleBasedConfiguration; import com.intellij.openapi.module.Module; import com.intellij.openapi.projectRoots.Sdk; @@ -34,7 +34,7 @@ public class JreVersionDetector { private String myLastAlternativeJrePath = null; //awful hack private boolean myLastIsJre50; - public boolean isJre50Configured(final T configuration) { + public boolean isJre50Configured(final T configuration) { if (configuration.isAlternativeJrePathEnabled()) { if (configuration.getAlternativeJrePath().equals(myLastAlternativeJrePath)) return myLastIsJre50; myLastAlternativeJrePath = configuration.getAlternativeJrePath(); diff --git a/platform/lang-api/src/com/intellij/execution/configurations/SimpleJavaParameters.java b/platform/lang-api/src/com/intellij/execution/configurations/SimpleJavaParameters.java index eba12cac5e71..a2ee402f3b16 100644 --- a/platform/lang-api/src/com/intellij/execution/configurations/SimpleJavaParameters.java +++ b/platform/lang-api/src/com/intellij/execution/configurations/SimpleJavaParameters.java @@ -23,7 +23,6 @@ import com.intellij.util.PathsList; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.Nullable; -import java.io.File; import java.nio.charset.Charset; import java.util.HashMap; import java.util.Map; @@ -31,21 +30,15 @@ import java.util.Map; /** * @author Gregory.Shrago */ -public class SimpleJavaParameters { +public class SimpleJavaParameters extends SimpleProgramParameters { private Sdk myJdk; private final PathsList myClassPath = new PathsList(); private String myMainClass; private final ParametersList myVmParameters = new ParametersList(); - private final ParametersList myProgramParameters = new ParametersList(); - private String myWorkingDirectory; private Charset myCharset = CharsetToolkit.getDefaultSystemCharset(); private Map myEnv; private boolean myPassParentEnvs = true; - public String getWorkingDirectory() { - return myWorkingDirectory; - } - public String getMainClass() { return myMainClass; } @@ -68,23 +61,10 @@ public class SimpleJavaParameters { myMainClass = mainClass; } - public void setWorkingDirectory(final File path) { - setWorkingDirectory(path.getPath()); - } - - public void setWorkingDirectory(@NonNls final String path) { - myWorkingDirectory = path; - } - - public ParametersList getVMParametersList() { return myVmParameters; } - public ParametersList getProgramParametersList() { - return myProgramParameters; - } - public Charset getCharset() { return myCharset; } diff --git a/platform/lang-api/src/com/intellij/execution/configurations/SimpleProgramParameters.java b/platform/lang-api/src/com/intellij/execution/configurations/SimpleProgramParameters.java new file mode 100644 index 000000000000..da8d984bbcb3 --- /dev/null +++ b/platform/lang-api/src/com/intellij/execution/configurations/SimpleProgramParameters.java @@ -0,0 +1,40 @@ +/* + * Copyright 2000-2010 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.intellij.execution.configurations; + +import java.io.File; + +public class SimpleProgramParameters { + private final ParametersList myProgramParameters = new ParametersList(); + private String myWorkingDirectory; + + public String getWorkingDirectory() { + return myWorkingDirectory; + } + + public void setWorkingDirectory(File path) { + setWorkingDirectory(path.getPath()); + } + + public void setWorkingDirectory(String path) { + myWorkingDirectory = path; + } + + public ParametersList getProgramParametersList() { + return myProgramParameters; + } +} diff --git a/platform/lang-impl/src/com/intellij/execution/CommonProgramRunConfigurationParameters.java b/platform/lang-impl/src/com/intellij/execution/CommonProgramRunConfigurationParameters.java new file mode 100644 index 000000000000..0f997ce0dcb7 --- /dev/null +++ b/platform/lang-impl/src/com/intellij/execution/CommonProgramRunConfigurationParameters.java @@ -0,0 +1,30 @@ +/* + * Copyright 2000-2010 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.execution; + +import com.intellij.openapi.project.Project; + +public interface CommonProgramRunConfigurationParameters { + Project getProject(); + + void setProgramParameters(String value); + + String getProgramParameters(); + + void setWorkingDirectory(String value); + + String getWorkingDirectory(); +} diff --git a/java/execution/impl/src/com/intellij/execution/ExternalizablePath.java b/platform/lang-impl/src/com/intellij/execution/ExternalizablePath.java similarity index 100% rename from java/execution/impl/src/com/intellij/execution/ExternalizablePath.java rename to platform/lang-impl/src/com/intellij/execution/ExternalizablePath.java diff --git a/java/execution/impl/src/com/intellij/execution/ui/CommonProgramParameters.java b/platform/lang-impl/src/com/intellij/execution/ui/CommonProgramParametersPanel.java similarity index 89% rename from java/execution/impl/src/com/intellij/execution/ui/CommonProgramParameters.java rename to platform/lang-impl/src/com/intellij/execution/ui/CommonProgramParametersPanel.java index 367a085e7e08..ec37a53e50d6 100644 --- a/java/execution/impl/src/com/intellij/execution/ui/CommonProgramParameters.java +++ b/platform/lang-impl/src/com/intellij/execution/ui/CommonProgramParametersPanel.java @@ -15,6 +15,7 @@ */ package com.intellij.execution.ui; +import com.intellij.execution.CommonProgramRunConfigurationParameters; import com.intellij.execution.ExecutionBundle; import com.intellij.openapi.actionSystem.LangDataKeys; import com.intellij.openapi.application.PathMacros; @@ -39,7 +40,7 @@ import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; -public class CommonProgramParameters extends JPanel { +public class CommonProgramParametersPanel extends JPanel { private static final Icon ICON = IconLoader.getIcon("/runConfigurations/variables.png"); private LabeledComponent myProgramParametersComponent; @@ -48,7 +49,7 @@ public class CommonProgramParameters extends JPanel { private Module myModuleContext = null; - public CommonProgramParameters() { + public CommonProgramParametersPanel() { super(new GridBagLayout()); initComponents(); copyDialogCaption(myProgramParametersComponent); @@ -77,7 +78,7 @@ public class CommonProgramParameters extends JPanel { button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { final List macros = new ArrayList(PathMacros.getInstance().getUserMacroNames()); - macros.add("MODULE_DIR"); + if (myModuleContext != null) macros.add("MODULE_DIR"); final JList list = new JList(ArrayUtil.toStringArray(macros)); final JBPopup popup = JBPopupFactory.getInstance().createListPopupBuilder(list).setItemChoosenCallback(new Runnable() { @@ -145,4 +146,14 @@ public class CommonProgramParameters extends JPanel { public void setModuleContext(Module module) { myModuleContext = module; } + + public void applyTo(CommonProgramRunConfigurationParameters configuration) { + configuration.setProgramParameters(getProgramParameters()); + configuration.setWorkingDirectory(getWorkingDirectory()); + } + + public void reset(CommonProgramRunConfigurationParameters configuration) { + setProgramParameters(configuration.getProgramParameters()); + setWorkingDirectory(configuration.getWorkingDirectory()); + } } diff --git a/platform/lang-impl/src/com/intellij/execution/util/ProgramParametersUtil.java b/platform/lang-impl/src/com/intellij/execution/util/ProgramParametersUtil.java new file mode 100644 index 000000000000..b5a76dec77bc --- /dev/null +++ b/platform/lang-impl/src/com/intellij/execution/util/ProgramParametersUtil.java @@ -0,0 +1,64 @@ +/* + * Copyright 2000-2010 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.execution.util; + +import com.intellij.execution.CommonProgramRunConfigurationParameters; +import com.intellij.execution.configurations.ModuleBasedConfiguration; +import com.intellij.execution.configurations.SimpleProgramParameters; +import com.intellij.openapi.components.PathMacroManager; +import com.intellij.openapi.module.Module; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.io.FileUtil; +import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.util.PathUtil; +import org.jetbrains.annotations.Nullable; + +public class ProgramParametersUtil { + public static void configureConfiguration(SimpleProgramParameters parameters, CommonProgramRunConfigurationParameters configuration) { + Project project = configuration.getProject(); + Module module = getModule(configuration); + + parameters.getProgramParametersList().addParametersString(configuration.getProgramParameters()); + + String workingDirectory = configuration.getWorkingDirectory(); + VirtualFile baseDir = project.getBaseDir(); + + if (workingDirectory == null || workingDirectory.trim().length() == 0) { + workingDirectory = PathUtil.getLocalPath(baseDir); + } + workingDirectory = expandPath(workingDirectory, module, project); + if (!FileUtil.isAbsolute(workingDirectory) && baseDir != null) { + workingDirectory = baseDir.getPath() + "/" + workingDirectory; + } + parameters.setWorkingDirectory(workingDirectory); + } + + protected static String expandPath(String path, Module module, Project project) { + path = PathMacroManager.getInstance(project).expandPath(path); + if (module != null) { + path = PathMacroManager.getInstance(module).expandPath(path); + } + return path; + } + + @Nullable + protected static Module getModule(CommonProgramRunConfigurationParameters configuration) { + if (configuration instanceof ModuleBasedConfiguration) { + return ((ModuleBasedConfiguration)configuration).getConfigurationModule().getModule(); + } + return null; + } +} diff --git a/plugins/junit/src/com/intellij/execution/junit/JUnitConfiguration.java b/plugins/junit/src/com/intellij/execution/junit/JUnitConfiguration.java index c12d79f5c131..9118d48d6e60 100644 --- a/plugins/junit/src/com/intellij/execution/junit/JUnitConfiguration.java +++ b/plugins/junit/src/com/intellij/execution/junit/JUnitConfiguration.java @@ -47,7 +47,8 @@ import java.util.Collection; import java.util.LinkedHashMap; import java.util.Map; -public class JUnitConfiguration extends ModuleBasedConfiguration implements RunJavaConfiguration, RefactoringListenerProvider { +public class JUnitConfiguration extends ModuleBasedConfiguration + implements CommonJavaRunConfigurationParameters, RefactoringListenerProvider { private static final Logger LOG = Logger.getInstance("#com.intellij.execution.junit.JUnitConfiguration"); public static final String DEFAULT_PACKAGE_NAME = ExecutionBundle.message("default.package.presentable.name"); @@ -130,12 +131,28 @@ public class JUnitConfiguration extends ModuleBasedConfiguration methodLocation) { final PsiMethod method = methodLocation.getPsiElement(); METHOD_NAME = method.getName(); @@ -327,39 +368,6 @@ public class JUnitConfiguration extends ModuleBasedConfiguration - + diff --git a/plugins/junit/src/com/intellij/execution/junit2/configuration/JUnitConfigurable.java b/plugins/junit/src/com/intellij/execution/junit2/configuration/JUnitConfigurable.java index 1a0cd56b4ae4..29f3cd527afe 100644 --- a/plugins/junit/src/com/intellij/execution/junit2/configuration/JUnitConfigurable.java +++ b/plugins/junit/src/com/intellij/execution/junit2/configuration/JUnitConfigurable.java @@ -26,7 +26,7 @@ import com.intellij.execution.junit.TestClassFilter; import com.intellij.execution.testframework.TestSearchScope; import com.intellij.execution.ui.AlternativeJREPanel; import com.intellij.execution.ui.ClassBrowser; -import com.intellij.execution.ui.CommonJavaParameters; +import com.intellij.execution.ui.CommonJavaParametersPanel; import com.intellij.execution.ui.ConfigurationModuleSelector; import com.intellij.ide.util.PackageChooserDialog; import com.intellij.ide.util.TreeClassChooser; @@ -64,7 +64,7 @@ public class JUnitConfigurable extends SettingsEditor { // Fields private JPanel myWholePanel; private LabeledComponent myModule; - private CommonJavaParameters myCommonJavaParameters; + private CommonJavaParametersPanel myCommonJavaParameters; private EnvironmentVariablesComponent myEnvVariablesComponent; private JRadioButton myWholeProjectScope; private JRadioButton mySingleModuleScope; diff --git a/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGConfiguration.java b/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGConfiguration.java index 384b01884aa0..d5ff224c5aff 100644 --- a/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGConfiguration.java +++ b/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGConfiguration.java @@ -52,7 +52,8 @@ import java.util.Collection; import java.util.List; import java.util.Map; -public class TestNGConfiguration extends ModuleBasedConfiguration implements RunJavaConfiguration, RefactoringListenerProvider { +public class TestNGConfiguration extends ModuleBasedConfiguration + implements CommonJavaRunConfigurationParameters, RefactoringListenerProvider { //private TestNGResultsContainer resultsContainer; protected TestData data; protected transient Project project; @@ -166,12 +167,28 @@ public class TestNGConfiguration extends ModuleBasedConfiguration annotationType; private JCheckBox myUseDefaultReportersCheckBox; - private final CommonJavaParameters commonJavaParameters = new CommonJavaParameters(); + private final CommonJavaParametersPanel commonJavaParameters = new CommonJavaParametersPanel(); private ArrayList propertiesList; private TestNGListenersTableModel listenerModel; diff --git a/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGRunnableState.java b/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGRunnableState.java index 9f0c3d7b6db4..3679f9b40328 100644 --- a/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGRunnableState.java +++ b/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGRunnableState.java @@ -207,7 +207,7 @@ public class TestNGRunnableState extends JavaCommandLineState { javaParameters.setupEnvs(config.getPersistantData().getEnvs(), config.getPersistantData().PASS_PARENT_ENVS); javaParameters.getVMParametersList().add("-ea"); javaParameters.setMainClass("org.testng.RemoteTestNGStarter"); - javaParameters.setWorkingDirectory(config.getProperty(RunJavaConfiguration.WORKING_DIRECTORY_PROPERTY)); + javaParameters.setWorkingDirectory(config.getWorkingDirectory()); javaParameters.getClassPath().add(PathUtil.getJarPathForClass(RemoteTestNGStarter.class)); //the next few lines are awkward for a reason, using compareTo for some reason causes a JVM class verification error! diff --git a/plugins/testng/src/com/theoryinpractice/testng/model/TestData.java b/plugins/testng/src/com/theoryinpractice/testng/model/TestData.java index 32280e92db2e..c0e75ba05abe 100644 --- a/plugins/testng/src/com/theoryinpractice/testng/model/TestData.java +++ b/plugins/testng/src/com/theoryinpractice/testng/model/TestData.java @@ -18,7 +18,6 @@ package com.theoryinpractice.testng.model; import com.intellij.execution.ExternalizablePath; import com.intellij.execution.JavaExecutionUtil; import com.intellij.execution.Location; -import com.intellij.execution.RunJavaConfiguration; import com.intellij.execution.configurations.JavaRunConfigurationModule; import com.intellij.execution.junit.JUnitUtil; import com.intellij.execution.testframework.TestSearchScope; @@ -98,6 +97,30 @@ public class TestData implements Cloneable return ANNOTATION_TYPE == null ? "" : ANNOTATION_TYPE; } + public void setVMParameters(String value) { + VM_PARAMETERS = value; + } + + public String getVMParameters() { + return VM_PARAMETERS; + } + + public void setProgramParameters(String value) { + PARAMETERS = value; + } + + public String getProgramParameters() { + return PARAMETERS; + } + + public void setWorkingDirectory(String value) { + WORKING_DIRECTORY = ExternalizablePath.urlValue(value); + } + + public String getWorkingDirectory(Project project) { + return ExternalizablePath.localPathValue(WORKING_DIRECTORY); + } + @Override public boolean equals(Object obj) { if (!(obj instanceof TestData)) { @@ -148,50 +171,6 @@ public class TestData implements Cloneable return data; } - public String getProperty(int type, Project project) { - switch (type) { - case RunJavaConfiguration.PROGRAM_PARAMETERS_PROPERTY: - return PARAMETERS; - - case RunJavaConfiguration.VM_PARAMETERS_PROPERTY: - return VM_PARAMETERS; - - case RunJavaConfiguration.WORKING_DIRECTORY_PROPERTY: - return getWorkingDirectory(project); - } - throw new RuntimeException("Unknown property: " + type); - } - - private String getWorkingDirectory(Project project) { - if (WORKING_DIRECTORY != null && WORKING_DIRECTORY.length() > 0) - return ExternalizablePath.localPathValue(WORKING_DIRECTORY); - - return project.getBaseDir().getPath(); - } - - public void setProperty(int type, String value, Project project) { - switch (type) { - case RunJavaConfiguration.PROGRAM_PARAMETERS_PROPERTY: - PARAMETERS = value; - break; - - case RunJavaConfiguration.VM_PARAMETERS_PROPERTY: - VM_PARAMETERS = value; - break; - - case RunJavaConfiguration.WORKING_DIRECTORY_PROPERTY: - //value = value.replace('/', File.separatorChar); - //if(value.length() > 0 && value.charAt(0) != File.separatorChar) { - // value = new File(project.getProjectFilePath()).getParent() + File.separatorChar + value; - //} - WORKING_DIRECTORY = ExternalizablePath.urlValue(value); - break; - - default: - throw new RuntimeException("Unknown property: " + type); - } - } - public boolean isGeneratedName(String s, JavaRunConfigurationModule config) { if (TEST_OBJECT == null) return true; if ((TestType.CLASS.getType().equals(TEST_OBJECT) || TestType.METHOD.getType().equals(TEST_OBJECT)) && getMainClassName().length() == 0) diff --git a/plugins/ui-designer/src/com/intellij/uiDesigner/snapShooter/SnapShooterConfigurationExtension.java b/plugins/ui-designer/src/com/intellij/uiDesigner/snapShooter/SnapShooterConfigurationExtension.java index 73cb3e901faf..c0c8733d93ef 100644 --- a/plugins/ui-designer/src/com/intellij/uiDesigner/snapShooter/SnapShooterConfigurationExtension.java +++ b/plugins/ui-designer/src/com/intellij/uiDesigner/snapShooter/SnapShooterConfigurationExtension.java @@ -16,8 +16,8 @@ package com.intellij.uiDesigner.snapShooter; +import com.intellij.execution.CommonJavaRunConfigurationParameters; import com.intellij.execution.RunConfigurationExtension; -import com.intellij.execution.RunJavaConfiguration; import com.intellij.execution.application.ApplicationConfiguration; import com.intellij.execution.configurations.JavaParameters; import com.intellij.execution.configurations.ModuleBasedConfiguration; @@ -56,7 +56,7 @@ import java.util.TreeSet; */ public class SnapShooterConfigurationExtension extends RunConfigurationExtension { @Override - public void updateJavaParameters(T configuration, JavaParameters params, RunnerSettings runnerSettings) { + public void updateJavaParameters(T configuration, JavaParameters params, RunnerSettings runnerSettings) { if (!(configuration instanceof ApplicationConfiguration)) { return; } @@ -118,7 +118,7 @@ public class SnapShooterConfigurationExtension extends RunConfigurationExtension } @Override - public SettingsEditor createEditor(T configuration) { + public SettingsEditor createEditor(T configuration) { return null; } @@ -133,7 +133,7 @@ public class SnapShooterConfigurationExtension extends RunConfigurationExtension } @Override - public Icon getIcon(T runConfiguration) { + public Icon getIcon(T runConfiguration) { return null; } @@ -148,11 +148,11 @@ public class SnapShooterConfigurationExtension extends RunConfigurationExtension } @Override - public void patchConfiguration(T runJavaConfiguration) { + public void patchConfiguration(T runJavaConfiguration) { } @Override - public void checkConfiguration(T runJavaConfiguration) + public void checkConfiguration(T runJavaConfiguration) throws RuntimeConfigurationException { }