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 @@
+