IDEA-83595 Allow adding more than one gradle project

Don't reuse ExternalProjectSettings object from 'import from external system' wizard at the external system settings (the wizard used to modify data of the project imported previously during the same ide session)
This commit is contained in:
Denis.Zhdanov
2013-05-02 23:54:54 +04:00
parent 413edffa8f
commit e4c35bef3f
3 changed files with 26 additions and 6 deletions
@@ -24,7 +24,7 @@ import org.jetbrains.annotations.NotNull;
* @author Denis Zhdanov
* @since 4/24/13 11:41 AM
*/
public class ExternalProjectSettings implements Comparable<ExternalProjectSettings> {
public abstract class ExternalProjectSettings implements Comparable<ExternalProjectSettings>, Cloneable {
private String myExternalProjectPath;
private boolean myUseAutoImport;
@@ -69,4 +69,12 @@ public class ExternalProjectSettings implements Comparable<ExternalProjectSettin
public String toString() {
return myExternalProjectPath;
}
@NotNull
public abstract ExternalProjectSettings clone();
protected void copyTo(@NotNull ExternalProjectSettings receiver) {
receiver.myExternalProjectPath = myExternalProjectPath;
receiver.myUseAutoImport = myUseAutoImport;
}
}
@@ -127,12 +127,13 @@ public abstract class AbstractExternalProjectImportBuilder<C extends AbstractImp
@SuppressWarnings("unchecked")
@Override
public void run() {
AbstractExternalSystemSettings settings = mySettingsManager.getSettings(project, myExternalSystemId);
final String linkedProjectPath = myControl.getProjectSettings().getExternalProjectPath();
AbstractExternalSystemSettings systemSettings = mySettingsManager.getSettings(project, myExternalSystemId);
ExternalProjectSettings projectSettings = myControl.getProjectSettings().clone();
final String linkedProjectPath = projectSettings.getExternalProjectPath();
assert linkedProjectPath != null;
Set<ExternalProjectSettings> projects = ContainerUtilRt.newHashSet(settings.getLinkedProjectsSettings());
projects.add(myControl.getProjectSettings());
settings.setLinkedProjectsSettings(projects);
Set<ExternalProjectSettings> projects = ContainerUtilRt.newHashSet(systemSettings.getLinkedProjectsSettings());
projects.add(projectSettings);
systemSettings.setLinkedProjectsSettings(projects);
onProjectInit(project);
if (externalProjectNode != null) {
@@ -16,6 +16,7 @@
package org.jetbrains.plugins.gradle.settings;
import com.intellij.openapi.externalSystem.settings.ExternalProjectSettings;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
@@ -43,4 +44,14 @@ public class GradleProjectSettings extends ExternalProjectSettings {
public void setPreferLocalInstallationToWrapper(boolean preferLocalInstallationToWrapper) {
myPreferLocalInstallationToWrapper = preferLocalInstallationToWrapper;
}
@NotNull
@Override
public ExternalProjectSettings clone() {
GradleProjectSettings result = new GradleProjectSettings();
copyTo(result);
result.myGradleHome = myGradleHome;
result.myPreferLocalInstallationToWrapper = myPreferLocalInstallationToWrapper;
return result;
}
}