use java structure view for groovy

This commit is contained in:
peter
2012-01-02 13:09:07 +01:00
parent f48c6a6c49
commit 2a4b7353e5
14 changed files with 26 additions and 753 deletions
@@ -19,15 +19,15 @@ import com.intellij.ide.structureView.StructureViewTreeElement;
import com.intellij.ide.structureView.impl.common.PsiTreeElementBase;
import com.intellij.navigation.ItemPresentation;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiJavaFile;
import com.intellij.psi.PsiClassOwner;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
public class JavaFileTreeElement extends PsiTreeElementBase<PsiJavaFile> implements ItemPresentation {
public JavaFileTreeElement(PsiJavaFile file) {
public class JavaFileTreeElement extends PsiTreeElementBase<PsiClassOwner> implements ItemPresentation {
public JavaFileTreeElement(PsiClassOwner file) {
super(file);
}
@@ -33,10 +33,10 @@ import java.util.Collection;
public class JavaFileTreeModel extends TextEditorBasedStructureViewModel implements StructureViewModel.ElementInfoProvider, PlaceHolder<String> {
private static final Collection<NodeProvider> NODE_PROVIDERS = Arrays.<NodeProvider>asList(new JavaInheritedMembersNodeProvider(),
new JavaAnonymousClassesNodeProvider());
private final PsiJavaFile myFile;
private final PsiClassOwner myFile;
private String myPlace;
public JavaFileTreeModel(@NotNull PsiJavaFile file) {
public JavaFileTreeModel(@NotNull PsiClassOwner file) {
super(file);
myFile = file;
}
@@ -94,19 +94,17 @@ public class JavaFileTreeModel extends TextEditorBasedStructureViewModel impleme
if (super.isSuitable(element)) {
if (element instanceof PsiMethod) {
PsiMethod method = (PsiMethod)element;
PsiElement parent = method.getParent();
if (parent instanceof PsiClass) {
return ((PsiClass)parent).getQualifiedName() != null;
}
PsiClass parent = method.getContainingClass();
return parent != null && parent.getQualifiedName() != null;
}
else if (element instanceof PsiField) {
if (element instanceof PsiField) {
PsiField field = (PsiField)element;
PsiElement parent = field.getParent();
if (parent instanceof PsiClass) {
return ((PsiClass)parent).getQualifiedName() != null;
}
PsiClass parent = field.getContainingClass();
return parent != null && parent.getQualifiedName() != null;
}
else if (element instanceof PsiClass) {
if (element instanceof PsiClass) {
return ((PsiClass)element).getQualifiedName() != null;
}
}