diff --git a/idea/src/org/jetbrains/jet/plugin/structureView/JetStructureViewElement.java b/idea/src/org/jetbrains/jet/plugin/structureView/JetStructureViewElement.java new file mode 100644 index 00000000000..95dc436c654 --- /dev/null +++ b/idea/src/org/jetbrains/jet/plugin/structureView/JetStructureViewElement.java @@ -0,0 +1,71 @@ +package org.jetbrains.jet.plugin.structureView; + +import com.intellij.ide.structureView.StructureViewTreeElement; +import com.intellij.ide.util.treeView.smartTree.TreeElement; +import com.intellij.navigation.ItemPresentation; +import com.intellij.openapi.editor.colors.TextAttributesKey; +import com.intellij.openapi.util.Iconable; +import com.intellij.psi.NavigatablePsiElement; + +import javax.swing.*; + +/** + * @author yole + */ +public class JetStructureViewElement implements StructureViewTreeElement { + private final NavigatablePsiElement myElement; + + public JetStructureViewElement(NavigatablePsiElement element) { + myElement = element; + } + + @Override + public Object getValue() { + return myElement; + } + + @Override + public void navigate(boolean requestFocus) { + myElement.navigate(requestFocus); + } + + @Override + public boolean canNavigate() { + return myElement.canNavigate(); + } + + @Override + public boolean canNavigateToSource() { + return myElement.canNavigateToSource(); + } + + @Override + public ItemPresentation getPresentation() { + return new ItemPresentation() { + @Override + public String getPresentableText() { + return ""; + } + + @Override + public String getLocationString() { + return null; + } + + @Override + public Icon getIcon(boolean open) { + return myElement.getIcon(open ? Iconable.ICON_FLAG_OPEN : Iconable.ICON_FLAG_CLOSED); + } + + @Override + public TextAttributesKey getTextAttributesKey() { + return null; + } + }; + } + + @Override + public TreeElement[] getChildren() { + return new TreeElement[0]; //To change body of implemented methods use File | Settings | File Templates. + } +} diff --git a/idea/src/org/jetbrains/jet/plugin/structureView/JetStructureViewFactory.java b/idea/src/org/jetbrains/jet/plugin/structureView/JetStructureViewFactory.java new file mode 100644 index 00000000000..5e9d3fd2c63 --- /dev/null +++ b/idea/src/org/jetbrains/jet/plugin/structureView/JetStructureViewFactory.java @@ -0,0 +1,24 @@ +package org.jetbrains.jet.plugin.structureView; + +import com.intellij.ide.structureView.StructureViewBuilder; +import com.intellij.ide.structureView.StructureViewModel; +import com.intellij.ide.structureView.TreeBasedStructureViewBuilder; +import com.intellij.lang.PsiStructureViewFactory; +import com.intellij.psi.PsiFile; +import org.jetbrains.annotations.NotNull; + +/** + * @author yole + */ +public class JetStructureViewFactory implements PsiStructureViewFactory { + @Override + public StructureViewBuilder getStructureViewBuilder(final PsiFile psiFile) { + return new TreeBasedStructureViewBuilder() { + @NotNull + @Override + public StructureViewModel createStructureViewModel() { + return new JetStructureViewModel(psiFile); + } + }; + } +} diff --git a/idea/src/org/jetbrains/jet/plugin/structureView/JetStructureViewModel.java b/idea/src/org/jetbrains/jet/plugin/structureView/JetStructureViewModel.java new file mode 100644 index 00000000000..3138e437d72 --- /dev/null +++ b/idea/src/org/jetbrains/jet/plugin/structureView/JetStructureViewModel.java @@ -0,0 +1,15 @@ +package org.jetbrains.jet.plugin.structureView; + +import com.intellij.ide.structureView.StructureViewModelBase; +import com.intellij.ide.structureView.StructureViewTreeElement; +import com.intellij.psi.PsiFile; +import org.jetbrains.annotations.NotNull; + +/** + * @author yole + */ +public class JetStructureViewModel extends StructureViewModelBase { + public JetStructureViewModel(@NotNull PsiFile psiFile) { + super(psiFile, new JetStructureViewElement(psiFile)); + } +}