package org.elixir_lang.module;
import com.intellij.ide.util.projectWizard.ModuleWizardStep;
import com.intellij.ide.util.projectWizard.ProjectJdkForModuleStep;
import com.intellij.ide.util.projectWizard.WizardContext;
import com.intellij.openapi.module.ModuleType;
import com.intellij.openapi.module.ModuleTypeManager;
import com.intellij.openapi.roots.ui.configuration.ModulesProvider;
import org.elixir_lang.icons.ElixirIcons;
import org.elixir_lang.sdk.ElixirSdkType;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
/**
* Created by zyuyou on 2015/5/26.
*/
public class ElixirModuleType extends ModuleType<ElixirModuleBuilder>{
public static final String MODULE_TYPE_ID = "ELIXIR_MODULE";
public ElixirModuleType() {
super(MODULE_TYPE_ID);
}
public static ElixirModuleType getInstance(){
return (ElixirModuleType) ModuleTypeManager.getInstance().findByID(MODULE_TYPE_ID);
}
@NotNull
@Override
public ElixirModuleBuilder createModuleBuilder() {
return new ElixirModuleBuilder();
}
@NotNull
@Override
public String getName() {
return "Elixir Module";
}
@NotNull
@Override
public String getDescription() {
return "Elixir modules are used for developing <b>Elixir</b> applications.";
}
@Override
public Icon getBigIcon() {
return ElixirIcons.FILE;
}
@Override
public Icon getNodeIcon(@Deprecated boolean isOpened) {
return ElixirIcons.ELIXIR_MODULE_NODE;
}
@NotNull
@Override
public ModuleWizardStep[] createWizardSteps(@NotNull WizardContext wizardContext,
@NotNull final ElixirModuleBuilder moduleBuilder,
@NotNull ModulesProvider modulesProvider) {
return new ModuleWizardStep[]{
new ProjectJdkForModuleStep(wizardContext, ElixirSdkType.getInstance()){
public void updateDataModel(){
super.updateDataModel();
moduleBuilder.setModuleJdk(getJdk());
}
}
};
}
}