From 3c752ffe6290707e5ba52c4a1d74c86b1f64dcc2 Mon Sep 17 00:00:00 2001 From: Andrey Vokin Date: Wed, 14 Jun 2017 08:53:58 +0200 Subject: [PATCH] Copy reference action. Removed deprecated code usage --- .../ide/actions/CopyReferenceAction.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/ide/actions/CopyReferenceAction.java b/platform/lang-impl/src/com/intellij/ide/actions/CopyReferenceAction.java index 615bdbc31ffc..e0276b738107 100644 --- a/platform/lang-impl/src/com/intellij/ide/actions/CopyReferenceAction.java +++ b/platform/lang-impl/src/com/intellij/ide/actions/CopyReferenceAction.java @@ -41,9 +41,9 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.wm.WindowManager; import com.intellij.openapi.wm.ex.StatusBarEx; import com.intellij.psi.*; +import com.intellij.psi.impl.source.resolve.reference.impl.providers.FileReferenceHelper; +import com.intellij.psi.impl.source.resolve.reference.impl.providers.FileReferenceHelperRegistrar; import com.intellij.util.ArrayUtilRt; -import com.intellij.util.LogicalRoot; -import com.intellij.util.LogicalRootsManager; import com.intellij.util.ObjectUtils; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; @@ -289,8 +289,16 @@ public class CopyReferenceAction extends DumbAwareAction { } private static String getVirtualFileFqn(@NotNull VirtualFile virtualFile, @NotNull Project project) { - final LogicalRoot logicalRoot = LogicalRootsManager.getLogicalRootsManager(project).findLogicalRoot(virtualFile); - VirtualFile logicalRootFile = logicalRoot != null ? logicalRoot.getVirtualFile() : null; + VirtualFile logicalRootFile = null; + for (final FileReferenceHelper helper : FileReferenceHelperRegistrar.getHelpers()) { + if (helper.isMine(project, virtualFile)) { + PsiFileSystemItem root = helper.findRoot(project, virtualFile); + if (root != null && root.getVirtualFile() != null) { + logicalRootFile = root.getVirtualFile(); + break; + } + } + } if (logicalRootFile != null && !virtualFile.equals(logicalRootFile)) { return ObjectUtils.assertNotNull(VfsUtilCore.getRelativePath(virtualFile, logicalRootFile, '/')); }