IDEA插件开发(15)---工具窗口
Posted 流子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IDEA插件开发(15)---工具窗口相关的知识,希望对你有一定的参考价值。
工具窗口是 IDE 的子窗口,用于显示信息。这些窗口通常在主窗口的外边缘有自己的工具栏(称为工具窗口栏),其中包含一个或多个工具窗口按钮,这些按钮可激活显示在主 IDE 窗口左侧、底部和右侧的面板。有关工具窗口的详细信息,请参阅IntelliJ 平台 UI 指南中的IntelliJ IDEA Web 帮助和工具窗口主题。
每侧包含两个工具窗口组,主要和次要一个,并且每个组中一次只能激活一个工具窗口。
每个工具窗口都可以显示多个选项卡(或“内容”,因为它们在 API 中被调用)。例如,运行工具窗口为每个活动的运行配置显示一个选项卡,而更改/版本控制工具窗口根据项目中使用的版本控制系统显示一组固定的选项卡。
在插件中使用工具窗口有两种主要场景。使用声明性设置,工具窗口按钮始终可见,用户可以随时激活它并与插件功能交互。或者,使用编程设置,创建工具窗口以显示特定操作的结果,并且可以在操作完成后由用户关闭。
项目级主题ToolWindowManagerListener允许侦听工具窗口(取消)注册/显示事件(请参阅侦听器)。
声明式设置
工具窗口使用扩展点在plugin.xml中注册。com.intellij.toolWindow扩展点属性指定显示工具窗口按钮所需的所有数据:
工具窗口的id- 对应于工具窗口按钮上显示的文本。要提供本地化文本,请在您的消息包toolwindow.stripe.[id]中指定匹配的消息键(带有 的转义空格) (2020.3 及更高版本支持代码洞察力)。_
显示icon在工具窗口按钮上(13x13 像素,灰色和单色;请参阅IntelliJ 平台 UI 指南中的工具窗口和使用图标和图像)
,anchor表示显示工具窗口的屏幕一侧(“左侧”(默认)、“右侧”或“底部”)
属性,secondary指定工具窗口是显示在主要组还是次要组中
除此之外,指定factoryClass属性 - 实现ToolWindowFactory接口的类的名称。当用户点击工具窗口按钮时,createToolWindowContent()工厂类的方法被调用,并初始化工具窗口的UI。此过程确保未使用的工具窗口不会在启动时间或内存使用方面造成任何开销:如果用户不与工具窗口交互,则不会加载或执行任何插件代码。
如果不需要为所有项目显示插件的工具窗口:
2021.1 及更高版本
2019.3 及更早版本
实现isApplicable(Project)方法。
请注意,仅在加载项目时评估条件一次。要在用户使用项目时动态显示和隐藏工具窗口,请使用编程设置进行工具窗口注册。
程序化设置
第二种方法涉及简单地ToolWindowManager.registerToolWindow()从插件代码中调用。该方法有多个重载,可以根据任务使用。使用带组件的重载时,该组件将成为工具窗口中显示的第一个内容(选项卡)。
内容(标签)
显示许多工具窗口的内容需要访问索引。因此,工具窗口通常在构建索引时被禁用,除非ToolWindowFactory工具DumbAware. 对于编程设置,参数canWorkInDumbMode必须true在调用中设置为registerToolWindow().
如前所述,工具窗口可以包含多个内容(选项卡)。要管理工具窗口的内容,请调用ToolWindow.getContentManager(). 要添加内容(选项卡),首先通过调用 创建它ContentManager.getFactory().createContent(),然后使用 将其添加到工具窗口ContentManager.addContent()。用于Content.setDisposer()注册关联Disposable(参见Disposer 和 Disposable)。
关闭标签
插件可以控制是否允许用户全局或按内容关闭选项卡。前者是通过将canCloseContents参数传递给registerToolWindow()函数或通过canCloseContents="true"在plugin.xml中指定来完成的。默认值为false; 除非明确设置,否则调用setClosable(true)内容ContentManager将被忽略。canCloseContents如果通常启用关闭选项卡,插件可以通过调用来禁用特定选项卡的关闭Content.setCloseable(false)。
示例插件
要阐明如何开发创建工具窗口的插件,请考虑代码示例中提供的toolWindow示例插件。
有关如何设置和运行插件的信息,请参阅代码示例。
以上是关于IDEA插件开发(15)---工具窗口的主要内容,如果未能解决你的问题,请参考以下文章
IDEA插件系列(31):Legacy Icon Pack for 2018.2+插件——将新的单色图标更改为彩色的旧图标
IDEA插件系列(33):RestfulTool插件——Restful服务开发辅助工具集