From 0f728a286df9638f1ba919020a756be76426628e Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Tue, 10 Jul 2018 13:21:14 +0300 Subject: [PATCH] replaced code duplicate --- .../openapi/project/ProjectLocatorImpl.java | 40 ++++++++++--------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/platform/projectModel-impl/src/com/intellij/openapi/project/ProjectLocatorImpl.java b/platform/projectModel-impl/src/com/intellij/openapi/project/ProjectLocatorImpl.java index 56b8b42d4183..2857bf427b92 100644 --- a/platform/projectModel-impl/src/com/intellij/openapi/project/ProjectLocatorImpl.java +++ b/platform/projectModel-impl/src/com/intellij/openapi/project/ProjectLocatorImpl.java @@ -35,28 +35,30 @@ public class ProjectLocatorImpl extends ProjectLocator { @Override @Nullable public Project guessProjectForFile(@Nullable VirtualFile file) { - ProjectManager projectManager = ProjectManager.getInstance(); - if (projectManager == null) return null; - final Project[] projects = projectManager.getOpenProjects(); - if (projects.length == 0) return null; - if (projects.length == 1 && !projects[0].isDisposed()) return projects[0]; + Project project = ProjectCoreUtil.theOnlyOpenProject(); + if (project != null && !project.isDisposed()) return project; - if (file != null) { - Project preferredProject = getPreferredProject(file); - if (preferredProject != null) { - return preferredProject; - } - return ReadAction.compute(()->{ - for (Project project : projects) { - if (project.isInitialized() && !project.isDisposed() && ProjectRootManager.getInstance(project).getFileIndex().isInContent(file)) { - return project; - } - } - return projects[0].isDisposed() ? null : projects[0]; - }); + if (file == null) { + return null; } - return projects[0].isDisposed() ? null : projects[0]; + Project preferredProject = getPreferredProject(file); + if (preferredProject != null) { + return preferredProject; + } + return ReadAction.compute(()->{ + ProjectManager projectManager = ProjectManager.getInstance(); + if (projectManager == null) return null; + final Project[] openProjects = projectManager.getOpenProjects(); + for (Project openProject : openProjects) { + if (openProject.isInitialized() && + !openProject.isDisposed() && + ProjectRootManager.getInstance(openProject).getFileIndex().isInContent(file)) { + return openProject; + } + } + return null; + }); } @Override