package org.fandev.module; import com.intellij.openapi.module.ModuleType; import com.intellij.openapi.module.ModuleTypeManager; import com.intellij.openapi.components.ApplicationComponent; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.roots.ui.configuration.ModulesProvider; import com.intellij.ide.util.projectWizard.ModuleWizardStep; import com.intellij.ide.util.projectWizard.WizardContext; import org.fandev.module.wizard.FanModuleBuilder; import org.fandev.module.wizard.ui.FanSdkSelectStep; import org.fandev.module.wizard.ui.FanPodCreateStep; import org.fandev.lang.fan.FanBundle; import org.fandev.icons.Icons; import org.jetbrains.annotations.NotNull; import javax.swing.*; import java.util.ArrayList; /** * @author Dror Bereznitsky * @date Jan 19, 2009 9:57:23 AM */ public class FanModuleType extends ModuleType<FanModuleBuilder> implements ApplicationComponent { private static final String FAN_MODULE = "FAN_MODULE"; public static final String FAN_MODULE_TYPE = "FanModuleType"; public FanModuleType() { super(FAN_MODULE); } @Override public FanModuleBuilder createModuleBuilder() { return new FanModuleBuilder(); } @Override public String getName() { return FanBundle.message("fan.module.title"); } @Override public String getDescription() { return FanBundle.message("fan.module.description"); } @Override public Icon getBigIcon() { return Icons.FAN_24; } @Override public Icon getNodeIcon(boolean isOpened) { return isOpened? Icons.FAN_MODULE_OPEN : Icons.FAN_MODULE_CLOSE; } @Override public ModuleWizardStep[] createWizardSteps(final WizardContext wizardContext, final FanModuleBuilder moduleBuilder, final ModulesProvider modulesProvider) { final ArrayList<ModuleWizardStep> steps = new ArrayList<ModuleWizardStep>(); steps.add(new FanSdkSelectStep(moduleBuilder, wizardContext.getProject())); steps.add(new FanPodCreateStep(moduleBuilder)); //steps.add(new FanSourcePathsStep(moduleBuilder, Icons.FAN_16, "fan/")); //steps.add(new FanResourcePathsStep(moduleBuilder, Icons.FAN_16, "res/")); return steps.toArray(new ModuleWizardStep[0]); } @NotNull public String getComponentName() { return FAN_MODULE_TYPE; } @NotNull public static FanModuleType getInstance(){ return ApplicationManager.getApplication().getComponent(FanModuleType.class); } public void initComponent() { ModuleTypeManager.getInstance().registerModuleType(this); } public void disposeComponent() { // dispose component } }