diff --git a/openapi/src/com/intellij/openapi/fileTypes/LanguageFileType.java b/openapi/src/com/intellij/openapi/fileTypes/LanguageFileType.java index b4ba2fb550d0..a68a01cb6796 100644 --- a/openapi/src/com/intellij/openapi/fileTypes/LanguageFileType.java +++ b/openapi/src/com/intellij/openapi/fileTypes/LanguageFileType.java @@ -2,9 +2,10 @@ package com.intellij.openapi.fileTypes; import com.intellij.ide.structureView.StructureViewModel; import com.intellij.lang.Language; -import com.intellij.lang.ParserDefinition; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.psi.PsiFile; +import com.intellij.psi.PsiManager; /** * Created by IntelliJ IDEA. @@ -29,8 +30,8 @@ public abstract class LanguageFileType implements FileType{ } public StructureViewModel getStructureViewModel(VirtualFile file, Project project) { - final ParserDefinition parserDefinition = myLanguage.getParserDefinition(); - return parserDefinition != null ? myLanguage.getStructureViewModel(parserDefinition.createFile(project, file)) : null; + final PsiFile psiFile = PsiManager.getInstance(project).findFile(file); + return psiFile != null ? myLanguage.getStructureViewModel(psiFile) : null; } public final boolean isBinary() { diff --git a/source/com/intellij/ide/structureView/newStructureView/StructureViewComponent.java b/source/com/intellij/ide/structureView/newStructureView/StructureViewComponent.java index 28b6429d135d..561bd5fcea9b 100644 --- a/source/com/intellij/ide/structureView/newStructureView/StructureViewComponent.java +++ b/source/com/intellij/ide/structureView/newStructureView/StructureViewComponent.java @@ -587,7 +587,7 @@ public class StructureViewComponent extends JPanel implements TreeActionsOwner, ArrayList psiElements = new ArrayList(); for (int i = 0; i < selectedElements.length; i++) { Object selectedElement = selectedElements[i]; - if (selectedElement instanceof PsiElement){ + if (selectedElement instanceof PsiElement && ((PsiElement)selectedElement).isValid()){ psiElements.add((PsiElement)selectedElement); } }