diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/checkout/CompositeCheckoutListener.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/checkout/CompositeCheckoutListener.java index 595726b37ab2..6d8ad6155e2d 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/checkout/CompositeCheckoutListener.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/checkout/CompositeCheckoutListener.java @@ -19,8 +19,15 @@ import com.intellij.openapi.extensions.ExtensionPointName; import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectManager; +import com.intellij.openapi.util.Condition; +import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vcs.CheckoutProvider; import com.intellij.openapi.vcs.VcsKey; +import com.intellij.openapi.vfs.VfsUtilCore; +import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.util.containers.ContainerUtil; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.io.File; @@ -64,11 +71,10 @@ public class CompositeCheckoutListener implements CheckoutProvider.Listener { } } - final Project[] openProjects = ProjectManager.getInstance().getOpenProjects(); - if (openProjects.length > 0){ - final Project lastOpenedProject = openProjects[openProjects.length - 1]; + Project project = findProjectByBaseDirLocation(directory); + if (project != null) { for (CheckoutListener listener: listeners) { - listener.processOpenedProject(lastOpenedProject); + listener.processOpenedProject(project); } } } @@ -78,4 +84,15 @@ public class CompositeCheckoutListener implements CheckoutProvider.Listener { notifyCheckoutListeners(myFirstDirectory, true); } } + + @Nullable + static Project findProjectByBaseDirLocation(@NotNull final File directory) { + return ContainerUtil.find(ProjectManager.getInstance().getOpenProjects(), new Condition() { + @Override + public boolean value(Project project) { + VirtualFile baseDir = project.getBaseDir(); + return baseDir != null && FileUtil.filesEqual(VfsUtilCore.virtualToIoFile(baseDir), directory); + } + }); + } } diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/checkout/RegisterMappingCheckoutListener.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/checkout/RegisterMappingCheckoutListener.java index d1fc6f2ed571..74242c609cfe 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/checkout/RegisterMappingCheckoutListener.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/checkout/RegisterMappingCheckoutListener.java @@ -16,17 +16,9 @@ package com.intellij.openapi.vcs.checkout; import com.intellij.openapi.project.Project; -import com.intellij.openapi.project.ProjectManager; -import com.intellij.openapi.util.Condition; -import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vcs.ProjectLevelVcsManager; import com.intellij.openapi.vcs.VcsDirectoryMapping; import com.intellij.openapi.vcs.VcsKey; -import com.intellij.openapi.vfs.VfsUtilCore; -import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.util.containers.ContainerUtil; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import java.io.File; import java.util.Collections; @@ -34,7 +26,7 @@ import java.util.Collections; public class RegisterMappingCheckoutListener implements VcsAwareCheckoutListener { @Override public boolean processCheckedOutDirectory(Project currentProject, File directory, VcsKey vcsKey) { - Project project = findProjectByBaseDirLocation(ProjectManager.getInstance().getOpenProjects(), directory); + Project project = CompositeCheckoutListener.findProjectByBaseDirLocation(directory); if (project != null) { ProjectLevelVcsManager vcsManager = ProjectLevelVcsManager.getInstance(project); if (!vcsManager.hasAnyMappings()) { @@ -44,15 +36,4 @@ public class RegisterMappingCheckoutListener implements VcsAwareCheckoutListener } return false; } - - @Nullable - private static Project findProjectByBaseDirLocation(@NotNull Project[] projects, @NotNull final File directory) { - return ContainerUtil.find(projects, new Condition() { - @Override - public boolean value(Project project) { - VirtualFile baseDir = project.getBaseDir(); - return baseDir != null && FileUtil.filesEqual(VfsUtilCore.virtualToIoFile(baseDir), directory); - } - }); - } }