customizable value calculation
[fedora-idea.git] / source / com / intellij / psi / ClassFileViewProvider.java
blob2c0c6f2de7231896b6b0ef0dd1f70ef01dc2b3f3
1 /*
2 * @author max
3 */
4 package com.intellij.psi;
6 import com.intellij.openapi.fileTypes.FileType;
7 import com.intellij.openapi.project.Project;
8 import com.intellij.openapi.roots.ProjectRootManager;
9 import com.intellij.openapi.vfs.VirtualFile;
10 import com.intellij.psi.impl.PsiManagerImpl;
11 import com.intellij.psi.impl.compiled.ClsFileImpl;
12 import com.intellij.testFramework.LightVirtualFile;
13 import org.jetbrains.annotations.NotNull;
15 public class ClassFileViewProvider extends SingleRootFileViewProvider {
16 public ClassFileViewProvider(@NotNull final PsiManager manager, @NotNull final VirtualFile file) {
17 super(manager, file);
20 public ClassFileViewProvider(@NotNull final PsiManager manager, @NotNull final VirtualFile virtualFile, final boolean physical) {
21 super(manager, virtualFile, physical);
24 @Override
25 protected PsiFile creatFile(final Project project, final VirtualFile vFile, final FileType fileType) {
26 if (ProjectRootManager.getInstance(project).getFileIndex().isInLibraryClasses(vFile)) {
27 String name = vFile.getName();
29 // skip inners & anonymous
30 int dotIndex = name.lastIndexOf('.');
31 if (dotIndex < 0) dotIndex = name.length();
32 int index = name.lastIndexOf('$', dotIndex);
33 if (index >= 0) return null;
35 return new ClsFileImpl((PsiManagerImpl)PsiManager.getInstance(project), this);
37 return null;
40 @NotNull
41 public SingleRootFileViewProvider createCopy(final LightVirtualFile copy) {
42 return new ClassFileViewProvider(getManager(), copy, false);