common Java options in Jet run configuration
This commit is contained in:
@@ -1,8 +1,7 @@
|
|||||||
package org.jetbrains.jet.plugin.run;
|
package org.jetbrains.jet.plugin.run;
|
||||||
|
|
||||||
import com.intellij.execution.ExecutionException;
|
import com.intellij.execution.*;
|
||||||
import com.intellij.execution.Executor;
|
import com.intellij.execution.configuration.EnvironmentVariablesComponent;
|
||||||
import com.intellij.execution.JavaRunConfigurationExtensionManager;
|
|
||||||
import com.intellij.execution.configurations.*;
|
import com.intellij.execution.configurations.*;
|
||||||
import com.intellij.execution.filters.TextConsoleBuilderFactory;
|
import com.intellij.execution.filters.TextConsoleBuilderFactory;
|
||||||
import com.intellij.execution.runners.ExecutionEnvironment;
|
import com.intellij.execution.runners.ExecutionEnvironment;
|
||||||
@@ -19,12 +18,21 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author yole
|
* @author yole
|
||||||
*/
|
*/
|
||||||
public class JetRunConfiguration extends ModuleBasedConfiguration<RunConfigurationModule> {
|
public class JetRunConfiguration extends ModuleBasedConfiguration<RunConfigurationModule> implements CommonJavaRunConfigurationParameters {
|
||||||
public String MAIN_CLASS_NAME;
|
public String MAIN_CLASS_NAME;
|
||||||
|
public String VM_PARAMETERS;
|
||||||
|
public String PROGRAM_PARAMETERS;
|
||||||
|
public String WORKING_DIRECTORY;
|
||||||
|
public boolean ALTERNATIVE_JRE_PATH_ENABLED;
|
||||||
|
public String ALTERNATIVE_JRE_PATH;
|
||||||
|
private Map<String,String> myEnvs = new LinkedHashMap<String, String>();
|
||||||
|
public boolean PASS_PARENT_ENVS = true;
|
||||||
|
|
||||||
public JetRunConfiguration(String name, RunConfigurationModule runConfigurationModule, ConfigurationFactory factory) {
|
public JetRunConfiguration(String name, RunConfigurationModule runConfigurationModule, ConfigurationFactory factory) {
|
||||||
super(name, runConfigurationModule, factory);
|
super(name, runConfigurationModule, factory);
|
||||||
@@ -47,21 +55,91 @@ public class JetRunConfiguration extends ModuleBasedConfiguration<RunConfigurati
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void readExternal(final Element element) throws InvalidDataException {
|
public void readExternal(final Element element) throws InvalidDataException {
|
||||||
PathMacroManager.getInstance(getProject()).expandPaths(element);
|
PathMacroManager.getInstance(getProject()).expandPaths(element);
|
||||||
super.readExternal(element);
|
super.readExternal(element);
|
||||||
|
|
||||||
JavaRunConfigurationExtensionManager.getInstance().readExternal(this, element);
|
JavaRunConfigurationExtensionManager.getInstance().readExternal(this, element);
|
||||||
DefaultJDOMExternalizer.readExternal(this, element);
|
DefaultJDOMExternalizer.readExternal(this, element);
|
||||||
readModule(element);
|
readModule(element);
|
||||||
|
EnvironmentVariablesComponent.readExternal(element, getEnvs());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void writeExternal(final Element element) throws WriteExternalException {
|
public void writeExternal(final Element element) throws WriteExternalException {
|
||||||
super.writeExternal(element);
|
super.writeExternal(element);
|
||||||
JavaRunConfigurationExtensionManager.getInstance().writeExternal(this, element);
|
JavaRunConfigurationExtensionManager.getInstance().writeExternal(this, element);
|
||||||
DefaultJDOMExternalizer.writeExternal(this, element);
|
DefaultJDOMExternalizer.writeExternal(this, element);
|
||||||
writeModule(element);
|
writeModule(element);
|
||||||
PathMacroManager.getInstance(getProject()).collapsePathsRecursively(element);
|
EnvironmentVariablesComponent.writeExternal(element, getEnvs());
|
||||||
|
PathMacroManager.getInstance(getProject()).collapsePathsRecursively(element);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setVMParameters(String value) {
|
||||||
|
VM_PARAMETERS = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPassParentEnvs(boolean passParentEnvs) {
|
||||||
|
PASS_PARENT_ENVS = passParentEnvs;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public Map<String, String> getEnvs() {
|
||||||
|
return myEnvs;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEnvs(@NotNull final Map<String, String> envs) {
|
||||||
|
this.myEnvs = envs;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isPassParentEnvs() {
|
||||||
|
return PASS_PARENT_ENVS;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getRunClass() {
|
||||||
|
return MAIN_CLASS_NAME;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getPackage() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isAlternativeJrePathEnabled() {
|
||||||
|
return ALTERNATIVE_JRE_PATH_ENABLED;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAlternativeJrePathEnabled(boolean enabled) {
|
||||||
|
ALTERNATIVE_JRE_PATH_ENABLED = enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAlternativeJrePath() {
|
||||||
|
return ALTERNATIVE_JRE_PATH;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAlternativeJrePath(String path) {
|
||||||
|
ALTERNATIVE_JRE_PATH = path;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RunProfileState getState(@NotNull Executor executor, @NotNull ExecutionEnvironment executionEnvironment) throws ExecutionException {
|
public RunProfileState getState(@NotNull Executor executor, @NotNull ExecutionEnvironment executionEnvironment) throws ExecutionException {
|
||||||
final JavaCommandLineState state = new MyJavaCommandLineState(executionEnvironment);
|
final JavaCommandLineState state = new MyJavaCommandLineState(executionEnvironment);
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="org.jetbrains.jet.plugin.run.JetRunConfigurationEditor">
|
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="org.jetbrains.jet.plugin.run.JetRunConfigurationEditor">
|
||||||
<grid id="27dc6" binding="myMainPanel" layout-manager="GridLayoutManager" row-count="3" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
<grid id="27dc6" binding="myMainPanel" layout-manager="GridLayoutManager" row-count="4" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||||
<margin top="0" left="0" bottom="0" right="0"/>
|
<margin top="0" left="0" bottom="0" right="0"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<xy x="20" y="20" width="500" height="400"/>
|
<xy x="20" y="20" width="500" height="400"/>
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
</component>
|
</component>
|
||||||
<vspacer id="f22cb">
|
<vspacer id="f22cb">
|
||||||
<constraints>
|
<constraints>
|
||||||
<grid row="2" column="0" row-span="1" col-span="1" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/>
|
<grid row="3" 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>
|
</constraints>
|
||||||
</vspacer>
|
</vspacer>
|
||||||
<component id="1378e" class="javax.swing.JTextField" binding="myMainClassField">
|
<component id="1378e" class="javax.swing.JTextField" binding="myMainClassField">
|
||||||
@@ -31,12 +31,18 @@
|
|||||||
</component>
|
</component>
|
||||||
<grid id="53a18" binding="myModuleChooserHolder" layout-manager="BorderLayout" hgap="0" vgap="0">
|
<grid id="53a18" binding="myModuleChooserHolder" layout-manager="BorderLayout" hgap="0" vgap="0">
|
||||||
<constraints>
|
<constraints>
|
||||||
<grid row="1" column="0" row-span="1" col-span="2" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
|
<grid row="2" column="0" row-span="1" col-span="2" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<properties/>
|
<properties/>
|
||||||
<border type="none"/>
|
<border type="none"/>
|
||||||
<children/>
|
<children/>
|
||||||
</grid>
|
</grid>
|
||||||
|
<component id="d9fac" class="com.intellij.execution.ui.CommonJavaParametersPanel" binding="myCommonProgramParameters">
|
||||||
|
<constraints>
|
||||||
|
<grid row="1" column="0" row-span="1" col-span="2" vsize-policy="3" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
|
||||||
|
</constraints>
|
||||||
|
<properties/>
|
||||||
|
</component>
|
||||||
</children>
|
</children>
|
||||||
</grid>
|
</grid>
|
||||||
</form>
|
</form>
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package org.jetbrains.jet.plugin.run;
|
package org.jetbrains.jet.plugin.run;
|
||||||
|
|
||||||
|
import com.intellij.execution.ui.CommonJavaParametersPanel;
|
||||||
import com.intellij.execution.ui.ConfigurationModuleSelector;
|
import com.intellij.execution.ui.ConfigurationModuleSelector;
|
||||||
import com.intellij.openapi.options.ConfigurationException;
|
import com.intellij.openapi.options.ConfigurationException;
|
||||||
import com.intellij.openapi.options.SettingsEditor;
|
import com.intellij.openapi.options.SettingsEditor;
|
||||||
@@ -9,6 +10,8 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author yole
|
* @author yole
|
||||||
@@ -17,16 +20,24 @@ public class JetRunConfigurationEditor extends SettingsEditor<JetRunConfiguratio
|
|||||||
private JPanel myMainPanel;
|
private JPanel myMainPanel;
|
||||||
private JTextField myMainClassField;
|
private JTextField myMainClassField;
|
||||||
private JPanel myModuleChooserHolder;
|
private JPanel myModuleChooserHolder;
|
||||||
|
private CommonJavaParametersPanel myCommonProgramParameters;
|
||||||
private ConfigurationModuleSelector myModuleSelector;
|
private ConfigurationModuleSelector myModuleSelector;
|
||||||
|
|
||||||
public JetRunConfigurationEditor(final Project project) {
|
public JetRunConfigurationEditor(final Project project) {
|
||||||
LabeledComponent<JComboBox> moduleChooser = LabeledComponent.create(new JComboBox(), "Use classpath and JDK of module:");
|
LabeledComponent<JComboBox> moduleChooser = LabeledComponent.create(new JComboBox(), "Use classpath and JDK of module:");
|
||||||
myModuleChooserHolder.add(moduleChooser, BorderLayout.CENTER);
|
myModuleChooserHolder.add(moduleChooser, BorderLayout.CENTER);
|
||||||
myModuleSelector = new ConfigurationModuleSelector(project, moduleChooser.getComponent());
|
myModuleSelector = new ConfigurationModuleSelector(project, moduleChooser.getComponent());
|
||||||
|
myCommonProgramParameters.setModuleContext(myModuleSelector.getModule());
|
||||||
|
moduleChooser.getComponent().addActionListener(new ActionListener() {
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
myCommonProgramParameters.setModuleContext(myModuleSelector.getModule());
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void resetEditorFrom(JetRunConfiguration configuration) {
|
protected void resetEditorFrom(JetRunConfiguration configuration) {
|
||||||
|
myCommonProgramParameters.reset(configuration);
|
||||||
myMainClassField.setText(configuration.MAIN_CLASS_NAME);
|
myMainClassField.setText(configuration.MAIN_CLASS_NAME);
|
||||||
myModuleSelector.reset(configuration);
|
myModuleSelector.reset(configuration);
|
||||||
}
|
}
|
||||||
@@ -34,6 +45,7 @@ public class JetRunConfigurationEditor extends SettingsEditor<JetRunConfiguratio
|
|||||||
@Override
|
@Override
|
||||||
protected void applyEditorTo(JetRunConfiguration configuration) throws ConfigurationException {
|
protected void applyEditorTo(JetRunConfiguration configuration) throws ConfigurationException {
|
||||||
myModuleSelector.applyTo(configuration);
|
myModuleSelector.applyTo(configuration);
|
||||||
|
myCommonProgramParameters.applyTo(configuration);
|
||||||
configuration.MAIN_CLASS_NAME = myMainClassField.getText();
|
configuration.MAIN_CLASS_NAME = myMainClassField.getText();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user