show correct qualified name for classes in libraries (PY-556)

This commit is contained in:
Dmitry Jemerov
2010-03-12 22:22:53 +03:00
parent ded5bc0db1
commit 9fc35b4832
@@ -3,13 +3,12 @@ package com.jetbrains.python.psi.impl;
import com.intellij.lang.ASTNode;
import com.intellij.navigation.ItemPresentation;
import com.intellij.openapi.editor.colors.TextAttributesKey;
import com.intellij.openapi.vcs.impl.ExcludedFileIndex;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiNamedElement;
import com.intellij.psi.stubs.IStubElementType;
import com.intellij.psi.stubs.StubElement;
import com.jetbrains.python.psi.resolve.ResolveImportUtil;
import javax.swing.*;
@@ -52,16 +51,13 @@ public abstract class PyPresentableElementImpl<T extends StubElement> extends Py
protected static String getPackageForFile(final PsiFile containingFile) {
final VirtualFile vFile = containingFile.getVirtualFile();
StringBuilder result = new StringBuilder(vFile != null ? vFile.getNameWithoutExtension() : containingFile.getName());
PsiDirectory dir = containingFile.getContainingDirectory();
while(dir != null) {
if (!ExcludedFileIndex.getInstance(containingFile.getProject()).isInContent(dir.getVirtualFile())) {
break;
if (vFile != null) {
final String importableName = ResolveImportUtil.findShortestImportableName(containingFile, vFile);
if (importableName != null) {
return importableName;
}
if (dir.findFile("__init__.py") == null) break;
result.insert(0, dir.getName() + ".");
dir = dir.getParentDirectory();
}
return result.toString();
return "";
}
}