Add article and tutorial about Navigation Bar

* add docs about navigation bar for Custom Language Support topic
* add info in `topics/intro/content_updates.md`
* renumber articles after the added tutorial
* add `custom_language_tutorial_header` to `structure_aware_navbar.md`
This commit is contained in:
Makhnev Petr 2022-05-24 11:50:04 +03:00 committed by GitHub
parent 5189cec79f
commit 2fe69083d1
4 changed files with 56 additions and 5 deletions

View File

@ -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;
}
}

View File

@ -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; package org.intellij.sdk.language;
@ -20,7 +20,7 @@ public class SimpleStructureViewFactory implements PsiStructureViewFactory {
@NotNull @NotNull
@Override @Override
public StructureViewModel createStructureViewModel(@Nullable Editor editor) { public StructureViewModel createStructureViewModel(@Nullable Editor editor) {
return new SimpleStructureViewModel(psiFile); return new SimpleStructureViewModel(editor, psiFile);
} }
}; };
} }

View File

@ -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; 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.StructureViewModelBase;
import com.intellij.ide.structureView.StructureViewTreeElement; import com.intellij.ide.structureView.StructureViewTreeElement;
import com.intellij.ide.util.treeView.smartTree.Sorter; import com.intellij.ide.util.treeView.smartTree.Sorter;
import com.intellij.openapi.editor.Editor;
import com.intellij.psi.PsiFile; import com.intellij.psi.PsiFile;
import org.intellij.sdk.language.psi.SimpleProperty; import org.intellij.sdk.language.psi.SimpleProperty;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class SimpleStructureViewModel extends StructureViewModelBase implements public class SimpleStructureViewModel extends StructureViewModelBase implements
StructureViewModel.ElementInfoProvider { StructureViewModel.ElementInfoProvider {
public SimpleStructureViewModel(PsiFile psiFile) { public SimpleStructureViewModel(@Nullable Editor editor, PsiFile psiFile) {
super(psiFile, new SimpleStructureViewElement(psiFile)); super(psiFile, editor, new SimpleStructureViewElement(psiFile));
} }
@NotNull @NotNull
@ -33,4 +35,8 @@ public class SimpleStructureViewModel extends StructureViewModelBase implements
return element.getValue() instanceof SimpleProperty; return element.getValue() instanceof SimpleProperty;
} }
@Override
protected Class<?> @NotNull [] getSuitableClasses() {
return new Class[]{SimpleProperty.class};
}
} }

View File

@ -63,6 +63,7 @@
<gotoSymbolContributor implementation="org.intellij.sdk.language.SimpleChooseByNameContributor"/> <gotoSymbolContributor implementation="org.intellij.sdk.language.SimpleChooseByNameContributor"/>
<lang.psiStructureViewFactory language="Simple" <lang.psiStructureViewFactory language="Simple"
implementationClass="org.intellij.sdk.language.SimpleStructureViewFactory"/> implementationClass="org.intellij.sdk.language.SimpleStructureViewFactory"/>
<navbar implementation="org.intellij.sdk.language.SimpleStructureAwareNavbar"/>
<lang.formatter language="Simple" implementationClass="org.intellij.sdk.language.SimpleFormattingModelBuilder"/> <lang.formatter language="Simple" implementationClass="org.intellij.sdk.language.SimpleFormattingModelBuilder"/>
<codeStyleSettingsProvider implementation="org.intellij.sdk.language.SimpleCodeStyleSettingsProvider"/> <codeStyleSettingsProvider implementation="org.intellij.sdk.language.SimpleCodeStyleSettingsProvider"/>
<langCodeStyleSettingsProvider implementation="org.intellij.sdk.language.SimpleLanguageCodeStyleSettingsProvider"/> <langCodeStyleSettingsProvider implementation="org.intellij.sdk.language.SimpleLanguageCodeStyleSettingsProvider"/>