IntelliJ Platform SDK DevGuide

Structure View

用于特定文件类型的Structure View实现可以在许多级别上进行自定义.

如果自定义语言插件提供了一个实现

StructureView

接口,它可以完全用自定义用户界面组件替换标准结构视图实现.

但是,对于大多数语言而言,这不是必需的,也不是标准

StructureView

IntelliJ Platform 提供的实现可以重用.

结构视图的起点是

PsiStructureViewFactory

interface,在com.intellij.lang.psiStructureViewFactory扩展点中注册.

例:

PsiStructureViewFactory

对于

属性语言插件

重用 IntelliJ Platform 的实现

StructureView,

插件返回一个

TreeBasedStructureViewBuilder

来自它

PsiStructureViewFactory.getStructureViewBuilder()

方法.

作为构建器的模型,插件可以指定子类

TextEditorBasedStructureViewModel,

通过重写此子类的方法,它可以自定义特定语言的结构视图.

:

StructureViewModel

对于

属性语言插件

覆盖的主要方法是getRoot(),它返回实现的类的实例

StructureViewTreeElement

接口.

此接口没有标准实现,因此插件需要完全实现它.

结构视图树通常构建为PSI树的部分镜像.

在执行中

StructureViewTreeElement.getChildren(),

插件可以指定特定PSI树节点的哪些子元素需要在结构视图中表示为元素.

另一个重要的方法是getPresentation(),它可以用来自定义用于表示结构视图中元素的文本,属性和图标.

StructureViewTreeElement.getChildren()的实现需要与TextEditorBasedStructureViewModel.getSuitableClasses()匹配.

后一个方法返回一个’PsiElement \ -derived类的数组,它们可以显示为结构视图元素,并用于在首次打开结构视图或从源代码“自动滚动”时选择与光标位置匹配的结构视图项. 选项被使用.

例:

StructureViewElement

对于

属性语言插件

Last modified: 11 May 2019