diff options
author | Tor Norbye <tnorbye@google.com> | 2014-08-20 17:01:23 -0700 |
---|---|---|
committer | Tor Norbye <tnorbye@google.com> | 2014-08-20 17:01:23 -0700 |
commit | 1aa2e09bdbd413eacb677e9fa4b50630530d0656 (patch) | |
tree | 2f4cc6d69645bd460aa253fdecb606d764fbd25d /platform/lang-api/src/com/intellij/psi/util/PsiUtilBase.java | |
parent | 02cf98d65c798d368fcec43ed64a001d513bdd4f (diff) | |
download | idea-1aa2e09bdbd413eacb677e9fa4b50630530d0656.tar.gz |
Snapshot idea/138.1696 from git://git.jetbrains.org/idea/community.git
Change-Id: I50c97b83a815ce635e49a38380ba5b8765e4b16a
Diffstat (limited to 'platform/lang-api/src/com/intellij/psi/util/PsiUtilBase.java')
-rw-r--r-- | platform/lang-api/src/com/intellij/psi/util/PsiUtilBase.java | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/platform/lang-api/src/com/intellij/psi/util/PsiUtilBase.java b/platform/lang-api/src/com/intellij/psi/util/PsiUtilBase.java index 56fe91a0dc28..13f84cb1dc4f 100644 --- a/platform/lang-api/src/com/intellij/psi/util/PsiUtilBase.java +++ b/platform/lang-api/src/com/intellij/psi/util/PsiUtilBase.java @@ -32,6 +32,7 @@ import com.intellij.openapi.fileEditor.TextEditor; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.AsyncResult; import com.intellij.openapi.util.TextRange; +import com.intellij.openapi.vfs.NonPhysicalFileSystem; import com.intellij.openapi.vfs.VFileProperty; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; @@ -221,12 +222,13 @@ public class PsiUtilBase extends PsiUtilCore implements PsiEditorUtil { * Tries to find editor for the given element. * <p/> * There are at least two approaches to achieve the target. Current method is intended to encapsulate both of them: - * <pre> * <ul> * <li>target editor works with a real file that remains at file system;</li> * <li>target editor works with a virtual file;</li> * </ul> - * </pre> + * <p/> + * Please don't use this method for finding an editor for quick fix. + * @see {@link com.intellij.codeInspection.LocalQuickFixAndIntentionActionOnPsiElement} * * @param element target element * @return editor that works with a given element if the one is found; <code>null</code> otherwise @@ -234,30 +236,28 @@ public class PsiUtilBase extends PsiUtilCore implements PsiEditorUtil { @Nullable public static Editor findEditor(@NotNull PsiElement element) { PsiFile psiFile = element.getContainingFile(); - if (psiFile == null) { - return null; - } - VirtualFile virtualFile = psiFile.getOriginalFile().getVirtualFile(); + VirtualFile virtualFile = PsiUtilCore.getVirtualFile(element); if (virtualFile == null) { return null; } - if (virtualFile.isInLocalFileSystem()) { + Project project = psiFile.getProject(); + if (virtualFile.isInLocalFileSystem() || virtualFile.getFileSystem() instanceof NonPhysicalFileSystem) { // Try to find editor for the real file. - final FileEditor[] editors = FileEditorManager.getInstance(psiFile.getProject()).getEditors(virtualFile); + final FileEditor[] editors = FileEditorManager.getInstance(project).getEditors(virtualFile); for (FileEditor editor : editors) { if (editor instanceof TextEditor) { return ((TextEditor)editor).getEditor(); } } } - else if (SwingUtilities.isEventDispatchThread()) { + if (SwingUtilities.isEventDispatchThread()) { // We assume that data context from focus-based retrieval should success if performed from EDT. AsyncResult<DataContext> asyncResult = DataManager.getInstance().getDataContextFromFocus(); if (asyncResult.isDone()) { Editor editor = CommonDataKeys.EDITOR.getData(asyncResult.getResult()); if (editor != null) { - Document cachedDocument = PsiDocumentManager.getInstance(psiFile.getProject()).getCachedDocument(psiFile); + Document cachedDocument = PsiDocumentManager.getInstance(project).getCachedDocument(psiFile); // Ensure that target editor is found by checking its document against the one from given PSI element. if (cachedDocument == editor.getDocument()) { return editor; |