new module wizard: don't change path to module content root if I create a module... phpstorm/142.4760
authornik <Nikolay.Chashnikov@jetbrains.com>
Thu, 10 Sep 2015 12:47:09 +0000 (15:47 +0300)
committernik <Nikolay.Chashnikov@jetbrains.com>
Thu, 10 Sep 2015 12:47:45 +0000 (15:47 +0300)
java/idea-ui/src/com/intellij/ide/projectWizard/ModuleNameLocationComponent.java
java/idea-ui/src/com/intellij/ide/util/newProjectWizard/AbstractProjectWizard.java
platform/lang-api/src/com/intellij/ide/util/projectWizard/WizardContext.java

index 193fe5d18e55dbdfe74c8234c82af6b030e255f6..7516376d6eba8042dcc43d327f71c6f213515b1f 100644 (file)
@@ -59,6 +59,8 @@ public class ModuleNameLocationComponent {
   private boolean myImlLocationChangedByUser = false;
   private boolean myImlLocationDocListenerEnabled = true;
 
+  private boolean myUpdatePathsWhenNameIsChanged;
+
   public ModuleNameLocationComponent(@NotNull WizardContext wizardContext) {
     myWizardContext = wizardContext;
   }
@@ -97,6 +99,10 @@ public class ModuleNameLocationComponent {
     });
     myModuleName.getDocument().addDocumentListener(new DocumentAdapter() {
       protected void textChanged(final DocumentEvent e) {
+        if (!myUpdatePathsWhenNameIsChanged) {
+          return;
+        }
+
         if (myModuleNameDocListenerEnabled) {
           myModuleNameChangedByUser = true;
         }
@@ -159,6 +165,7 @@ public class ModuleNameLocationComponent {
         }
       }
     });
+    myUpdatePathsWhenNameIsChanged = true;
     if (myWizardContext.isCreatingNewProject()) {
       setModuleName(namePathComponent.getNameValue());
       setModuleContentRoot(namePathComponent.getPath());
@@ -178,6 +185,7 @@ public class ModuleNameLocationComponent {
           moduleName =
             ProjectWizardUtil.findNonExistingFileName(myWizardContext.getProjectFileDirectory(), myWizardContext.getProjectName(), "");
           contentRoot = myWizardContext.getProjectFileDirectory();
+          myUpdatePathsWhenNameIsChanged = !myWizardContext.isProjectFileDirectorySetExplicitly();
         }
         setModuleName(moduleName);
         setModuleContentRoot(contentRoot);
@@ -234,7 +242,7 @@ public class ModuleNameLocationComponent {
     return true;
   }
 
-  protected String getModuleContentRoot() {
+  private String getModuleContentRoot() {
     return myModuleContentRoot.getText();
   }
 
index 2afdc58d797d8ef027f1a23551cc68d8034367af..634028ca640d96eb44ddef3ad03bfe724e86f6da 100644 (file)
@@ -77,7 +77,7 @@ public abstract class AbstractProjectWizard extends AbstractWizard<ModuleWizardS
   private static WizardContext initContext(@Nullable Project project, @Nullable String defaultPath, Disposable parentDisposable) {
     WizardContext context = new WizardContext(project, parentDisposable);
     if (defaultPath != null) {
-      context.setProjectFileDirectory(defaultPath);
+      context.setProjectFileDirectory(defaultPath, true);
       context.setProjectName(defaultPath.substring(FileUtil.toSystemIndependentName(defaultPath).lastIndexOf("/") + 1));
     }
    return context;
index 0971c06afafba2f523e2511e75fce060db9802c9..77d399d520c1244833df7d304571a45209317ae6 100644 (file)
@@ -52,6 +52,7 @@ public class WizardContext extends UserDataHolderBase {
   private StorageScheme myProjectStorageFormat = StorageScheme.DIRECTORY_BASED;
   private boolean myNewWizard;
   private ModulesProvider myModulesProvider;
+  private boolean myProjectFileDirectorySetExplicitly;
 
   public void setProjectStorageFormat(StorageScheme format) {
     myProjectStorageFormat = format;
@@ -122,7 +123,16 @@ public class WizardContext extends UserDataHolderBase {
     return myProjectFileDirectory != null;
   }
 
+  public boolean isProjectFileDirectorySetExplicitly() {
+    return myProjectFileDirectorySetExplicitly;
+  }
+
   public void setProjectFileDirectory(String projectFileDirectory) {
+    setProjectFileDirectory(projectFileDirectory, false);
+  }
+
+  public void setProjectFileDirectory(String projectFileDirectory, boolean explicitly) {
+    myProjectFileDirectorySetExplicitly = explicitly;
     myProjectFileDirectory = projectFileDirectory;
   }