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 9213668c2637..614ea7724435 100644
--- a/java/idea-ui/src/com/intellij/ide/actions/ImportModuleAction.java
+++ b/java/idea-ui/src/com/intellij/ide/actions/ImportModuleAction.java
@@ -21,7 +21,6 @@ import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.Presentation;
import com.intellij.openapi.fileChooser.FileChooserDescriptor;
-import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory;
import com.intellij.openapi.fileChooser.FileChooserDialog;
import com.intellij.openapi.fileChooser.FileChooserFactory;
import com.intellij.openapi.module.Module;
@@ -80,7 +79,12 @@ public class ImportModuleAction extends AnAction {
@Nullable
public static AddModuleWizard selectFileAndCreateWizard(final Project project, Component dialogParent) {
- FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createSingleFileOrFolderDescriptor();
+ FileChooserDescriptor descriptor = new OpenProjectFileChooserDescriptor(true) {
+ @Override
+ public boolean isFileSelectable(VirtualFile file) {
+ return file.isDirectory() || isProjectFile(file);
+ }
+ };
descriptor.setTitle("Select File or Directory to Import");
ProjectImportProvider[] providers = ProjectImportProvider.PROJECT_IMPORT_PROVIDER.getExtensions();
String description = getFileChooserDescription(project);
@@ -104,29 +108,23 @@ public class ImportModuleAction extends AnAction {
return project != null || provider.canCreateNewProject();
}
});
- StringBuilder builder = new StringBuilder("Select");
+ StringBuilder builder = new StringBuilder("Select ");
boolean first = true;
if (list.size() > 1) {
for (ProjectImportProvider provider : list) {
String sample = provider.getFileSample();
if (sample != null) {
if (!first) {
- builder.append(',');
+ builder.append(",
");
}
else {
first = false;
}
- builder.append(" ").append(sample).append("");
- if (sample.contains("*")) {
- builder.append(" file");
- }
+ builder.append(sample);
}
}
}
- if (!first) {
- builder.append(" or");
- }
- builder.append(" directory with existing sources to be imported.");
+ builder.append(".");
return builder.toString();
}
diff --git a/java/idea-ui/src/com/intellij/ide/util/projectWizard/ImportFromSourcesProvider.java b/java/idea-ui/src/com/intellij/ide/util/projectWizard/ImportFromSourcesProvider.java
index b56b99a27ae6..78ad23c1ac32 100644
--- a/java/idea-ui/src/com/intellij/ide/util/projectWizard/ImportFromSourcesProvider.java
+++ b/java/idea-ui/src/com/intellij/ide/util/projectWizard/ImportFromSourcesProvider.java
@@ -21,6 +21,7 @@ import com.intellij.ide.util.projectWizard.importSources.impl.ProjectFromSources
import com.intellij.openapi.roots.ui.configuration.DefaultModulesProvider;
import com.intellij.projectImport.ProjectImportBuilder;
import com.intellij.projectImport.ProjectImportProvider;
+import org.jetbrains.annotations.Nullable;
/**
* @author Dmitry Avdeev
@@ -43,4 +44,10 @@ public class ImportFromSourcesProvider extends ProjectImportProvider {
mode.addSteps(context, DefaultModulesProvider.createForProject(context.getProject()), sequence, getName());
myBuilder = (ProjectImportBuilder)mode.getModuleBuilder();
}
+
+ @Nullable
+ @Override
+ public String getFileSample() {
+ return "directory with existing sources";
+ }
}
diff --git a/java/idea-ui/src/com/intellij/ide/util/projectWizard/ModuleImportProvider.java b/java/idea-ui/src/com/intellij/ide/util/projectWizard/ModuleImportProvider.java
index b1790775ab35..df5ab08f62ae 100644
--- a/java/idea-ui/src/com/intellij/ide/util/projectWizard/ModuleImportProvider.java
+++ b/java/idea-ui/src/com/intellij/ide/util/projectWizard/ModuleImportProvider.java
@@ -53,6 +53,6 @@ public class ModuleImportProvider extends ProjectImportProvider {
@Nullable
@Override
public String getFileSample() {
- return "*.iml";
+ return "Intellij IDEA module file (*.iml)";
}
}
diff --git a/java/idea-ui/src/com/intellij/projectImport/ProjectImportProvider.java b/java/idea-ui/src/com/intellij/projectImport/ProjectImportProvider.java
index 16f16ba36add..8f79e2b39bc8 100644
--- a/java/idea-ui/src/com/intellij/projectImport/ProjectImportProvider.java
+++ b/java/idea-ui/src/com/intellij/projectImport/ProjectImportProvider.java
@@ -26,6 +26,7 @@ import com.intellij.ide.util.projectWizard.WizardContext;
import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
+import org.intellij.lang.annotations.Language;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -97,6 +98,7 @@ public abstract class ProjectImportProvider {
}
@Nullable
+ @Language("HTML")
public String getFileSample() {
return null;
}
diff --git a/plugins/eclipse/src/org/jetbrains/idea/eclipse/importWizard/EclipseProjectImportProvider.java b/plugins/eclipse/src/org/jetbrains/idea/eclipse/importWizard/EclipseProjectImportProvider.java
index 7a47a6caacb7..b83e6c1a36fe 100644
--- a/plugins/eclipse/src/org/jetbrains/idea/eclipse/importWizard/EclipseProjectImportProvider.java
+++ b/plugins/eclipse/src/org/jetbrains/idea/eclipse/importWizard/EclipseProjectImportProvider.java
@@ -23,11 +23,17 @@ package org.jetbrains.idea.eclipse.importWizard;
import com.intellij.ide.util.projectWizard.ModuleWizardStep;
import com.intellij.ide.util.projectWizard.ProjectWizardStepFactory;
import com.intellij.ide.util.projectWizard.WizardContext;
+import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.projectImport.ProjectImportProvider;
+import org.jetbrains.annotations.Nullable;
public class EclipseProjectImportProvider extends ProjectImportProvider {
+
+ private final EclipseProjectOpenProcessor myProcessor;
+
public EclipseProjectImportProvider(final EclipseImportBuilder builder) {
super(builder);
+ myProcessor = new EclipseProjectOpenProcessor(builder);
}
public ModuleWizardStep[] createSteps(WizardContext context) {
@@ -35,4 +41,15 @@ public class EclipseProjectImportProvider extends ProjectImportProvider {
return new ModuleWizardStep[]{new EclipseWorkspaceRootStep(context), new SelectEclipseImportedProjectsStep(context),
stepFactory.createProjectJdkStep(context)/*, stepFactory.createNameAndLocationStep(context)*/};
}
+
+ @Override
+ protected boolean canImportFromFile(VirtualFile file) {
+ return myProcessor.canOpenProject(file);
+ }
+
+ @Nullable
+ @Override
+ public String getFileSample() {
+ return "Eclipse project (.project) or classpath (.classpath) file";
+ }
}
\ No newline at end of file
diff --git a/plugins/eclipse/testData/import/.classpath b/plugins/eclipse/testData/import/.classpath
new file mode 100644
index 000000000000..233be1d2c496
--- /dev/null
+++ b/plugins/eclipse/testData/import/.classpath
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/plugins/eclipse/testData/import/.project b/plugins/eclipse/testData/import/.project
new file mode 100644
index 000000000000..f5a6693fe6c2
--- /dev/null
+++ b/plugins/eclipse/testData/import/.project
@@ -0,0 +1,17 @@
+
+
+ root
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/plugins/eclipse/testSources/org/jetbrains/idea/eclipse/EclipseImportWizardTest.java b/plugins/eclipse/testSources/org/jetbrains/idea/eclipse/EclipseImportWizardTest.java
index 6f50d5899cc2..f40b72d89454 100644
--- a/plugins/eclipse/testSources/org/jetbrains/idea/eclipse/EclipseImportWizardTest.java
+++ b/plugins/eclipse/testSources/org/jetbrains/idea/eclipse/EclipseImportWizardTest.java
@@ -17,10 +17,14 @@ package org.jetbrains.idea.eclipse;
import com.intellij.ide.projectWizard.ProjectWizardTestCase;
import com.intellij.ide.util.projectWizard.ImportFromSourcesProvider;
+import com.intellij.openapi.application.PluginPathManager;
+import com.intellij.openapi.module.Module;
+import com.intellij.openapi.util.io.FileUtil;
import org.jetbrains.idea.eclipse.importWizard.EclipseImportBuilder;
import org.jetbrains.idea.eclipse.importWizard.EclipseProjectImportProvider;
import java.io.File;
+import java.io.IOException;
/**
* @author Dmitry Avdeev
@@ -28,6 +32,32 @@ import java.io.File;
*/
public class EclipseImportWizardTest extends ProjectWizardTestCase {
+ public void testImportProject() throws Exception {
+ Module module = doTest(".project");
+ assertEquals("root", module.getName());
+ }
+
+ public void testImportClasspath() throws Exception {
+ Module module = doTest(".classpath");
+ assertEquals("root", module.getName());
+ }
+
+ public void testImportFromDirectory() throws Exception {
+ Module module = doTest("");
+ assertEquals("root", module.getName());
+ }
+
+ private Module doTest(final String fileName) throws IOException {
+ copyTestData();
+ return importProjectFrom(getProject().getBaseDir().getPath() + "/" + fileName, null,
+ new EclipseProjectImportProvider(new EclipseImportBuilder()));
+ }
+
+ private void copyTestData() throws IOException {
+ final File testRoot = new File(PluginPathManager.getPluginHomePath("eclipse") + "/testData", "import");
+ FileUtil.copyDir(testRoot, new File(getProject().getBaseDir().getPath()));
+ }
+
public void testNothingToImport() throws Exception {
try {
File file = createTempFile("Foo.java", "class Foo {}");
diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/manage/GradleProjectImportProvider.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/manage/GradleProjectImportProvider.java
index 89b21efe0874..77f5639c0aa5 100644
--- a/plugins/gradle/src/org/jetbrains/plugins/gradle/manage/GradleProjectImportProvider.java
+++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/manage/GradleProjectImportProvider.java
@@ -38,6 +38,6 @@ public class GradleProjectImportProvider extends ProjectImportProvider {
@Nullable
@Override
public String getFileSample() {
- return "*.gradle";
+ return "Gradle build script (*.gradle)";
}
}
diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/MavenProjectImportProvider.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/MavenProjectImportProvider.java
index db3f82234951..a6445abb71fa 100644
--- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/MavenProjectImportProvider.java
+++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/MavenProjectImportProvider.java
@@ -24,6 +24,7 @@ import com.intellij.ide.util.projectWizard.ModuleWizardStep;
import com.intellij.ide.util.projectWizard.ProjectWizardStepFactory;
import com.intellij.ide.util.projectWizard.WizardContext;
import com.intellij.openapi.project.Project;
+import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VfsUtilCore;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.projectImport.ProjectImportProvider;
@@ -49,7 +50,7 @@ public class MavenProjectImportProvider extends ProjectImportProvider {
VirtualFile root = ((MavenProjectBuilder)getBuilder()).getRootDirectory();
if (root != null) {
final String relPath = VfsUtilCore.getRelativePath(project.getDirectoryFile(), root, File.separatorChar);
- if (relPath.length() != 0) {
+ if (StringUtil.isNotEmpty(relPath)) {
stringBuilder.append(" [").append(relPath).append("]");
}
}
@@ -88,6 +89,6 @@ public class MavenProjectImportProvider extends ProjectImportProvider {
@Nullable
@Override
public String getFileSample() {
- return "pom.xml";
+ return "Maven project file (pom.xml)";
}
}
\ No newline at end of file