From cdb57d20e5bc4e4cf70f4f2b02aef702cd5a23cc Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Tue, 8 Oct 2019 16:51:16 +0200 Subject: [PATCH] Run configuration sample actually does something functional --- .../DemoConfigurationFactory.java | 13 ++++++- .../configuration/DemoRunConfiguration.java | 34 ++++++++++++++++--- .../DemoRunConfigurationOptions.java | 18 ++++++++++ .../run/configuration/DemoSettingsEditor.form | 2 +- .../run/configuration/DemoSettingsEditor.java | 16 ++++----- 5 files changed, 67 insertions(+), 16 deletions(-) create mode 100644 run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoRunConfigurationOptions.java diff --git a/run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoConfigurationFactory.java b/run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoConfigurationFactory.java index 61945b3c2..116dbdd92 100644 --- a/run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoConfigurationFactory.java +++ b/run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoConfigurationFactory.java @@ -1,7 +1,10 @@ package org.jetbrains.tutorials.run.configuration; import com.intellij.execution.configurations.*; +import com.intellij.openapi.components.BaseState; import com.intellij.openapi.project.Project; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; /** * @author Anna Bulenkova @@ -13,13 +16,21 @@ public class DemoConfigurationFactory extends ConfigurationFactory { super(type); } + @NotNull @Override - public RunConfiguration createTemplateConfiguration(Project project) { + public RunConfiguration createTemplateConfiguration(@NotNull Project project) { return new DemoRunConfiguration(project, this, "Demo"); } + @NotNull @Override public String getName() { return FACTORY_NAME; } + + @Nullable + @Override + public Class getOptionsClass() { + return DemoRunConfigurationOptions.class; + } } diff --git a/run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoRunConfiguration.java b/run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoRunConfiguration.java index 73df39340..f5ed9a775 100644 --- a/run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoRunConfiguration.java +++ b/run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoRunConfiguration.java @@ -2,6 +2,10 @@ package org.jetbrains.tutorials.run.configuration; import com.intellij.execution.*; import com.intellij.execution.configurations.*; +import com.intellij.execution.process.OSProcessHandler; +import com.intellij.execution.process.ProcessHandler; +import com.intellij.execution.process.ProcessHandlerFactory; +import com.intellij.execution.process.ProcessTerminatedListener; import com.intellij.execution.runners.ExecutionEnvironment; import com.intellij.openapi.options.SettingsEditor; import com.intellij.openapi.project.Project; @@ -10,11 +14,25 @@ import org.jetbrains.annotations.*; /** * @author Anna Bulenkova */ -public class DemoRunConfiguration extends RunConfigurationBase { +public class DemoRunConfiguration extends RunConfigurationBase { protected DemoRunConfiguration(Project project, ConfigurationFactory factory, String name) { super(project, factory, name); } + @NotNull + @Override + protected DemoRunConfigurationOptions getOptions() { + return (DemoRunConfigurationOptions) super.getOptions(); + } + + public String getScriptName() { + return getOptions().getScriptName(); + } + + public void setScriptName(String scriptName) { + getOptions().setScriptName(scriptName); + } + @NotNull @Override public SettingsEditor getConfigurationEditor() { @@ -28,8 +46,16 @@ public class DemoRunConfiguration extends RunConfigurationBase { @Nullable @Override - public RunProfileState getState(@NotNull Executor executor, @NotNull ExecutionEnvironment executionEnvironment) throws - ExecutionException { - return null; + public RunProfileState getState(@NotNull Executor executor, @NotNull ExecutionEnvironment executionEnvironment) { + return new CommandLineState(executionEnvironment) { + @NotNull + @Override + protected ProcessHandler startProcess() throws ExecutionException { + GeneralCommandLine commandLine = new GeneralCommandLine(getOptions().getScriptName()); + OSProcessHandler processHandler = ProcessHandlerFactory.getInstance().createColoredProcessHandler(commandLine); + ProcessTerminatedListener.attach(processHandler); + return processHandler; + } + }; } } diff --git a/run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoRunConfigurationOptions.java b/run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoRunConfigurationOptions.java new file mode 100644 index 000000000..3fa680274 --- /dev/null +++ b/run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoRunConfigurationOptions.java @@ -0,0 +1,18 @@ +package org.jetbrains.tutorials.run.configuration; + +import com.intellij.execution.configurations.RunConfigurationOptions; + +/** + * @author yole + */ +public class DemoRunConfigurationOptions extends RunConfigurationOptions { + private String myScriptName; + + public String getScriptName() { + return myScriptName; + } + + public void setScriptName(String myScriptName) { + this.myScriptName = myScriptName; + } +} diff --git a/run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoSettingsEditor.form b/run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoSettingsEditor.form index d9dd1f253..c845e00fc 100644 --- a/run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoSettingsEditor.form +++ b/run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoSettingsEditor.form @@ -8,7 +8,7 @@ - + diff --git a/run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoSettingsEditor.java b/run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoSettingsEditor.java index 4447b86a5..eb001b027 100644 --- a/run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoSettingsEditor.java +++ b/run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoSettingsEditor.java @@ -6,25 +6,21 @@ import org.jetbrains.annotations.NotNull; import javax.swing.*; -/** - * @author Anna Bulenkova - */ - /** * @author Anna Bulenkova */ public class DemoSettingsEditor extends SettingsEditor { private JPanel myPanel; - private LabeledComponent myMainClass; + private LabeledComponent myScriptName; @Override protected void resetEditorFrom(DemoRunConfiguration demoRunConfiguration) { - + myScriptName.getComponent().setText(demoRunConfiguration.getScriptName()); } @Override - protected void applyEditorTo(DemoRunConfiguration demoRunConfiguration) throws ConfigurationException { - + protected void applyEditorTo(@NotNull DemoRunConfiguration demoRunConfiguration) throws ConfigurationException { + demoRunConfiguration.setScriptName(myScriptName.getComponent().getText()); } @NotNull @@ -34,8 +30,8 @@ public class DemoSettingsEditor extends SettingsEditor { } private void createUIComponents() { - myMainClass = new LabeledComponent(); - myMainClass.setComponent(new TextFieldWithBrowseButton()); + myScriptName = new LabeledComponent(); + myScriptName.setComponent(new TextFieldWithBrowseButton()); } }