From e6cde7920edca575a8b28b59b7d029b92e8a0c34 Mon Sep 17 00:00:00 2001 From: Anna Bulenkova Date: Wed, 4 Feb 2015 12:43:55 +0100 Subject: [PATCH] [code] simple custom run configuration --- run_configuration/META-INF/plugin.xml | 30 +++++++++++++ run_configuration/run_configuration.iml | 12 +++++ .../DemoConfigurationFactory.java | 27 ++++++++++++ .../configuration/DemoRunConfiguration.java | 36 +++++++++++++++ .../DemoRunConfigurationType.java | 39 ++++++++++++++++ .../run/configuration/DemoSettingsEditor.form | 29 ++++++++++++ .../run/configuration/DemoSettingsEditor.java | 44 +++++++++++++++++++ 7 files changed, 217 insertions(+) create mode 100644 run_configuration/META-INF/plugin.xml create mode 100644 run_configuration/run_configuration.iml create mode 100644 run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoConfigurationFactory.java create mode 100644 run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoRunConfiguration.java create mode 100644 run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoRunConfigurationType.java create mode 100644 run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoSettingsEditor.form create mode 100644 run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoSettingsEditor.java diff --git a/run_configuration/META-INF/plugin.xml b/run_configuration/META-INF/plugin.xml new file mode 100644 index 000000000..e29508754 --- /dev/null +++ b/run_configuration/META-INF/plugin.xml @@ -0,0 +1,30 @@ + + org.jetbrains.tutorials.run.configuration + Run Configuration + 1.0 + JetBrains + + Illustration of working with run configurations + + Initial commit + + + + com.intellij.modules.lang + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/run_configuration/run_configuration.iml b/run_configuration/run_configuration.iml new file mode 100644 index 000000000..de3c6c143 --- /dev/null +++ b/run_configuration/run_configuration.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoConfigurationFactory.java b/run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoConfigurationFactory.java new file mode 100644 index 000000000..a475e8373 --- /dev/null +++ b/run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoConfigurationFactory.java @@ -0,0 +1,27 @@ +package org.jetbrains.tutorials.run.configuration; + +import com.intellij.execution.configurations.ConfigurationFactory; +import com.intellij.execution.configurations.ConfigurationType; +import com.intellij.execution.configurations.RunConfiguration; +import com.intellij.openapi.project.Project; + +/** + * @author Anna Bulenkova + */ +public class DemoConfigurationFactory extends ConfigurationFactory { + private static final String FACTORY_NAME = "Demo configuration factory"; + + protected DemoConfigurationFactory(ConfigurationType type) { + super(type); + } + + @Override + public RunConfiguration createTemplateConfiguration(Project project) { + return new DemoRunConfiguration(project, this, "Demo"); + } + + @Override + public String getName() { + return FACTORY_NAME; + } +} diff --git a/run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoRunConfiguration.java b/run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoRunConfiguration.java new file mode 100644 index 000000000..1ab7c7de3 --- /dev/null +++ b/run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoRunConfiguration.java @@ -0,0 +1,36 @@ +package org.jetbrains.tutorials.run.configuration; + +import com.intellij.execution.ExecutionException; +import com.intellij.execution.Executor; +import com.intellij.execution.configurations.*; +import com.intellij.execution.runners.ExecutionEnvironment; +import com.intellij.openapi.options.SettingsEditor; +import com.intellij.openapi.project.Project; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * @author Anna Bulenkova + */ +public class DemoRunConfiguration extends RunConfigurationBase { + protected DemoRunConfiguration(Project project, ConfigurationFactory factory, String name) { + super(project, factory, name); + } + + @NotNull + @Override + public SettingsEditor getConfigurationEditor() { + return new DemoSettingsEditor(); + } + + @Override + public void checkConfiguration() throws RuntimeConfigurationException { + + } + + @Nullable + @Override + public RunProfileState getState(@NotNull Executor executor, @NotNull ExecutionEnvironment executionEnvironment) throws ExecutionException { + return null; + } +} diff --git a/run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoRunConfigurationType.java b/run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoRunConfigurationType.java new file mode 100644 index 000000000..bac651411 --- /dev/null +++ b/run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoRunConfigurationType.java @@ -0,0 +1,39 @@ +package org.jetbrains.tutorials.run.configuration; + +import com.intellij.execution.configurations.ConfigurationFactory; +import com.intellij.execution.configurations.ConfigurationType; +import com.intellij.icons.AllIcons; +import org.jetbrains.annotations.NotNull; + +import javax.swing.*; + +/** + * @author Anna Bulenkova + */ +public class DemoRunConfigurationType implements ConfigurationType { + @Override + public String getDisplayName() { + return "Demo"; + } + + @Override + public String getConfigurationTypeDescription() { + return "Demo Run Configuration Type"; + } + + @Override + public Icon getIcon() { + return AllIcons.General.Information; + } + + @NotNull + @Override + public String getId() { + return "DEMO_RUN_CONFIGURATION"; + } + + @Override + public ConfigurationFactory[] getConfigurationFactories() { + return new ConfigurationFactory[]{new DemoConfigurationFactory(this)}; + } +} diff --git a/run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoSettingsEditor.form b/run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoSettingsEditor.form new file mode 100644 index 000000000..d9dd1f253 --- /dev/null +++ b/run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoSettingsEditor.form @@ -0,0 +1,29 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoSettingsEditor.java b/run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoSettingsEditor.java new file mode 100644 index 000000000..db66fec90 --- /dev/null +++ b/run_configuration/src/org/jetbrains/tutorials/run/configuration/DemoSettingsEditor.java @@ -0,0 +1,44 @@ +package org.jetbrains.tutorials.run.configuration; + +import com.intellij.openapi.options.ConfigurationException; +import com.intellij.openapi.options.SettingsEditor; +import com.intellij.openapi.ui.ComponentWithBrowseButton; +import com.intellij.openapi.ui.LabeledComponent; +import com.intellij.openapi.ui.TextFieldWithBrowseButton; +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; + + @Override + protected void resetEditorFrom(DemoRunConfiguration demoRunConfiguration) { + + } + + @Override + protected void applyEditorTo(DemoRunConfiguration demoRunConfiguration) throws ConfigurationException { + + } + + @NotNull + @Override + protected JComponent createEditor() { + return myPanel; + } + + private void createUIComponents() { + myMainClass = new LabeledComponent(); + myMainClass.setComponent(new TextFieldWithBrowseButton()); + } +} +