From ac17bb983d0d8de6b11d542bf1bbc7ff5d15feae Mon Sep 17 00:00:00 2001 From: anna Date: Tue, 19 Apr 2011 20:10:18 +0200 Subject: [PATCH] reuse existing .imls if found during create project from existing sources --- .../util/importProject/ModuleDescriptor.java | 11 +++++++++- .../importProject/ModulesDetectionStep.java | 22 +++++++++---------- .../ProjectFromSourcesBuilder.java | 11 +++++++++- .../newProjectWizard/modes/ImportImlMode.java | 5 ++++- .../src/messages/IdeBundle.properties | 4 ++-- 5 files changed, 37 insertions(+), 16 deletions(-) diff --git a/java/idea-ui/src/com/intellij/ide/util/importProject/ModuleDescriptor.java b/java/idea-ui/src/com/intellij/ide/util/importProject/ModuleDescriptor.java index 2f1285068a1a..81d2072901ef 100644 --- a/java/idea-ui/src/com/intellij/ide/util/importProject/ModuleDescriptor.java +++ b/java/idea-ui/src/com/intellij/ide/util/importProject/ModuleDescriptor.java @@ -36,12 +36,21 @@ public class ModuleDescriptor { private static final String[] ourModuleNameStoplist = new String[] { "java", "src", "source", "sources", "C:", "D:", "E:", "F:", "temp", "tmp" }; - + private boolean myReuseExistingElement; + public ModuleDescriptor(final File contentRoot, final Set sourceRoots) { myName = suggestModuleName(contentRoot); myContentToSourceRoots.put(contentRoot, sourceRoots); } + public void reuseExisting(boolean reuseExistingElement) { + myReuseExistingElement = reuseExistingElement; + } + + public boolean isReuseExistingElement() { + return myReuseExistingElement; + } + private static String suggestModuleName(final File contentRoot) { for (File dir = contentRoot; dir != null; dir = dir.getParentFile()) { final String suggestion = dir.getName(); diff --git a/java/idea-ui/src/com/intellij/ide/util/importProject/ModulesDetectionStep.java b/java/idea-ui/src/com/intellij/ide/util/importProject/ModulesDetectionStep.java index cab2faaa7be4..e474c0106371 100644 --- a/java/idea-ui/src/com/intellij/ide/util/importProject/ModulesDetectionStep.java +++ b/java/idea-ui/src/com/intellij/ide/util/importProject/ModulesDetectionStep.java @@ -26,10 +26,7 @@ import org.jetbrains.annotations.NonNls; import javax.swing.*; import java.io.File; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.List; +import java.util.*; /** * @author Eugene Zhuravlev @@ -109,24 +106,27 @@ public class ModulesDetectionStep extends AbstractStepWithProgress modules = myModulesLayoutPanel.getChosenEntries(); - List errors = new ArrayList(); + final Map errors = new LinkedHashMap(); for (ModuleDescriptor module : modules) { try { final String moduleFilePath = module.computeModuleFilePath(); if (new File(moduleFilePath).exists()) { - errors.add(IdeBundle.message("warning.message.the.module.file.0.already.exist.and.will.be.overwritten", moduleFilePath)); + errors.put(IdeBundle.message("warning.message.the.module.file.0.already.exist.and.will.be.overwritten", moduleFilePath), module); } } catch (InvalidDataException e) { - errors.add(e.getMessage()); + errors.put(e.getMessage(), module); } } if (!errors.isEmpty()) { - final int answer = Messages.showYesNoDialog(getComponent(), - IdeBundle.message("warning.text.0.do.you.want.to.continue", StringUtil.join(errors, "\n")), - IdeBundle.message("title.file.already.exists"), Messages.getQuestionIcon()); + final int answer = Messages.showYesNoCancelDialog(getComponent(), + IdeBundle.message("warning.text.0.do.you.want.to.continue", + StringUtil.join(errors.keySet(), "\n")), + IdeBundle.message("title.file.already.exists"), Messages.getQuestionIcon()); if (answer != 0) { - return false; + for (ModuleDescriptor moduleDescriptor : errors.values()) { + moduleDescriptor.reuseExisting(true); + } } } return true; diff --git a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/ProjectFromSourcesBuilder.java b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/ProjectFromSourcesBuilder.java index 22e25276c1ca..e44a923557f9 100644 --- a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/ProjectFromSourcesBuilder.java +++ b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/ProjectFromSourcesBuilder.java @@ -19,6 +19,8 @@ import com.intellij.ide.IdeBundle; import com.intellij.ide.util.importProject.LibraryDescriptor; import com.intellij.ide.util.importProject.ModuleDescriptor; import com.intellij.ide.util.importProject.ModuleInsight; +import com.intellij.ide.util.newProjectWizard.modes.ImportImlMode; +import com.intellij.ide.util.projectWizard.ExistingModuleLoader; import com.intellij.ide.util.projectWizard.ModuleBuilder; import com.intellij.ide.util.projectWizard.ProjectBuilder; import com.intellij.ide.util.projectWizard.SourcePathsBuilder; @@ -131,7 +133,14 @@ public class ProjectFromSourcesBuilder extends ProjectBuilder implements SourceP try { final ModifiableModuleModel moduleModel = model != null ? model : ModuleManager.getInstance(project).getModifiableModel(); for (final ModuleDescriptor moduleDescriptor : myChosenModules) { - final Module module = createModule(project, moduleDescriptor, sourceRootToPrefixMap, projectLibs, moduleModel); + final Module module; + if (moduleDescriptor.isReuseExistingElement()) { + final ExistingModuleLoader moduleLoader = ImportImlMode.setUpLoader(FileUtil.toSystemIndependentName(moduleDescriptor.computeModuleFilePath())); + module = moduleLoader.createModule(moduleModel); + } + else { + module = createModule(project, moduleDescriptor, sourceRootToPrefixMap, projectLibs, moduleModel); + } result.add(module); descriptorToModuleMap.put(moduleDescriptor, module); } diff --git a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/modes/ImportImlMode.java b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/modes/ImportImlMode.java index 6d5c7e8cba07..da740a33d8ad 100644 --- a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/modes/ImportImlMode.java +++ b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/modes/ImportImlMode.java @@ -66,8 +66,11 @@ public class ImportImlMode extends WizardMode { } public ProjectBuilder getModuleBuilder() { + return setUpLoader(FileUtil.toSystemIndependentName(myModulePathFieldPanel.getText().trim())); + } + + public static ExistingModuleLoader setUpLoader(final String moduleFilePath) { final ExistingModuleLoader moduleLoader = new ExistingModuleLoader(); - final String moduleFilePath = FileUtil.toSystemIndependentName(myModulePathFieldPanel.getText().trim()); moduleLoader.setModuleFilePath(moduleFilePath); final int startIndex = moduleFilePath.lastIndexOf('/'); final int endIndex = moduleFilePath.lastIndexOf("."); diff --git a/platform/platform-resources-en/src/messages/IdeBundle.properties b/platform/platform-resources-en/src/messages/IdeBundle.properties index b3b50b511025..4858630ba6d7 100644 --- a/platform/platform-resources-en/src/messages/IdeBundle.properties +++ b/platform/platform-resources-en/src/messages/IdeBundle.properties @@ -749,8 +749,8 @@ prompt.new.project.file.name=Enter a file name to create a new {0} {1} prompt.enter.project.file.location=Enter {0} file location directory.project.file.directory=The {0} file directory\n prompt.overwrite.project.file=The {1} file \n''{0}''\nalready exists.\nWould you like to overwrite it? -warning.message.the.module.file.0.already.exist.and.will.be.overwritten=The module file ''{0}'' already exist and will be overwritten. -warning.text.0.do.you.want.to.continue={0}\nDo you want to continue? +warning.message.the.module.file.0.already.exist.and.will.be.overwritten=The module file ''{0}'' already exist. +warning.text.0.do.you.want.to.continue={0}\nWould you like to overwrite it? title.select.jdk=Select JDK button.configure.e=Configure... label.scope.pattern=&Pattern: