Supporting Module Types
IntelliJ Platform 提供了一组可以选择的标准模块类型,但是,您可能需要创建一个尚不支持的类型的模块.
本教程介绍如何注册新模块类型并将其链接到项目创建过程和UI.
预先要求
创建一个空的插件项目,
看到
注意:用于选择模块类型的UI和通过项目向导创建模块的UI是IntelliJ特定的.
1.注册新模块类型
在中添加新的* moduleType *扩展名
plugin.xml
配置文件.
<extensions defaultExtensionNs="com.intellij">
<moduleType id="DEMO_MODULE_TYPE" implementationClass="com.intellij.tutorials.module.DemoModuleType"/>
</extensions>
2.实现ModuleType接口
public class DemoModuleType extends ModuleType<DemoModuleBuilder> {
private static final String ID = "DEMO_MODULE_TYPE";
public DemoModuleType() {
super(ID);
}
public static DemoModuleType getInstance() {
return (DemoModuleType) ModuleTypeManager.getInstance().findByID(ID);
}
@NotNull
@Override
public DemoModuleBuilder createModuleBuilder() {
return new DemoModuleBuilder();
}
@NotNull
@Override
public String getName() {
return "Demo Module Type";
}
@NotNull
@Override
public String getDescription() {
return "Demo Module Type";
}
@Override
public Icon getNodeIcon(@Deprecated boolean b) {
return AllIcons.General.Information;
}
@NotNull
@Override
public ModuleWizardStep[] createWizardSteps(@NotNull WizardContext wizardContext, @NotNull DemoModuleBuilder moduleBuilder, @NotNull ModulesProvider modulesProvider) {
return super.createWizardSteps(wizardContext, moduleBuilder, modulesProvider);
}
}
3.实现自定义模块构建器
public class DemoModuleBuilder extends ModuleBuilder {
@Override
public void setupRootModel(ModifiableRootModel model) throws ConfigurationException {
}
@Override
public ModuleType getModuleType() {
return DemoModuleType.getInstance();
}
@Nullable
@Override
public ModuleWizardStep getCustomOptionsStep(WizardContext context, Disposable parentDisposable) {
return new DemoModuleWizardStep();
}
}
4.提供自定义向导步骤
为项目创建阶段提供UI组件的实现.
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
}
}
5.创建新类型的模块
编译并运行插件后,使用* IntelliJ IDEA *的源编译实例创建一个新项目.
您将在“项目向导”中看到新的模块类型及其设置面板.
Last modified: 11 May 2019