mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Importing for Flex & Eclipse
(cherry picked from commit d487dc2f5ba630dba8d5ffa0de93614963c04b28)
This commit is contained in:
@@ -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("<html>Select");
|
||||
StringBuilder builder = new StringBuilder("<html>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(", <br>");
|
||||
}
|
||||
else {
|
||||
first = false;
|
||||
}
|
||||
builder.append(" <b>").append(sample).append("</b>");
|
||||
if (sample.contains("*")) {
|
||||
builder.append(" file");
|
||||
}
|
||||
builder.append(sample);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!first) {
|
||||
builder.append(" or");
|
||||
}
|
||||
builder.append(" directory with <b>existing sources</b> to be imported.</html>");
|
||||
builder.append(".</html>");
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
|
||||
@@ -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 <b>existing sources</b>";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,6 +53,6 @@ public class ModuleImportProvider extends ProjectImportProvider {
|
||||
@Nullable
|
||||
@Override
|
||||
public String getFileSample() {
|
||||
return "*.iml";
|
||||
return "Intellij IDEA module file (*.iml)";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
+17
@@ -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 "<b>Eclipse</b> project (.project) or classpath (.classpath) file";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="src" path=""/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
|
||||
<classpathentry kind="output" path=""/>
|
||||
</classpath>
|
||||
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>root</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
||||
@@ -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 {}");
|
||||
|
||||
+1
-1
@@ -38,6 +38,6 @@ public class GradleProjectImportProvider extends ProjectImportProvider {
|
||||
@Nullable
|
||||
@Override
|
||||
public String getFileSample() {
|
||||
return "*.gradle";
|
||||
return "<b>Gradle</b> build script (*.gradle)";
|
||||
}
|
||||
}
|
||||
|
||||
+3
-2
@@ -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 "<b>Maven</b> project file (pom.xml)";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user