* ide project if it doesn't completely corresponds to the given ide project then.
*
* @param ideProject target ide project
- * @param externalProject target external project
+ * @param projectData target external project
* @return <code>true</code> if given ide project has 1-1 mapping to the given external project;
* <code>false</code> otherwise
*/
- public static boolean isOneToOneMapping(@NotNull Project ideProject, @NotNull DataNode<ProjectData> externalProject) {
+ public static boolean isOneToOneMapping(@NotNull Project ideProject, @NotNull ProjectData projectData) {
String linkedExternalProjectPath = null;
for (ExternalSystemManager<?, ?, ?, ?, ?> manager : getAllManagers()) {
ProjectSystemId externalSystemId = manager.getSystemId();
}
}
- ProjectData projectData = externalProject.getData();
if (linkedExternalProjectPath != null && !linkedExternalProjectPath.equals(projectData.getLinkedExternalProjectPath())) {
// New external project is being linked.
return false;
import com.intellij.ui.CheckBoxList;
import com.intellij.ui.IdeBorderFactory;
import com.intellij.ui.components.JBScrollPane;
-import com.intellij.util.*;
+import com.intellij.util.ArrayUtil;
+import com.intellij.util.Consumer;
+import com.intellij.util.Function;
+import com.intellij.util.SmartList;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.containers.ContainerUtilRt;
import org.jetbrains.annotations.NotNull;
if (!toCreate.isEmpty()) {
createModules(toCreate, modelsProvider, project);
}
+
+ final boolean isOneToOneMapping = projectData != null && ExternalSystemApiUtil.isOneToOneMapping(project, projectData);
+
for (DataNode<E> node : toImport) {
Module module = node.getUserData(MODULE_KEY);
if (module != null) {
setModuleOptions(module, node);
final ModifiableModuleModel modifiableModel = modelsProvider.getModifiableModuleModel();
- modifiableModel.setModuleGroupPath(module, node.getData().getIdeModuleGroup());
+ final String[] groupPath;
+ if (isOneToOneMapping || node.getData().getIdeModuleGroup() == null || projectData == null) {
+ groupPath = node.getData().getIdeModuleGroup();
+ }
+ else {
+ groupPath = ArrayUtil.prepend(projectData.getInternalName() + " modules", node.getData().getIdeModuleGroup());
+ }
+ modifiableModel.setModuleGroupPath(module, groupPath);
ModifiableRootModel modifiableRootModel = modelsProvider.getModifiableRootModel(module);
syncPaths(module, modifiableRootModel, node.getData());
setLanguageLevel(modifiableRootModel, node.getData());
final Module created = modelsProvider.newModule(data.getModuleFilePath(), data.getModuleTypeId());
module.putUserData(MODULE_KEY, created);
Set<String> orphanFiles = project.getUserData(ORPHAN_MODULE_FILES);
- if(orphanFiles != null) {
+ if (orphanFiles != null) {
orphanFiles.remove(created.getModuleFilePath());
}
@Override
public void onSuccessImport(@NotNull Project project) {
final Set<String> orphanFiles = project.getUserData(ORPHAN_MODULE_FILES);
- if(orphanFiles != null && !orphanFiles.isEmpty()) {
+ if (orphanFiles != null && !orphanFiles.isEmpty()) {
ExternalSystemApiUtil.executeOnEdt(false, new Runnable() {
@Override
public void run() {
final ModuleData moduleData =
new ModuleData(mainModuleId, GradleConstants.SYSTEM_ID, StdModuleTypes.JAVA.getId(), moduleName,
mainModuleFileDirectoryPath, mainModuleConfigPath);
- final String[] moduleGroup = null;
- moduleData.setIdeModuleGroup(moduleGroup);
DataNode<ModuleData> mainModuleNode = projectDataNode.createChild(ProjectKeys.MODULE, moduleData);
ExternalProject externalProject = resolverCtx.getExtraProject(gradleModule, ExternalProject.class);
if (externalProject != null) {
+ final String[] moduleGroup = externalProject.getSourceSets().isEmpty() ? null : new String[]{moduleData.getInternalName() + " modules"};
+ moduleData.setIdeModuleGroup(moduleGroup);
+
moduleData.setGroup(externalProject.getGroup());
moduleData.setVersion(externalProject.getVersion());
moduleData.setDescription(externalProject.getDescription());