mirror of
https://github.com/JetBrains/intellij-sdk-code-samples.git
synced 2025-07-30 18:27:49 +08:00
run_configurations.md: update, include sources
This commit is contained in:
parent
c34d7e1522
commit
fe25d25033
@ -1,18 +1,21 @@
|
||||
[//]: # (title: Run Configurations Tutorial)
|
||||
|
||||
<!-- Copyright 2000-2020 JetBrains s.r.o. and other contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -->
|
||||
<!-- Copyright 2000-2021 JetBrains s.r.o. and other contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -->
|
||||
|
||||
These series of steps show how to register and implement a simple Run Configuration.
|
||||
Run Configurations are used to run internal and external processes from within IntelliJ Platform based products.
|
||||
To get familiar with the concept of a Run Configuration refer [Run/Debug Configuration](https://www.jetbrains.com/idea/help/run-debug-configuration.html) section of [IntelliJ IDEA Web Help](https://www.jetbrains.com/idea/help/intellij-idea.html)
|
||||
To get familiar with the concept of a Run Configuration refer [Run/Debug Configuration](https://www.jetbrains.com/idea/help/run-debug-configuration.html) section of [IntelliJ IDEA Web Help](https://www.jetbrains.com/idea/help/intellij-idea.html)
|
||||
|
||||
Consider the **runConfiguration** sample plugin available in the [code samples](https://github.com/JetBrains/intellij-sdk-code-samples/tree/main/run_configuration).
|
||||
See [Code Samples](code_samples.md) on how to set up and run the plugin.
|
||||
|
||||
## Pre-Requirements
|
||||
|
||||
Create an empty plugin project as described in [Creating a Plugin Project](getting_started.md).
|
||||
Create an empty plugin project as described in [Creating a Plugin Project](gradle_build_system.md).
|
||||
|
||||
## Register a New ConfigurationType
|
||||
|
||||
Add new `configurationType` extension to the [plugin.xml](https://github.com/JetBrains/intellij-sdk-code-samples/blob/main/run_configuration/src/main/resources/META-INF/plugin.xml)
|
||||
Add new `com.intellij.configurationType` extension to the [plugin.xml](https://github.com/JetBrains/intellij-sdk-code-samples/blob/main/run_configuration/src/main/resources/META-INF/plugin.xml)
|
||||
|
||||
```xml
|
||||
<extensions defaultExtensionNs="com.intellij">
|
||||
@ -22,62 +25,19 @@ Add new `configurationType` extension to the [plugin.xml](https://github.com/Jet
|
||||
|
||||
## Implement ConfigurationType
|
||||
|
||||
Implement [`ConfigurationType`](upsource:///platform/lang-api/src/com/intellij/execution/configurations/ConfigurationType.java) interface registered in the Step 1.
|
||||
Implement [`ConfigurationType`](upsource:///platform/lang-api/src/com/intellij/execution/configurations/ConfigurationType.java) interface registered in the Step 1.
|
||||
|
||||
```java
|
||||
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 "DemoRunConfiguration";
|
||||
}
|
||||
|
||||
@Override
|
||||
public ConfigurationFactory[] getConfigurationFactories() {
|
||||
return new ConfigurationFactory[]{new DemoConfigurationFactory(this)};
|
||||
}
|
||||
}
|
||||
```
|
||||
{src="run_configuration/src/main/java/org/jetbrains/sdk/runConfiguration/DemoRunConfigurationType.java"}
|
||||
|
||||
## Implement a ConfigurationFactory
|
||||
|
||||
Implement a new [`ConfigurationFactory`](upsource:///platform/lang-api/src/com/intellij/execution/configurations/ConfigurationFactory.java) through which custom run configurations will be created.
|
||||
|
||||
```java
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
{src="run_configuration/src/main/java/org/jetbrains/sdk/runConfiguration/DemoConfigurationFactory.java"}
|
||||
|
||||
## Implement a Run Configuration
|
||||
|
||||
@ -87,35 +47,14 @@ To make your changes visible from the UI, implement a new Run Configuration.
|
||||
If you need to implement specific settings externalization rules and I/O behaviour, use [`RunConfiguration`](upsource:///platform/lang-api/src/com/intellij/execution/configurations/RunConfiguration.java) interface.
|
||||
|
||||
```java
|
||||
public class DemoRunConfiguration extends RunConfigurationBase {
|
||||
protected DemoRunConfiguration(Project project, ConfigurationFactory factory, String name) {
|
||||
super(project, factory, name);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public SettingsEditor<? extends RunConfiguration> 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;
|
||||
}
|
||||
}
|
||||
```
|
||||
{src="run_configuration/src/main/java/org/jetbrains/sdk/runConfiguration/DemoRunConfiguration.java"}
|
||||
|
||||
## Create and Implement Run Configuration UI Form
|
||||
|
||||
Make sure _UI Designer_ plugin is [enabled](https://www.jetbrains.com/help/idea/managing-plugins.html).
|
||||
|
||||
Create a new [UI form](https://www.jetbrains.com/help/idea/designing-gui-major-steps.html) that defines, how an inner part of the new Run Configuration should look like.
|
||||
Create a new [UI form](https://www.jetbrains.com/help/idea/designing-gui-major-steps.html) that defines, how an inner part of the new Run Configuration should look like.
|
||||
|
||||
Default Run Configuration will be looking like this:
|
||||
|
||||
@ -126,36 +65,12 @@ Default Run Configuration will be looking like this:
|
||||
The UI Form should be bound with a Java class responsible for handling UI components logic.
|
||||
|
||||
```java
|
||||
public class DemoSettingsEditor extends SettingsEditor<DemoRunConfiguration> {
|
||||
private JPanel myPanel;
|
||||
private LabeledComponent<ComponentWithBrowseButton> 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<ComponentWithBrowseButton>();
|
||||
myMainClass.setComponent(new TextFieldWithBrowseButton());
|
||||
}
|
||||
}
|
||||
```
|
||||
{src="run_configuration/src/main/java/org/jetbrains/sdk/runConfiguration/DemoSettingsEditor.java"}
|
||||
|
||||
## Compile and Run the Plugin
|
||||
|
||||
Refer to [Running and Debugging a Plugin](running_and_debugging_a_plugin.md).
|
||||
Refer to [Running and Debugging a Plugin](gradle_prerequisites.md#executing-the-plugin).
|
||||
|
||||
After going through the steps described above you can create a custom Run Configuration from your plugin.
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user