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插件——马里奥进度条

IDEA插件之 Translation

IDEA用上这十大插件绝对舒服

iOS 7 修改默认布局从status bar 底部开始

ios 10 中的 apple-mobile-web-app-status-bar-style

idea插件开发从0入门idea插件开发,idea插件开发教程,如何开发idea插件