diff --git a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/ProjectNameWithModuleStep.form b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/ProjectNameWithTypeStep.form similarity index 98% rename from java/idea-ui/src/com/intellij/ide/util/newProjectWizard/ProjectNameWithModuleStep.form rename to java/idea-ui/src/com/intellij/ide/util/newProjectWizard/ProjectNameWithTypeStep.form index b8bcd971ac5f..2df2467b1bfc 100644 --- a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/ProjectNameWithModuleStep.form +++ b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/ProjectNameWithTypeStep.form @@ -1,8 +1,8 @@ -
+ - + @@ -77,7 +77,7 @@ - + diff --git a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/ProjectNameWithModuleStep.java b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/ProjectNameWithTypeStep.java similarity index 92% rename from java/idea-ui/src/com/intellij/ide/util/newProjectWizard/ProjectNameWithModuleStep.java rename to java/idea-ui/src/com/intellij/ide/util/newProjectWizard/ProjectNameWithTypeStep.java index 6252a96bdd29..5d0dd7bce490 100644 --- a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/ProjectNameWithModuleStep.java +++ b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/ProjectNameWithTypeStep.java @@ -19,6 +19,7 @@ import com.intellij.ide.BrowserUtil; import com.intellij.ide.IdeBundle; import com.intellij.ide.highlighter.ModuleFileType; import com.intellij.ide.util.BrowseFilesListener; +import com.intellij.ide.util.newProjectWizard.modes.CreateFromTemplateMode; import com.intellij.ide.util.newProjectWizard.modes.WizardMode; import com.intellij.ide.util.projectWizard.ModuleBuilder; import com.intellij.ide.util.projectWizard.ProjectWizardUtil; @@ -55,7 +56,7 @@ import java.awt.event.MouseEvent; import java.io.File; import java.util.List; -public class ProjectNameWithModuleStep extends ProjectNameStep { +public class ProjectNameWithTypeStep extends ProjectNameStep { private JEditorPane myModuleDescriptionPane; private JList myTypesList; protected JCheckBox myCreateModuleCb; @@ -82,7 +83,7 @@ public class ProjectNameWithModuleStep extends ProjectNameStep { private final StepSequence mySequence; - public ProjectNameWithModuleStep(final WizardContext wizardContext, StepSequence sequence, final WizardMode mode) { + public ProjectNameWithTypeStep(final WizardContext wizardContext, StepSequence sequence, final WizardMode mode) { super(wizardContext, mode); mySequence = sequence; myAdditionalContentPanel.add(myModulePanel, @@ -274,27 +275,34 @@ public class ProjectNameWithModuleStep extends ProjectNameStep { } } - final AnAction arrow = new AnAction() { - @Override - public void actionPerformed(AnActionEvent e) { - if (e.getInputEvent() instanceof KeyEvent) { - final int code = ((KeyEvent)e.getInputEvent()).getKeyCode(); - if (!myCreateModuleCb.isSelected()) return; - int i = myTypesList.getSelectedIndex(); - if (code == KeyEvent.VK_DOWN) { - if (++i == myTypesList.getModel().getSize()) return; + + if (mode instanceof CreateFromTemplateMode) { + replaceModuleTypeOptions(new JPanel()); + myHeader.setVisible(false); + } + else { + final AnAction arrow = new AnAction() { + @Override + public void actionPerformed(AnActionEvent e) { + if (e.getInputEvent() instanceof KeyEvent) { + final int code = ((KeyEvent)e.getInputEvent()).getKeyCode(); + if (!myCreateModuleCb.isSelected()) return; + int i = myTypesList.getSelectedIndex(); + if (code == KeyEvent.VK_DOWN) { + if (++i == myTypesList.getModel().getSize()) return; + } + else if (code == KeyEvent.VK_UP) { + if (--i == -1) return; + } + myTypesList.setSelectedIndex(i); } - else if (code == KeyEvent.VK_UP) { - if (--i == -1) return; - } - myTypesList.setSelectedIndex(i); } - } - }; - final KeyboardShortcut up = new KeyboardShortcut(KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0), null); - final KeyboardShortcut down = new KeyboardShortcut(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0), null); - arrow.registerCustomShortcutSet(new CustomShortcutSet(up, down), myNamePathComponent.getNameComponent()); - arrow.registerCustomShortcutSet(new CustomShortcutSet(up, down), myModuleName); + }; + final KeyboardShortcut up = new KeyboardShortcut(KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0), null); + final KeyboardShortcut down = new KeyboardShortcut(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0), null); + arrow.registerCustomShortcutSet(new CustomShortcutSet(up, down), myNamePathComponent.getNameComponent()); + arrow.registerCustomShortcutSet(new CustomShortcutSet(up, down), myModuleName); + } } private Dimension calcTypeListPreferredSize(final List allModuleTypes) { diff --git a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/modes/CreateFromScratchMode.java b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/modes/CreateFromScratchMode.java index f7eea8145a25..ff24e526f97e 100644 --- a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/modes/CreateFromScratchMode.java +++ b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/modes/CreateFromScratchMode.java @@ -20,7 +20,7 @@ */ package com.intellij.ide.util.newProjectWizard.modes; -import com.intellij.ide.util.newProjectWizard.ProjectNameWithModuleStep; +import com.intellij.ide.util.newProjectWizard.ProjectNameWithTypeStep; import com.intellij.ide.util.newProjectWizard.StepSequence; import com.intellij.ide.util.projectWizard.EmptyModuleBuilder; import com.intellij.ide.util.projectWizard.ModuleBuilder; @@ -54,7 +54,7 @@ public class CreateFromScratchMode extends WizardMode { @Nullable protected StepSequence createSteps(final WizardContext context, @NotNull final ModulesProvider modulesProvider) { final StepSequence sequence = new StepSequence(); - sequence.addCommonStep(new ProjectNameWithModuleStep(context, sequence, this)); + sequence.addCommonStep(new ProjectNameWithTypeStep(context, sequence, this)); for (ModuleBuilder builder : ModuleBuilder.getAllBuilders()) { addModuleBuilder(builder, context, modulesProvider, sequence); } diff --git a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/modes/CreateFromTemplateMode.java b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/modes/CreateFromTemplateMode.java index 776198cbe1d3..ff022610621b 100644 --- a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/modes/CreateFromTemplateMode.java +++ b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/modes/CreateFromTemplateMode.java @@ -15,7 +15,7 @@ */ package com.intellij.ide.util.newProjectWizard.modes; -import com.intellij.ide.util.newProjectWizard.ProjectNameWithModuleStep; +import com.intellij.ide.util.newProjectWizard.ProjectNameWithTypeStep; import com.intellij.ide.util.newProjectWizard.SelectTemplateStep; import com.intellij.ide.util.newProjectWizard.StepSequence; import com.intellij.ide.util.projectWizard.ProjectBuilder; @@ -57,7 +57,7 @@ public class CreateFromTemplateMode extends WizardMode { protected StepSequence createSteps(WizardContext context, @NotNull ModulesProvider modulesProvider) { mySelectTemplateStep = new SelectTemplateStep(context); StepSequence sequence = new StepSequence(mySelectTemplateStep); - sequence.addCommonStep(new ProjectNameWithModuleStep(context, sequence, this)); + sequence.addCommonStep(new ProjectNameWithTypeStep(context, sequence, this)); return sequence; } diff --git a/java/idea-ui/src/com/intellij/platform/templates/ArchivedProjectTemplate.java b/java/idea-ui/src/com/intellij/platform/templates/ArchivedProjectTemplate.java index 5ebdfe428c43..da69165d4af2 100644 --- a/java/idea-ui/src/com/intellij/platform/templates/ArchivedProjectTemplate.java +++ b/java/idea-ui/src/com/intellij/platform/templates/ArchivedProjectTemplate.java @@ -22,12 +22,12 @@ import com.intellij.ide.util.projectWizard.WizardContext; import com.intellij.openapi.module.ModifiableModuleModel; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleType; +import com.intellij.openapi.module.ModuleWithNameAlreadyExists; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.progress.ProgressManager; -import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ModifiableRootModel; -import com.intellij.openapi.roots.ui.configuration.ModulesProvider; import com.intellij.openapi.util.Condition; +import com.intellij.openapi.util.InvalidDataException; import com.intellij.openapi.util.io.StreamUtil; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; @@ -35,14 +35,13 @@ import com.intellij.openapi.vfs.newvfs.RefreshQueue; import com.intellij.platform.ProjectTemplate; import com.intellij.platform.templates.github.ZipUtil; import com.intellij.util.containers.ContainerUtil; +import org.jdom.JDOMException; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.io.File; import java.io.IOException; import java.net.URL; -import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; @@ -102,28 +101,30 @@ public class ArchivedProjectTemplate implements ProjectTemplate { return null; } - @Nullable + @NotNull @Override - public List commit(Project project, ModifiableModuleModel model, ModulesProvider modulesProvider) { - final String path = myContext.getProjectFileDirectory(); + public Module createModule(@NotNull ModifiableModuleModel moduleModel) + throws InvalidDataException, IOException, ModuleWithNameAlreadyExists, JDOMException, ConfigurationException { + final String path = getContentEntryPath(); String iml; try { File dir = new File(path); ZipInputStream zipInputStream = getStream(); ZipUtil.unzip(ProgressManager.getInstance().getProgressIndicator(), dir, zipInputStream); VirtualFile virtualFile = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(dir); - RefreshQueue.getInstance().refresh(false, true, null, virtualFile); iml = ContainerUtil.find(dir.list(), new Condition() { @Override public boolean value(String s) { return s.endsWith(".iml"); } }); + new File(path, iml).renameTo(new File(getModuleFilePath())); + RefreshQueue.getInstance().refresh(false, true, null, virtualFile); } catch (IOException e) { throw new RuntimeException(e); } - return ImportImlMode.setUpLoader(path + "/" + iml).commit(project, model, modulesProvider); + return ImportImlMode.setUpLoader(getModuleFilePath()).createModule(moduleModel); } }; } 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 3ca4caeb6121..fe8844a58ea2 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 @@ -30,8 +30,8 @@ import com.intellij.openapi.roots.ModuleRootManager; import com.intellij.openapi.roots.ui.configuration.ModulesProvider; import com.intellij.openapi.startup.StartupManager; import com.intellij.openapi.ui.Messages; -import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.InvalidDataException; +import com.intellij.openapi.util.NullableComputable; import com.intellij.openapi.util.Ref; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.LocalFileSystem; @@ -236,7 +236,7 @@ public abstract class ModuleBuilder extends ProjectBuilder{ if (myModuleFilePath == null) { myModuleFilePath = project.getBaseDir().getPath() + File.separator + myName + ModuleFileType.DOT_DEFAULT_EXTENSION; } - Exception ex = ApplicationManager.getApplication().runWriteAction(new Computable() { + Exception ex = ApplicationManager.getApplication().runWriteAction(new NullableComputable() { @Override public Exception compute() { try { @@ -249,7 +249,7 @@ public abstract class ModuleBuilder extends ProjectBuilder{ } }); if (ex != null) { - LOG.info(ex); + LOG.warn(ex); Messages.showErrorDialog(IdeBundle.message("error.adding.module.to.project", ex.getMessage()), IdeBundle.message("title.add.module")); } }