Skip to content

Commit 3f4d050

Browse files
committed
Implemented LatteStructureViewModel (fixed deprecated)
1 parent f0af53c commit 3f4d050

File tree

5 files changed

+52
-16
lines changed

5 files changed

+52
-16
lines changed

latte-plugin.jar

195 Bytes
Binary file not shown.

resources/META-INF/plugin.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
<p>1.0.1</p>
2222
<ul>
2323
<li>Fixed compatibility issues</li>
24+
<li>Fixed structure view (added n:tags and images)</li>
2425
</ul>
2526
<p>1.0.0</p>
2627
<ul>

src/com/jantvrdik/intellij/latte/editor/LatteStructureViewFactory.java

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,23 @@
11
package com.jantvrdik.intellij.latte.editor;
22

3-
import com.intellij.ide.structureView.StructureView;
43
import com.intellij.ide.structureView.StructureViewBuilder;
54
import com.intellij.ide.structureView.StructureViewModel;
6-
import com.intellij.ide.structureView.StructureViewModelBase;
75
import com.intellij.ide.structureView.TreeBasedStructureViewBuilder;
8-
import com.intellij.ide.structureView.impl.StructureViewComposite;
9-
import com.intellij.ide.structureView.impl.TemplateLanguageStructureViewBuilder;
106
import com.intellij.lang.PsiStructureViewFactory;
117
import com.intellij.openapi.editor.Editor;
12-
import com.intellij.openapi.fileEditor.FileEditor;
138
import com.intellij.psi.PsiFile;
149
import org.jetbrains.annotations.NotNull;
1510
import org.jetbrains.annotations.Nullable;
1611

1712
public class LatteStructureViewFactory implements PsiStructureViewFactory{
18-
1913
@Nullable
2014
@Override
2115
public StructureViewBuilder getStructureViewBuilder(final PsiFile psiFile) {
22-
return new TemplateLanguageStructureViewBuilder(psiFile) {
16+
return new TreeBasedStructureViewBuilder() {
17+
@NotNull
2318
@Override
24-
protected StructureViewComposite.StructureViewDescriptor createMainView(FileEditor fileEditor, PsiFile mainFile) {
25-
StructureView mainView = (new TreeBasedStructureViewBuilder() {
26-
@NotNull
27-
public StructureViewModel createStructureViewModel(@Nullable Editor editor) {
28-
return new StructureViewModelBase(psiFile, editor, new LatteStructureViewTreeElement(psiFile));
29-
}
30-
}).createStructureView(fileEditor, mainFile.getProject());
31-
return new StructureViewComposite.StructureViewDescriptor("Latte", mainView, mainFile.getFileType().getIcon());
19+
public StructureViewModel createStructureViewModel(@Nullable Editor editor) {
20+
return new LatteStructureViewModel(psiFile);
3221
}
3322
};
3423
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.jantvrdik.intellij.latte.editor;
2+
3+
import com.intellij.ide.structureView.*;
4+
import com.intellij.ide.util.treeView.smartTree.Sorter;
5+
import com.intellij.psi.PsiFile;
6+
import com.jantvrdik.intellij.latte.psi.LatteFile;
7+
import org.jetbrains.annotations.NotNull;
8+
9+
public class LatteStructureViewModel extends StructureViewModelBase implements StructureViewModel.ElementInfoProvider {
10+
public LatteStructureViewModel(PsiFile psiFile) {
11+
super(psiFile, new LatteStructureViewTreeElement(psiFile));
12+
}
13+
14+
@NotNull
15+
public Sorter[] getSorters() {
16+
return new Sorter[]{Sorter.ALPHA_SORTER};
17+
}
18+
19+
@Override
20+
public boolean isAlwaysShowsPlus(StructureViewTreeElement element) {
21+
return false;
22+
}
23+
24+
@Override
25+
public boolean isAlwaysLeaf(StructureViewTreeElement element) {
26+
return element instanceof LatteFile;
27+
}
28+
}

src/com/jantvrdik/intellij/latte/editor/LatteStructureViewTreeElement.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,15 @@
33
import com.intellij.ide.structureView.StructureViewTreeElement;
44
import com.intellij.ide.structureView.impl.common.PsiTreeElementBase;
55
import com.intellij.psi.PsiElement;
6+
import com.jantvrdik.intellij.latte.icons.LatteIcons;
67
import com.jantvrdik.intellij.latte.psi.LatteAutoClosedBlock;
78
import com.jantvrdik.intellij.latte.psi.LatteFile;
89
import com.jantvrdik.intellij.latte.psi.LatteMacroClassic;
10+
import com.jantvrdik.intellij.latte.psi.LatteNetteAttr;
911
import org.jetbrains.annotations.NotNull;
1012
import org.jetbrains.annotations.Nullable;
1113

14+
import javax.swing.*;
1215
import java.util.ArrayList;
1316
import java.util.Collection;
1417
import java.util.regex.Matcher;
@@ -28,13 +31,26 @@ public Collection<StructureViewTreeElement> getChildrenBase() {
2831
return elements;
2932
}
3033
for (PsiElement el : getElement().getChildren()) {
31-
if (el instanceof LatteMacroClassic || el instanceof LatteAutoClosedBlock) {
34+
if (el instanceof LatteMacroClassic || el instanceof LatteAutoClosedBlock || el instanceof LatteNetteAttr) {
3235
elements.add(new LatteStructureViewTreeElement(el));
3336
}
3437
}
3538
return elements;
3639
}
3740

41+
@Override
42+
public Icon getIcon(boolean open) {
43+
PsiElement element = getElement();
44+
if (element instanceof LatteMacroClassic || element instanceof LatteAutoClosedBlock) {
45+
return LatteIcons.MACRO;
46+
} else if (element instanceof LatteNetteAttr) {
47+
return LatteIcons.N_TAG;
48+
} else if (element instanceof LatteFile) {
49+
return LatteIcons.FILE;
50+
}
51+
return super.getIcon(open);
52+
}
53+
3854
@Nullable
3955
@Override
4056
public String getPresentableText() {
@@ -52,6 +68,8 @@ public String getPresentableText() {
5268

5369
}
5470
return presentableText;
71+
} else if (element instanceof LatteNetteAttr) {
72+
return ((LatteNetteAttr) element).getAttrName().getText();
5573
} else if (element instanceof LatteFile) {
5674
return ((LatteFile) element).getName();
5775
}

0 commit comments

Comments
 (0)