decouple ClassFileViewProvider from ProjectRootManager

This commit is contained in:
Dmitry Jemerov
2011-09-22 19:31:27 +02:00
parent 63a9b32503
commit 1794de37bd
4 changed files with 14 additions and 4 deletions
@@ -19,14 +19,13 @@
*/ */
package com.intellij.psi; package com.intellij.psi;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.roots.ExcludedFileIndex;
import com.intellij.openapi.roots.ProjectFileIndex;
import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.impl.PsiManagerImpl; import com.intellij.psi.impl.PsiManagerImpl;
import com.intellij.psi.impl.compiled.ClsFileImpl; import com.intellij.psi.impl.compiled.ClsFileImpl;
import com.intellij.testFramework.LightVirtualFile;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
public class ClassFileViewProvider extends SingleRootFileViewProvider { public class ClassFileViewProvider extends SingleRootFileViewProvider {
@@ -40,7 +39,7 @@ public class ClassFileViewProvider extends SingleRootFileViewProvider {
@Override @Override
protected PsiFile createFile(final Project project, final VirtualFile vFile, final FileType fileType) { protected PsiFile createFile(final Project project, final VirtualFile vFile, final FileType fileType) {
final ProjectFileIndex fileIndex = ProjectRootManager.getInstance(project).getFileIndex(); final ExcludedFileIndex fileIndex = ServiceManager.getService(project, ExcludedFileIndex.class);
if (fileIndex.isInLibraryClasses(vFile) || !fileIndex.isInSource(vFile)) { if (fileIndex.isInLibraryClasses(vFile) || !fileIndex.isInSource(vFile)) {
String name = vFile.getName(); String name = vFile.getName();
@@ -30,6 +30,7 @@ public abstract class ExcludedFileIndex {
public abstract boolean isInContent(VirtualFile file); public abstract boolean isInContent(VirtualFile file);
public abstract boolean isInSource(VirtualFile file); public abstract boolean isInSource(VirtualFile file);
public abstract boolean isInLibraryClasses(VirtualFile file);
public abstract boolean isExcludedFile(VirtualFile file); public abstract boolean isExcludedFile(VirtualFile file);
/** /**
@@ -44,6 +44,11 @@ public class ProjectExcludedFileIndex extends ExcludedFileIndex {
return myRootManager.getFileIndex().isInSource(file); return myRootManager.getFileIndex().isInSource(file);
} }
@Override
public boolean isInLibraryClasses(VirtualFile file) {
return myRootManager.getFileIndex().isInLibraryClasses(file);
}
public boolean isExcludedFile(final VirtualFile file) { public boolean isExcludedFile(final VirtualFile file) {
return myRootManager.getFileIndex().isIgnored(file); return myRootManager.getFileIndex().isIgnored(file);
} }
@@ -43,6 +43,11 @@ public class DefaultExcludedFileIndex extends ExcludedFileIndex {
return isInContent(file); return isInContent(file);
} }
@Override
public boolean isInLibraryClasses(VirtualFile file) {
return false;
}
public boolean isExcludedFile(final VirtualFile file) { public boolean isExcludedFile(final VirtualFile file) {
return false; return false;
} }