diff options
Diffstat (limited to 'platform/lang-api/src/com/intellij/ide/util/projectWizard/ModuleBuilder.java')
-rw-r--r-- | platform/lang-api/src/com/intellij/ide/util/projectWizard/ModuleBuilder.java | 67 |
1 files changed, 40 insertions, 27 deletions
diff --git a/platform/lang-api/src/com/intellij/ide/util/projectWizard/ModuleBuilder.java b/platform/lang-api/src/com/intellij/ide/util/projectWizard/ModuleBuilder.java index fddb2b2f50b7..861123ab7839 100644 --- a/platform/lang-api/src/com/intellij/ide/util/projectWizard/ModuleBuilder.java +++ b/platform/lang-api/src/com/intellij/ide/util/projectWizard/ModuleBuilder.java @@ -25,6 +25,8 @@ import com.intellij.openapi.module.*; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.project.DumbAwareRunnable; import com.intellij.openapi.project.Project; +import com.intellij.openapi.project.ProjectType; +import com.intellij.openapi.project.ProjectTypeService; import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.roots.ContentEntry; import com.intellij.openapi.roots.ModifiableRootModel; @@ -56,12 +58,12 @@ public abstract class ModuleBuilder extends AbstractModuleBuilder { public static final ExtensionPointName<ModuleBuilderFactory> EP_NAME = ExtensionPointName.create("com.intellij.moduleBuilder"); private static final Logger LOG = Logger.getInstance("#com.intellij.ide.util.projectWizard.ModuleBuilder"); + private final Set<ModuleConfigurationUpdater> myUpdaters = new HashSet<ModuleConfigurationUpdater>(); + private final EventDispatcher<ModuleBuilderListener> myDispatcher = EventDispatcher.create(ModuleBuilderListener.class); protected Sdk myJdk; private String myName; @NonNls private String myModuleFilePath; private String myContentEntryPath; - private final Set<ModuleConfigurationUpdater> myUpdaters = new HashSet<ModuleConfigurationUpdater>(); - private final EventDispatcher<ModuleBuilderListener> myDispatcher = EventDispatcher.create(ModuleBuilderListener.class); @NotNull public static List<ModuleBuilder> getAllBuilders() { @@ -81,6 +83,17 @@ public abstract class ModuleBuilder extends AbstractModuleBuilder { }); } + public static void deleteModuleFile(String moduleFilePath) { + final File moduleFile = new File(moduleFilePath); + if (moduleFile.exists()) { + FileUtil.delete(moduleFile); + } + final VirtualFile file = LocalFileSystem.getInstance().findFileByIoFile(moduleFile); + if (file != null) { + file.refresh(false, false); + } + } + protected boolean isAvailable() { return true; } @@ -95,6 +108,11 @@ public abstract class ModuleBuilder extends AbstractModuleBuilder { } @Override + public void setName(String name) { + myName = acceptParameter(name); + } + + @Override @Nullable public String getBuilderId() { ModuleType moduleType = getModuleType(); @@ -167,24 +185,19 @@ public abstract class ModuleBuilder extends AbstractModuleBuilder { return Collections.emptyList(); } - @Override - public void setName(String name) { - myName = acceptParameter(name); - } - public String getModuleFilePath() { return myModuleFilePath; } - public void addModuleConfigurationUpdater(ModuleConfigurationUpdater updater) { - myUpdaters.add(updater); - } - @Override public void setModuleFilePath(@NonNls String path) { myModuleFilePath = acceptParameter(path); } + public void addModuleConfigurationUpdater(ModuleConfigurationUpdater updater) { + myUpdaters.add(updater); + } + @Nullable public String getContentEntryPath() { if (myContentEntryPath == null) { @@ -259,6 +272,7 @@ public abstract class ModuleBuilder extends AbstractModuleBuilder { updater.update(module, modifiableModel); } modifiableModel.commit(); + setProjectType(module); } private void onModuleInitialized(final Module module) { @@ -269,6 +283,17 @@ public abstract class ModuleBuilder extends AbstractModuleBuilder { public abstract ModuleType getModuleType(); + protected ProjectType getProjectType() { + return null; + } + + protected void setProjectType(Module module) { + ProjectType projectType = getProjectType(); + if (projectType != null && ProjectTypeService.getProjectType(module.getProject()) == null) { + ProjectTypeService.setProjectType(module.getProject(), projectType); + } + } + @NotNull public Module createAndCommitIfNeeded(@NotNull Project project, @Nullable ModifiableModuleModel model, boolean runFromProjectWizard) throws InvalidDataException, ConfigurationException, IOException, JDOMException, ModuleWithNameAlreadyExists { @@ -295,7 +320,6 @@ public abstract class ModuleBuilder extends AbstractModuleBuilder { return module; } - public void addListener(ModuleBuilderListener listener) { myDispatcher.addListener(listener); } @@ -340,17 +364,6 @@ public abstract class ModuleBuilder extends AbstractModuleBuilder { return null; } - public static void deleteModuleFile(String moduleFilePath) { - final File moduleFile = new File(moduleFilePath); - if (moduleFile.exists()) { - FileUtil.delete(moduleFile); - } - final VirtualFile file = LocalFileSystem.getInstance().findFileByIoFile(moduleFile); - if (file != null) { - file.refresh(false, false); - } - } - public Icon getBigIcon() { return getModuleType().getBigIcon(); } @@ -396,14 +409,14 @@ public abstract class ModuleBuilder extends AbstractModuleBuilder { myModuleFilePath = from.getModuleFilePath(); } - public void setModuleJdk(Sdk jdk) { - myJdk = jdk; - } - public Sdk getModuleJdk() { return myJdk; } + public void setModuleJdk(Sdk jdk) { + myJdk = jdk; + } + @NotNull public FrameworkRole getDefaultAcceptableRole() { return getModuleType().getDefaultAcceptableRole(); |