diff --git a/_SUMMARY.md b/_SUMMARY.md index 5ae675c06..bd59b2304 100644 --- a/_SUMMARY.md +++ b/_SUMMARY.md @@ -130,6 +130,7 @@ * [2. Editor Coordinates System. Positions And Offsets](tutorials/editor_basics/coordinates_system.html) * [3. Handling Editor Events](tutorials/editor_basics/editor_events.html) * [Project Wizard](tutorials/project_wizard.html) + * [Adding New Steps to Project Wizard](tutorials/project_wizard/adding_new_steps.html) * [Code Inspections](tutorials/code_inspections.html) * [Run Configurations](tutorials/run_configurations.html) * [Supporting Frameworks](tutorials/framework.html) diff --git a/tutorials/project_wizard.md b/tutorials/project_wizard.md index e50d5822c..365f405c6 100644 --- a/tutorials/project_wizard.md +++ b/tutorials/project_wizard.md @@ -7,7 +7,7 @@ This set of tutorials shows how to manipulate the process of project creation. Configuring Project Wizard automatically allows you to do the following: -1. [Adding new steps to the wizard]() +1. [Adding New Steps to Project Wizard](tutorials/project_wizard/adding_new_steps.html) 2. [Providing additional setting for project creation]() 3. [Handling activities during project creation]() 4. [Initial environment configuration]() diff --git a/tutorials/project_wizard/adding_new_steps.md b/tutorials/project_wizard/adding_new_steps.md new file mode 100644 index 000000000..667f85c1d --- /dev/null +++ b/tutorials/project_wizard/adding_new_steps.md @@ -0,0 +1,108 @@ +--- +layout: editable +title: Adding New Steps to Project Wizard +--- + +This tutorial shows how to add a extra-step to the Project Wizard in order to provide additional project configuration settings. + +## Pre-requirements. + +Create an empty plugin project. +See +[Creating a Plugin Project](basics/getting_started/creating_plugin_project.html) +to know how to do it. + +## 1. Register Module Builder + +Project configuration settings depend on the project's module type. +Register a new *moduleBuilder* extension point in the +[plugin.xml](TODO) configuration file. + + +```xml + + + +``` + +## 2. Create a Custom Module Builder + +Extend +[ModuleBuilder](TODO) +class to provide custom configuration. + +```java +public class DemoModuleWizardStep extends ModuleBuilder { + public void setupRootModel(ModifiableRootModel modifiableRootModel) throws ConfigurationException { + + } + + public ModuleType getModuleType() { + return null; + } +} +``` + +## 3. Define Module Type + +Set a module type you want to provide an extra wizard step for. In this example we choose an empty module type. + + +```java +public class DemoModuleWizardStep extends ModuleBuilder { + public void setupRootModel(ModifiableRootModel modifiableRootModel) throws ConfigurationException { + + } + + public ModuleType getModuleType() { + return ModuleType.EMPTY; //or it could be any other module type + } +} +``` + +## 4. Design and Implement Wizard Steps + +Provide an implementation of a custom UI component to be added to the Wizard. +In this case we leave it as a label. + + +```java +public class DemoModuleWizardStep extends ModuleBuilder { + public void setupRootModel(ModifiableRootModel modifiableRootModel) throws ConfigurationException { + + } + + public ModuleType getModuleType() { + return ModuleType.EMPTY; + } + + @Override + public ModuleWizardStep[] createWizardSteps(@NotNull WizardContext wizardContext, @NotNull ModulesProvider modulesProvider) { + return new ModuleWizardStep[]{new ModuleWizardStep() { + @Override + public JComponent getComponent() { + return new JLabel("Put your content here"); + } + + @Override + public void updateDataModel() { + + } + }}; + } +} +``` + +## 5. Checking UI Appearance + +After compiling and running the plugin create a new project using compiled from sources instance of IntelliJ IDEA. + +![New Project](img/empty_project.png) + +Choose an *Empty Module* type, click next, and you get to the just added extra step. + +![Extra Step](img/extra_step.png) + +Modify and tune the UI component depending on your requirements. + + diff --git a/tutorials/project_wizard/img/empty_project.png b/tutorials/project_wizard/img/empty_project.png new file mode 100644 index 000000000..20d867ecd Binary files /dev/null and b/tutorials/project_wizard/img/empty_project.png differ diff --git a/tutorials/project_wizard/img/extra_step.png b/tutorials/project_wizard/img/extra_step.png new file mode 100644 index 000000000..425acb4f7 Binary files /dev/null and b/tutorials/project_wizard/img/extra_step.png differ