diff --git a/java/idea-ui/src/com/intellij/ide/actions/ImportModuleAction.java b/java/idea-ui/src/com/intellij/ide/actions/ImportModuleAction.java index c8978ab514e4..2c0cb1bc1ba5 100644 --- a/java/idea-ui/src/com/intellij/ide/actions/ImportModuleAction.java +++ b/java/idea-ui/src/com/intellij/ide/actions/ImportModuleAction.java @@ -16,6 +16,7 @@ package com.intellij.ide.actions; import com.intellij.ide.impl.NewProjectUtil; +import com.intellij.ide.impl.ProjectUtil; import com.intellij.ide.util.PropertiesComponent; import com.intellij.ide.util.newProjectWizard.AbstractProjectWizard; import com.intellij.ide.util.newProjectWizard.AddModuleWizard; @@ -30,9 +31,9 @@ import com.intellij.openapi.fileChooser.FileChooserFactory; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.project.Project; +import com.intellij.openapi.project.ProjectManager; import com.intellij.openapi.roots.ui.configuration.actions.NewModuleAction; import com.intellij.openapi.ui.Messages; -import com.intellij.openapi.util.Condition; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.projectImport.ProjectImportProvider; @@ -132,6 +133,12 @@ public class ImportModuleAction extends AnAction { } final VirtualFile file = files[0]; + for (Project p : ProjectManager.getInstance().getOpenProjects()) { + if (ProjectUtil.isSameProject(file.getPath(), p)) { + ProjectUtil.focusProjectWindow(p, false); + return null; + } + } PropertiesComponent.getInstance().setValue(LAST_IMPORTED_LOCATION, file.getPath()); return createImportWizard(project, dialogParent, file, providers); } diff --git a/java/idea-ui/src/com/intellij/ide/impl/NewProjectUtil.java b/java/idea-ui/src/com/intellij/ide/impl/NewProjectUtil.java index 568e3a76e255..e46e74833e95 100644 --- a/java/idea-ui/src/com/intellij/ide/impl/NewProjectUtil.java +++ b/java/idea-ui/src/com/intellij/ide/impl/NewProjectUtil.java @@ -84,6 +84,13 @@ public class NewProjectUtil { private static Project doCreate(final AbstractProjectWizard dialog, @Nullable Project projectToClose) throws IOException { final ProjectManagerEx projectManager = ProjectManagerEx.getInstanceEx(); final String projectFilePath = dialog.getNewProjectFilePath(); + for (Project p : ProjectManager.getInstance().getOpenProjects()) { + if (ProjectUtil.isSameProject(projectFilePath, p)) { + ProjectUtil.focusProjectWindow(p, false); + return null; + } + } + final ProjectBuilder projectBuilder = dialog.getProjectBuilder(); try { diff --git a/java/idea-ui/src/com/intellij/ide/util/projectWizard/NamePathComponent.java b/java/idea-ui/src/com/intellij/ide/util/projectWizard/NamePathComponent.java index a7d433a5fc87..6d32b4c03d15 100644 --- a/java/idea-ui/src/com/intellij/ide/util/projectWizard/NamePathComponent.java +++ b/java/idea-ui/src/com/intellij/ide/util/projectWizard/NamePathComponent.java @@ -17,12 +17,14 @@ package com.intellij.ide.util.projectWizard; import com.intellij.ide.IdeBundle; import com.intellij.ide.highlighter.ProjectFileType; +import com.intellij.ide.impl.ProjectUtil; import com.intellij.ide.util.BrowseFilesListener; import com.intellij.openapi.application.ApplicationInfo; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.fileChooser.FileChooserDescriptor; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.project.Project; +import com.intellij.openapi.project.ProjectManager; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; @@ -161,7 +163,12 @@ public class NamePathComponent extends JPanel{ File file = new File(projectDirectory); if (file.exists() && !file.canWrite()) { - throw new ConfigurationException(String.format("Directory '%s' is not writable!\nPlease choose another project location.", projectDirectory)); + throw new ConfigurationException(String.format("Directory '%s' is not seem to be writable. Please consider another location.", projectDirectory)); + } + for (Project p : ProjectManager.getInstance().getOpenProjects()) { + if (ProjectUtil.isSameProject(projectDirectory, p)) { + throw new ConfigurationException(String.format("Directory '%s' is already taken by the project '%s'. Please consider another location.", projectDirectory, p.getName())); + } } boolean shouldContinue = true;