IntelliJ Platform provides a set of standard module types. However, an application might need a module of a type that isn't supported yet. This tutorial shows how to register a new module type and link it to the project creation procedure and the UI.
The source code for the module and project_wizard code samples is used throughout this tutorial.
public class DemoModuleBuilder extends ModuleBuilder {
@Override
public void setupRootModel(@NotNull ModifiableRootModel model) {
}
@Override
public ModuleType<DemoModuleBuilder> getModuleType() {
return DemoModuleType.getInstance();
}
@Nullable
@Override
public ModuleWizardStep getCustomOptionsStep(WizardContext context, Disposable parentDisposable) {
return new DemoModuleWizardStep();
}
}
Provide Custom Wizard Steps
Provide a straightforward implementation of UI components for the project creating stage. Create a generic DemoModuleWizardStep based on ModuleWizardStep
public class DemoModuleWizardStep extends ModuleWizardStep {
@Override
public JComponent getComponent() {
return new JLabel("Provide some setting here");
}
@Override
public void updateDataModel() {
//todo update model according to UI
}
}
Creating a Module of New Type
After compiling and running the plugin in a development instance, create a new project. Select File | New | Module.... A new module type and its settings panel are available in the Project Wizard.