summaryrefslogtreecommitdiff
path: root/platform/external-system-impl/src
diff options
context:
space:
mode:
Diffstat (limited to 'platform/external-system-impl/src')
-rw-r--r--platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/ProjectStructureServices.java42
-rw-r--r--platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/manage/ContentRootDataService.java19
-rw-r--r--platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/manage/ModuleDataService.java1
-rw-r--r--platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/manage/ProjectDataManager.java21
-rw-r--r--platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/settings/AbstractImportFromExternalSystemControl.java5
5 files changed, 38 insertions, 50 deletions
diff --git a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/ProjectStructureServices.java b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/ProjectStructureServices.java
deleted file mode 100644
index 1e6dadd0d3b8..000000000000
--- a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/ProjectStructureServices.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.intellij.openapi.externalSystem.service.project;
-
-import org.jetbrains.annotations.NotNull;
-
-/**
- * Facades all services necessary for the 'sync project changes' processing.
- * <p/>
- * Thread-safe.
- *
- * @author Denis Zhdanov
- * @since 2/14/12 1:26 PM
- */
-public class ProjectStructureServices {
-
- @NotNull private final ProjectStructureHelper myProjectStructureHelper;
- @NotNull private final PlatformFacade myPlatformFacade;
- @NotNull private final ExternalLibraryPathTypeMapper myLibraryPathTypeMapper;
-
- public ProjectStructureServices(@NotNull ProjectStructureHelper projectStructureHelper,
- @NotNull PlatformFacade platformFacade,
- @NotNull ExternalLibraryPathTypeMapper mapper)
- {
- myProjectStructureHelper = projectStructureHelper;
- myPlatformFacade = platformFacade;
- myLibraryPathTypeMapper = mapper;
- }
-
- @NotNull
- public ProjectStructureHelper getProjectStructureHelper() {
- return myProjectStructureHelper;
- }
-
- @NotNull
- public PlatformFacade getPlatformFacade() {
- return myPlatformFacade;
- }
-
- @NotNull
- public ExternalLibraryPathTypeMapper getLibraryPathTypeMapper() {
- return myLibraryPathTypeMapper;
- }
-}
diff --git a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/manage/ContentRootDataService.java b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/manage/ContentRootDataService.java
index 7e7483869728..3e1c95ad3766 100644
--- a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/manage/ContentRootDataService.java
+++ b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/manage/ContentRootDataService.java
@@ -33,8 +33,13 @@ import com.intellij.openapi.externalSystem.util.ExternalSystemConstants;
import com.intellij.openapi.externalSystem.util.Order;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.project.Project;
-import com.intellij.openapi.roots.*;
+import com.intellij.openapi.roots.ContentEntry;
+import com.intellij.openapi.roots.ModifiableRootModel;
+import com.intellij.openapi.roots.ModuleRootModificationUtil;
+import com.intellij.openapi.roots.SourceFolder;
+import com.intellij.openapi.util.registry.Registry;
import com.intellij.openapi.util.text.StringUtil;
+import com.intellij.openapi.vcs.changes.ChangeListManager;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.vfs.VirtualFile;
@@ -151,7 +156,7 @@ public class ContentRootDataService implements ProjectDataService<ContentRootDat
createSourceRootIfAbsent(contentEntry, path, module.getName(), JavaSourceRootType.TEST_SOURCE, true, createEmptyContentRootDirectories);
}
for (SourceRoot path : contentRoot.getPaths(ExternalSystemSourceType.EXCLUDED)) {
- createExcludedRootIfAbsent(contentEntry, path, module.getName());
+ createExcludedRootIfAbsent(contentEntry, path, module.getName(), module.getProject());
}
contentEntriesMap.remove(contentEntry.getUrl());
}
@@ -214,14 +219,18 @@ public class ContentRootDataService implements ProjectDataService<ContentRootDat
}
}
- private static void createExcludedRootIfAbsent(@NotNull ContentEntry entry, @NotNull SourceRoot root, @NotNull String moduleName) {
+ private static void createExcludedRootIfAbsent(@NotNull ContentEntry entry, @NotNull SourceRoot root, @NotNull String moduleName, @NotNull Project project) {
+ String rootPath = root.getPath();
for (VirtualFile file : entry.getExcludeFolderFiles()) {
- if (ExternalSystemApiUtil.getLocalFileSystemPath(file).equals(root.getPath())) {
+ if (ExternalSystemApiUtil.getLocalFileSystemPath(file).equals(rootPath)) {
return;
}
}
LOG.info(String.format("Importing excluded root '%s' for content root '%s' of module '%s'", root, entry.getUrl(), moduleName));
- entry.addExcludeFolder(toVfsUrl(root.getPath()));
+ entry.addExcludeFolder(toVfsUrl(rootPath));
+ if (!Registry.is("ide.hide.excluded.files")) {
+ ChangeListManager.getInstance(project).addDirectoryToIgnoreImplicitly(rootPath);
+ }
}
@Override
diff --git a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/manage/ModuleDataService.java b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/manage/ModuleDataService.java
index 4b1e3b13a22f..32919794eca4 100644
--- a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/manage/ModuleDataService.java
+++ b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/manage/ModuleDataService.java
@@ -274,6 +274,7 @@ public class ModuleDataService implements ProjectDataService<ModuleData, Module>
module.putUserData(MODULE_DATA_KEY, moduleData);
module.setOption(ExternalSystemConstants.EXTERNAL_SYSTEM_ID_KEY, moduleData.getOwner().toString());
+ module.setOption(ExternalSystemConstants.LINKED_PROJECT_ID_KEY, moduleData.getId());
module.setOption(ExternalSystemConstants.LINKED_PROJECT_PATH_KEY, moduleData.getLinkedExternalProjectPath());
final ProjectData projectData = moduleDataNode.getData(ProjectKeys.PROJECT);
module.setOption(ExternalSystemConstants.ROOT_PROJECT_PATH_KEY, projectData != null ? projectData.getLinkedExternalProjectPath() : "");
diff --git a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/manage/ProjectDataManager.java b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/manage/ProjectDataManager.java
index 6575ffb107f0..c2dcfe57b010 100644
--- a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/manage/ProjectDataManager.java
+++ b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/manage/ProjectDataManager.java
@@ -25,6 +25,7 @@ import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.containers.ContainerUtilRt;
import com.intellij.util.containers.Stack;
import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
import java.util.Collection;
import java.util.List;
@@ -40,8 +41,10 @@ public class ProjectDataManager {
private static final Logger LOG = Logger.getInstance("#" + ProjectDataManager.class.getName());
- @NotNull private final NotNullLazyValue<Map<Key<?>, List<ProjectDataService<?, ?>>>> myServices =
- new NotNullLazyValue<Map<Key<?>, List<ProjectDataService<?, ?>>>>() {
+ @NotNull private final NotNullLazyValue<Map<Key<?>, List<ProjectDataService<?, ?>>>> myServices;
+
+ public ProjectDataManager() {
+ myServices = new NotNullLazyValue<Map<Key<?>, List<ProjectDataService<?, ?>>>>() {
@NotNull
@Override
protected Map<Key<?>, List<ProjectDataService<?, ?>>> compute() {
@@ -57,10 +60,22 @@ public class ProjectDataManager {
for (List<ProjectDataService<?, ?>> services : result.values()) {
ExternalSystemApiUtil.orderAwareSort(services);
}
-
return result;
}
};
+ }
+
+ @Nullable
+ public List<ProjectDataService<?, ?>> getDataServices(Key<?> key) {
+ return myServices.getValue().get(key);
+ }
+
+ @Nullable
+ public ProjectDataService<?, ?> getDataService(Key<?> key) {
+ final List<ProjectDataService<?, ?>> dataServices = myServices.getValue().get(key);
+ assert dataServices == null || dataServices.isEmpty() || dataServices.size() == 1;
+ return ContainerUtil.getFirstItem(dataServices);
+ }
@SuppressWarnings("unchecked")
public <T> void importData(@NotNull Collection<DataNode<?>> nodes, @NotNull Project project, boolean synchronous) {
diff --git a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/settings/AbstractImportFromExternalSystemControl.java b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/settings/AbstractImportFromExternalSystemControl.java
index 5dcb5ef71e3b..deb9a9044ea6 100644
--- a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/settings/AbstractImportFromExternalSystemControl.java
+++ b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/settings/AbstractImportFromExternalSystemControl.java
@@ -193,6 +193,11 @@ public abstract class AbstractImportFromExternalSystemControl<
return myProjectSettingsControl;
}
+ @Nullable
+ public ExternalSystemSettingsControl<SystemSettings> getSystemSettingsControl() {
+ return mySystemSettingsControl;
+ }
+
public void setLinkedProjectPath(@NotNull String path) {
myProjectSettings.setExternalProjectPath(path);
myLinkedProjectPathField.setText(path);