diff --git a/simple_language_plugin/src/main/java/org/intellij/sdk/language/SimpleStructureAwareNavbar.java b/simple_language_plugin/src/main/java/org/intellij/sdk/language/SimpleStructureAwareNavbar.java new file mode 100644 index 000000000..12ae99e1f --- /dev/null +++ b/simple_language_plugin/src/main/java/org/intellij/sdk/language/SimpleStructureAwareNavbar.java @@ -0,0 +1,44 @@ +// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. + +package org.intellij.sdk.language; + +import com.intellij.icons.AllIcons; +import com.intellij.ide.navigationToolbar.StructureAwareNavBarModelExtension; +import com.intellij.lang.Language; +import org.intellij.sdk.language.psi.SimpleFile; +import org.intellij.sdk.language.psi.SimpleProperty; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import javax.swing.Icon; + +public class SimpleStructureAwareNavbar extends StructureAwareNavBarModelExtension { + @NotNull + @Override + protected Language getLanguage() { + return SimpleLanguage.INSTANCE; + } + + @Override + public @Nullable String getPresentableText(Object object) { + if (object instanceof SimpleFile) { + return ((SimpleFile) object).getName(); + } + if (object instanceof SimpleProperty) { + return ((SimpleProperty) object).getName(); + } + + return null; + } + + @Override + @Nullable + public Icon getIcon(Object object) { + if (object instanceof SimpleProperty) { + return AllIcons.Nodes.Property; + } + + return null; + } + +} diff --git a/simple_language_plugin/src/main/java/org/intellij/sdk/language/SimpleStructureViewFactory.java b/simple_language_plugin/src/main/java/org/intellij/sdk/language/SimpleStructureViewFactory.java index 1ac21ceef..3a9114443 100644 --- a/simple_language_plugin/src/main/java/org/intellij/sdk/language/SimpleStructureViewFactory.java +++ b/simple_language_plugin/src/main/java/org/intellij/sdk/language/SimpleStructureViewFactory.java @@ -1,4 +1,4 @@ -// Copyright 2000-2022 JetBrains s.r.o. and other contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package org.intellij.sdk.language; @@ -20,7 +20,7 @@ public class SimpleStructureViewFactory implements PsiStructureViewFactory { @NotNull @Override public StructureViewModel createStructureViewModel(@Nullable Editor editor) { - return new SimpleStructureViewModel(psiFile); + return new SimpleStructureViewModel(editor, psiFile); } }; } diff --git a/simple_language_plugin/src/main/java/org/intellij/sdk/language/SimpleStructureViewModel.java b/simple_language_plugin/src/main/java/org/intellij/sdk/language/SimpleStructureViewModel.java index 25ec9a46f..43cd3684e 100644 --- a/simple_language_plugin/src/main/java/org/intellij/sdk/language/SimpleStructureViewModel.java +++ b/simple_language_plugin/src/main/java/org/intellij/sdk/language/SimpleStructureViewModel.java @@ -1,4 +1,4 @@ -// Copyright 2000-2022 JetBrains s.r.o. and other contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package org.intellij.sdk.language; @@ -6,15 +6,17 @@ import com.intellij.ide.structureView.StructureViewModel; import com.intellij.ide.structureView.StructureViewModelBase; import com.intellij.ide.structureView.StructureViewTreeElement; import com.intellij.ide.util.treeView.smartTree.Sorter; +import com.intellij.openapi.editor.Editor; import com.intellij.psi.PsiFile; import org.intellij.sdk.language.psi.SimpleProperty; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public class SimpleStructureViewModel extends StructureViewModelBase implements StructureViewModel.ElementInfoProvider { - public SimpleStructureViewModel(PsiFile psiFile) { - super(psiFile, new SimpleStructureViewElement(psiFile)); + public SimpleStructureViewModel(@Nullable Editor editor, PsiFile psiFile) { + super(psiFile, editor, new SimpleStructureViewElement(psiFile)); } @NotNull @@ -33,4 +35,8 @@ public class SimpleStructureViewModel extends StructureViewModelBase implements return element.getValue() instanceof SimpleProperty; } + @Override + protected Class @NotNull [] getSuitableClasses() { + return new Class[]{SimpleProperty.class}; + } } diff --git a/simple_language_plugin/src/main/resources/META-INF/plugin.xml b/simple_language_plugin/src/main/resources/META-INF/plugin.xml index ad434bd8a..174c97ca1 100644 --- a/simple_language_plugin/src/main/resources/META-INF/plugin.xml +++ b/simple_language_plugin/src/main/resources/META-INF/plugin.xml @@ -63,6 +63,7 @@ +