diff options
author | Tor Norbye <tnorbye@google.com> | 2014-08-21 00:31:02 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2014-08-16 04:55:08 +0000 |
commit | 9cde0e3c015174898df8b8f3672185941fad4786 (patch) | |
tree | 80a55c7b59c38377216daaada4e8bc47b69ceb9a /platform/lang-api/src/com/intellij/psi/util/PsiUtilBase.java | |
parent | 3b37877a2561bf9fbe072253a18688807d523505 (diff) | |
parent | d76e3920c56d37c942092b7dca20fcaded81c0a5 (diff) | |
download | idea-9cde0e3c015174898df8b8f3672185941fad4786.tar.gz |
Merge "Merge remote-tracking branch 'aosp/upstream-master' into merge"
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; |