Run Configurations: CommonProgramParameters extracted

This commit is contained in:
Anton Makeev
2010-05-11 14:46:15 +04:00
parent 738f02289a
commit 8a6c987ae4
22 changed files with 331 additions and 235 deletions
@@ -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();
}
@@ -1,64 +0,0 @@
/*
* Copyright 2000-2009 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.util.InvalidDataException;
import com.intellij.openapi.util.JDOMExternalizable;
import com.intellij.openapi.util.WriteExternalException;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFileManager;
import org.jdom.Element;
import org.jetbrains.annotations.NonNls;
import java.io.File;
/**
* @author dyoma
*/
public class ExternalizablePath implements JDOMExternalizable {
@NonNls private static final String VALUE_ATTRIBUTE = "value";
private String myUrl;
public void readExternal(final Element element) throws InvalidDataException {
final String value = element.getAttributeValue(VALUE_ATTRIBUTE);
myUrl = value != null ? value : "";
final String protocol = VirtualFileManager.extractProtocol(myUrl);
if (protocol == null) myUrl = urlValue(myUrl);
}
public void writeExternal(final Element element) throws WriteExternalException {
element.setAttribute(VALUE_ATTRIBUTE, myUrl);
}
public String getLocalPath() {
return localPathValue(myUrl);
}
public static String urlValue(String localPath) {
if (localPath == null) return "";
localPath = localPath.trim();
if (localPath.length() == 0) return "";
return VirtualFileManager.constructUrl(LocalFileSystem.PROTOCOL, localPath.replace(File.separatorChar, '/'));
}
public static String localPathValue(String url) {
if (url == null) return "";
url = url.trim();
if (url.length() == 0) return "";
return VirtualFileManager.extractPath(url).replace('/', File.separatorChar);
}
}
@@ -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<RunConfigurationExtension> EP_NAME = new ExtensionPointName<RunConfigurationExtension>("com.intellij.runConfigurationExtension");
public static final Key<List> RUN_EXTENSIONS = Key.create("run.extension.elemnts");
public abstract void handleStartProcess(final ModuleBasedConfiguration configuration, final OSProcessHandler handler);
public abstract <T extends ModuleBasedConfiguration & RunJavaConfiguration> SettingsEditor createEditor(T configuration);
public abstract <T extends ModuleBasedConfiguration & CommonJavaRunConfigurationParameters> SettingsEditor createEditor(T configuration);
public abstract String getEditorTitle();
public abstract String getName();
@Nullable
public abstract <T extends ModuleBasedConfiguration & RunJavaConfiguration> Icon getIcon(T runConfiguration);
public abstract <T extends ModuleBasedConfiguration & CommonJavaRunConfigurationParameters> Icon getIcon(T runConfiguration);
public static <T extends ModuleBasedConfiguration & RunJavaConfiguration> void appendEditors(T configuration, SettingsEditorGroup<T> group) {
public static <T extends ModuleBasedConfiguration & CommonJavaRunConfigurationParameters> void appendEditors(T configuration, SettingsEditorGroup<T> 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 <T extends ModuleBasedConfiguration & RunJavaConfiguration> Icon getIcon(T configuration, Icon icon) {
public static <T extends ModuleBasedConfiguration & CommonJavaRunConfigurationParameters> 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 <T extends ModuleBasedConfiguration & RunJavaConfiguration> void updateJavaParameters(final T configuration, final JavaParameters params, RunnerSettings runnerSettings);
public abstract <T extends ModuleBasedConfiguration & CommonJavaRunConfigurationParameters> 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 <T extends ModuleBasedConfiguration & RunJavaConfiguration> void patchConfiguration(T runJavaConfiguration);
public abstract <T extends ModuleBasedConfiguration & RunJavaConfiguration> void checkConfiguration(T runJavaConfiguration) throws RuntimeConfigurationException;
public abstract <T extends ModuleBasedConfiguration & CommonJavaRunConfigurationParameters> void patchConfiguration(T runJavaConfiguration);
public abstract <T extends ModuleBasedConfiguration & CommonJavaRunConfigurationParameters> void checkConfiguration(T runJavaConfiguration) throws RuntimeConfigurationException;
public static <T extends ModuleBasedConfiguration & RunJavaConfiguration> void patchCreatedConfiguration(T configuration) {
public static <T extends ModuleBasedConfiguration & CommonJavaRunConfigurationParameters> void patchCreatedConfiguration(T configuration) {
for (RunConfigurationExtension extension : Extensions.getExtensions(EP_NAME)) {
extension.patchConfiguration(configuration);
}
}
public static <T extends ModuleBasedConfiguration & RunJavaConfiguration> void checkConfigurationIsValid(T configuration) throws RuntimeConfigurationException {
public static <T extends ModuleBasedConfiguration & CommonJavaRunConfigurationParameters> void checkConfigurationIsValid(T configuration) throws RuntimeConfigurationException {
for (RunConfigurationExtension extension : Extensions.getExtensions(EP_NAME)) {
extension.checkConfiguration(configuration);
}
}
public <T extends ModuleBasedConfiguration & RunJavaConfiguration> boolean isListenerDisabled(T configuration, Object listener) {
public <T extends ModuleBasedConfiguration & CommonJavaRunConfigurationParameters> boolean isListenerDisabled(T configuration, Object listener) {
return false;
}
}
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="com.intellij.execution.application.ApplicationConfigurable2">
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="com.intellij.execution.application.ApplicationConfigurable">
<grid id="93687" binding="myWholePanel" layout-manager="GridLayoutManager" row-count="7" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="10">
<margin top="0" left="0" bottom="0" right="0"/>
<constraints>
@@ -13,7 +13,7 @@
<grid row="6" column="0" row-span="1" col-span="1" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/>
</constraints>
</vspacer>
<component id="50b09" class="com.intellij.execution.ui.CommonJavaParameters" binding="myCommonProgramParameters">
<component id="50b09" class="com.intellij.execution.ui.CommonJavaParametersPanel" binding="myCommonProgramParameters">
<constraints>
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
</constraints>
@@ -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<ApplicationConfiguration> {
private CommonJavaParameters myCommonProgramParameters;
public class ApplicationConfigurable extends SettingsEditor<ApplicationConfiguration> {
private CommonJavaParametersPanel myCommonProgramParameters;
private LabeledComponent<TextFieldWithBrowseButton> myMainClass;
private LabeledComponent<JComboBox> myModule;
private JPanel myWholePanel;
@@ -45,7 +45,7 @@ public class ApplicationConfigurable2 extends SettingsEditor<ApplicationConfigur
private EnvironmentVariablesComponent myEnvVariablesComponent;
private final JreVersionDetector myVersionDetector = new JreVersionDetector();
public ApplicationConfigurable2(final Project project) {
public ApplicationConfigurable(final Project project) {
myModuleSelector = new ConfigurationModuleSelector(project, myModule.getComponent());
myModule.getComponent().addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
@@ -98,7 +98,7 @@ public class ApplicationConfigurable2 extends SettingsEditor<ApplicationConfigur
return myMainClass.getComponent();
}
public CommonJavaParameters getCommonProgramParameters() {
public CommonJavaParametersPanel getCommonProgramParameters() {
return myCommonProgramParameters;
}
@@ -48,7 +48,8 @@ import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;
public class ApplicationConfiguration extends ModuleBasedConfiguration<JavaRunConfigurationModule> implements RunJavaConfiguration, SingleClassConfiguration, RefactoringListenerProvider {
public class ApplicationConfiguration extends ModuleBasedConfiguration<JavaRunConfigurationModule>
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<JavaRunCo
public SettingsEditor<? extends RunConfiguration> getConfigurationEditor() {
SettingsEditorGroup<ApplicationConfiguration> group = new SettingsEditorGroup<ApplicationConfiguration>();
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<JavaRunCo
RunConfigurationExtension.checkConfigurationIsValid(this);
}
public void setProperty(final int property, final String value) {
switch (property) {
case PROGRAM_PARAMETERS_PROPERTY:
PROGRAM_PARAMETERS = value;
break;
case VM_PARAMETERS_PROPERTY:
VM_PARAMETERS = value;
break;
case WORKING_DIRECTORY_PROPERTY:
WORKING_DIRECTORY = ExternalizablePath.urlValue(value);
break;
default:
throw new RuntimeException("Unknown property: " + property);
}
public void setVMParameters(String value) {
VM_PARAMETERS = value;
}
public String getProperty(final int property) {
switch (property) {
case PROGRAM_PARAMETERS_PROPERTY:
return PROGRAM_PARAMETERS;
case VM_PARAMETERS_PROPERTY:
return VM_PARAMETERS;
case WORKING_DIRECTORY_PROPERTY:
return getWorkingDirectory();
default:
throw new RuntimeException("Unknown property: " + property);
}
public String getVMParameters() {
return VM_PARAMETERS;
}
public void setProgramParameters(String value) {
PROGRAM_PARAMETERS = value;
}
public String getProgramParameters() {
return PROGRAM_PARAMETERS;
}
public void setWorkingDirectory(String value) {
WORKING_DIRECTORY = ExternalizablePath.urlValue(value);
}
public String getWorkingDirectory() {
return ExternalizablePath.localPathValue(WORKING_DIRECTORY);
}
@Nullable
@@ -183,7 +179,6 @@ public class ApplicationConfiguration extends ModuleBasedConfiguration<JavaRunCo
return null;
}
public boolean isAlternativeJrePathEnabled() {
return ALTERNATIVE_JRE_PATH_ENABLED;
}
@@ -196,15 +191,10 @@ public class ApplicationConfiguration extends ModuleBasedConfiguration<JavaRunCo
return ALTERNATIVE_JRE_PATH;
}
public void setAlternativeJrePath(String ALTERNATIVE_JRE_PATH) {
this.ALTERNATIVE_JRE_PATH = ALTERNATIVE_JRE_PATH;
public void setAlternativeJrePath(String path) {
this.ALTERNATIVE_JRE_PATH = path;
}
private String getWorkingDirectory() {
return ExternalizablePath.localPathValue(WORKING_DIRECTORY);
}
public Collection<Module> getValidModules() {
return JavaRunConfigurationModule.getModulesForClass(getProject(), MAIN_CLASS_NAME);
}
@@ -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<RawCommandLineEditor> 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());
}
}
@@ -1,148 +0,0 @@
/*
* 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.ui;
import com.intellij.execution.ExecutionBundle;
import com.intellij.openapi.actionSystem.LangDataKeys;
import com.intellij.openapi.application.PathMacros;
import com.intellij.openapi.fileChooser.FileChooser;
import com.intellij.openapi.fileChooser.FileChooserDescriptor;
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.ui.FixedSizeButton;
import com.intellij.openapi.ui.LabeledComponent;
import com.intellij.openapi.ui.TextFieldWithBrowseButton;
import com.intellij.openapi.ui.popup.JBPopup;
import com.intellij.openapi.ui.popup.JBPopupFactory;
import com.intellij.openapi.util.IconLoader;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.ui.RawCommandLineEditor;
import com.intellij.util.ArrayUtil;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
public class CommonProgramParameters extends JPanel {
private static final Icon ICON = IconLoader.getIcon("/runConfigurations/variables.png");
private LabeledComponent<RawCommandLineEditor> myProgramParametersComponent;
private LabeledComponent<JPanel> myWorkingDirectoryComponent;
private TextFieldWithBrowseButton myWorkingDirectoryField;
private Module myModuleContext = null;
public CommonProgramParameters() {
super(new GridBagLayout());
initComponents();
copyDialogCaption(myProgramParametersComponent);
}
protected void initComponents() {
myProgramParametersComponent = LabeledComponent.create(new RawCommandLineEditor(),
ExecutionBundle.message("run.configuration.program.parameters"));
final JPanel panel = new JPanel(new BorderLayout());
myWorkingDirectoryField = new TextFieldWithBrowseButton(new ActionListener() {
public void actionPerformed(ActionEvent e) {
FileChooserDescriptor fileChooserDescriptor = FileChooserDescriptorFactory.createSingleFolderDescriptor();
fileChooserDescriptor.setTitle(ExecutionBundle.message("select.working.directory.message"));
fileChooserDescriptor.putUserData(LangDataKeys.MODULE_CONTEXT, myModuleContext);
VirtualFile[] files = FileChooser.chooseFiles(myWorkingDirectoryComponent, fileChooserDescriptor);
if (files.length != 0) {
setWorkingDirectory(files[0].getPresentableUrl());
}
}
});
panel.add(myWorkingDirectoryField, BorderLayout.CENTER);
final FixedSizeButton button = new FixedSizeButton(myWorkingDirectoryField);
button.setIcon(ICON);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
final List<String> macros = new ArrayList<String>(PathMacros.getInstance().getUserMacroNames());
macros.add("MODULE_DIR");
final JList list = new JList(ArrayUtil.toStringArray(macros));
final JBPopup popup = JBPopupFactory.getInstance().createListPopupBuilder(list).setItemChoosenCallback(new Runnable() {
public void run() {
final Object value = list.getSelectedValue();
if (value instanceof String) {
setWorkingDirectory("$" + value + "$");
}
}
}).setMovable(false).setResizable(false).createPopup();
popup.showUnderneathOf(button);
}
});
panel.add(button, BorderLayout.EAST);
myWorkingDirectoryComponent = LabeledComponent.create(panel, ExecutionBundle.message("run.configuration.working.directory.label"));
GridBagConstraints c = new GridBagConstraints();
c.weightx = 1;
c.fill = GridBagConstraints.HORIZONTAL;
c.anchor = GridBagConstraints.LINE_START;
c.gridx = 0;
addComponents(c);
}
protected void addComponents(GridBagConstraints c) {
c.gridy++;
add(myProgramParametersComponent, c);
c.gridy++;
add(myWorkingDirectoryComponent, c);
}
protected void copyDialogCaption(final LabeledComponent<RawCommandLineEditor> component) {
final RawCommandLineEditor rawCommandLineEditor = component.getComponent();
rawCommandLineEditor.setDialogCaption(component.getRawText());
component.getLabel().setLabelFor(rawCommandLineEditor.getTextField());
}
public String getProgramParametersLabel() {
return myProgramParametersComponent.getText();
}
public void setProgramParametersLabel(String textWithMnemonic) {
myProgramParametersComponent.setText(textWithMnemonic);
copyDialogCaption(myProgramParametersComponent);
}
public String getProgramParameters() {
return myProgramParametersComponent.getComponent().getText();
}
public void setProgramParameters(String text) {
myProgramParametersComponent.getComponent().setText(text);
}
public String getWorkingDirectory() {
return myWorkingDirectoryField.getText();
}
public void setWorkingDirectory(String text) {
myWorkingDirectoryField.setText(text);
}
public void setModuleContext(Module module) {
myModuleContext = module;
}
}
@@ -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<String, String> envs = new HashMap<String, String>();
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,
@@ -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 <T extends ModuleBasedConfiguration & RunJavaConfiguration> boolean isJre50Configured(final T configuration) {
public <T extends ModuleBasedConfiguration & CommonJavaRunConfigurationParameters> boolean isJre50Configured(final T configuration) {
if (configuration.isAlternativeJrePathEnabled()) {
if (configuration.getAlternativeJrePath().equals(myLastAlternativeJrePath)) return myLastIsJre50;
myLastAlternativeJrePath = configuration.getAlternativeJrePath();