IDEA插件开发(22)--Status Bar Widgets
Posted 流子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IDEA插件开发(22)--Status Bar Widgets相关的知识,希望对你有一定的参考价值。
IntelliJ 平台允许插件使用额外的自定义小部件扩展 IDE状态栏。
状态栏小部件是小的 UI 元素,允许为用户提供当前文件、项目、IDE 等的有用信息和设置。例如,状态栏包含显示当前文件编码的小部件,或当前 VCS 分支该项目。
由于突出的演示和有限的空间,它们应该仅用于足够相关的信息或设置以“始终”显示。
用新的小部件扩展状态栏的起点是StatusBarWidgetFactory接口,它在com.intellij.statusBarWidgetFactory扩展点中注册。
如果小部件提供与编辑器文件相关的信息或功能,请考虑扩展StatusBarEditorBasedWidgetFactory该类。
每个小部件工厂从createWidget(). 要控制小部件的处置,请实现disposeWidget(),如果您只想处置它,请使用Disposer.dispose(widget)。
任何小部件都必须实现该StatusBarWidget接口。
要重用 IntelliJ 平台实现,您可以扩展以下两个类之一:
EditorBasedWidget
EditorBasedStatusBarPopup
基于编辑器的小部件
EditorBasedWidget是基本的小部件实现。要实现它,请覆盖ID()where 返回小部件的唯一 ID。稍后可能需要此标识符来获取小部件实例。
使用现有的预定义小部件外观选项之一:
com.intellij.openapi.wm.StatusBarWidget.IconPresentation
只有一个图标的小部件。
示例:PowerSaveStatusWidgetFactory
com.intellij.openapi.wm.StatusBarWidget.TextPresentation
只有一个文本的小部件。
示例:位置面板
com.intellij.openapi.wm.StatusBarWidget.MultipleTextValuesPresentation
带有文本和弹出窗口的小部件。
示例:DvcsStatusWidget
请注意,它们不能组合起来以获取例如图标和文本。
要使用选定的外观,请返回一个实现上述接口之一的类getPresentation()。
要创建具有自定义内容的小部件,它应该实现CustomStatusBarWidget接口。覆盖getComponent()以返回要显示的自定义小部件的组件。
示例:内存使用面板
EditorBasedStatusBarPopup
EditorBasedStatusBarPopup是所有具有带有操作列表的弹出窗口的小部件的基础。例如,当前文件的编码小部件。
要显示的组件从createComponent(). 小部件 IDE 的每次更新都会调用updateComponent()更新此组件。在updateComponent()实现中,您可以描述小部件应如何根据当前状态进行更改。
实现getWidgetState()以返回小部件的当前状态。此状态将传递到updateComponent()小部件更新时。该方法接受当前在编辑器中打开的文件要创建您自己的状态类,请从EditorBasedStatusBarPopup.WidgetState.WidgetState.
实现ID(),并返回小部件的唯一 ID。稍后可能需要此标识符来获取小部件实例。
实现createInstance(),并返回新的小部件实例。
最后,实现该createPopup()方法,该方法返回单击小部件时将显示的弹出窗口。
可以使用 注册要通知小部件更新的自定义侦听器registerCustomListeners()。
要更新小部件,请使用update().
以编程方式控制小部件
默认情况下,向状态栏添加小部件时,可以通过状态栏或小部件的上下文菜单显示/隐藏。
如果您想以编程方式更改可见性,请使用StatusBarWidgetSettings.setEnabled().
该方法的第一个参数是创建小部件的工厂。要获取它,请使用StatusBarWidgetsManager.findWidgetFactory()并传递小部件 ID 和一个布尔值,该值描述小部件是否可见。
此外,您需要更新小部件以使更改生效StatusBarWidgetsManager.updateWidget()。
在 LightEdit 模式下显示小部件
默认情况下,小部件不会在LightEdit模式下显示。要显示小部件,LightEditCompatible请在您的工厂中实施。
以上是关于IDEA插件开发(22)--Status Bar Widgets的主要内容,如果未能解决你的问题,请参考以下文章
IDEA插件系列(91):Mario Progress Bar插件——马里奥进度条