Idea插件开发-开发自己的第一款idea插件
1|0前言
自己平时用idea开发,就琢磨着idea插件的开发。在这里介绍一下idea大致开发的流程。和自己没事开发的两个简单的idea插件。一个是毒鸡汤插件,一个是代码阅读笔记插件。idea插件开发的资料网上确实不多,学习途径呢,主要是看官方文档和找一些其它的开源插件项目阅读源码。
2|0使用DevKit插件开发流程
- 搭建开发环境
- 创建一个插件项目
- 创建动作(插件具体内容的开发)
- 运行和调试插件
- 部署插件
- 发布插件
2|1环境准备
- 安装IDEA
- 在IDEA中Plugin DevKit,为开发IDEA插件提供支持
- 配置IntelliJ Platform Plugin SDK
2|2创建一个插件项目
2|3创建一个动作action
- ① action的基本信息,其中Name属性的值作为将来菜单的文本内容
- ② 作为Tools菜单下的子菜单
- ③ 子菜单位置放在第一个
- ④ 为子菜单添加快捷键
-
编写点击菜单的通知内容
2|4运行和调试插件
- 和我正常调试java代码一样,也可以在需要的位置打上断点。
2|5部署插件
- 打包
2|6发布插件
注册idea账号访问plugins.jetbrains.com/author/me/
- 登录插件库
3|0小试牛刀之毒鸡汤插件
3|1需求
需求描述
- 在idea启动的时候,弹出对话框,展示一碗毒鸡汤。当点击再干一碗的时候,我们切换内容。
需求分析
- 怎么抓住idea启动的这个时间点?
- 如何显示一个对话框?
- 怎么添加按钮的点击事件?
- 毒鸡汤内容的来源?
3|2代码编写
Components组件
组件类型 | 描述 | 接口 | plugins.xml加载配置元素 |
---|---|---|---|
ApplicationComponent | 在IDEA启动的时候初始化,整个IDEA中只有一个实例。 | ApplicationComponent | |
ProjectComponent | IDEA会为每一个Project实例创建对应级别的Component | ProjectComponent | |
ModuleComponent | IDEA会为每一个已经加载的Project中的每一个模块(Module)创建Module级别的Component | ModuleComponent |
Application 级别的 components 在 IDEA 启动时加载 初始化:调用 initComponent()
方法。所以我们覆写initComponent()
方法,找到idea启动的时点。
弹出对话框
翻阅官方文档www.jetbrains.org/intellij/sd…
自定义按钮,并添加点击事件
覆写createSouthPanel()
方法。
毒鸡汤内容来源
- 获取网上的毒鸡汤API地址,api.nextrt.com/V1/Dutang。
- 为了使用RestTemplate发送Http请求,添加3个依赖包。
- 布局
4|0进入正题之笔记插件
4|1需求
需求描述
- 在idea中选择任意文本,添加笔记的标题和内容。最后可以将笔记按照指定特定模板,生成markdown文章。
- 选中任意文本右键弹出包含自定义的子菜单
JogeenNoteAction
- 点击子菜单
JogeenNoteAction
弹出对话框,在对话框中,编辑这条笔记的标题和内容,点击添加到笔记列表
- 填写文档的标题,点击生成文档。选择生成文档保存的目录
- 打开生成的文档,展示生成的文档
需求分析
- 如何添加一个右键点击之后的子菜单
- 如何获取编辑器中已经选中的文本
- 如何弹出对话,获取用户编辑的笔记内容
- 如何使用ToolWindow展示笔记列表
- 如何在ToolWindow中添加表格
- 如何让用户选择文档生成的目录
- 如何将笔记列表静态化生成文档
4|2代码编写
创建工程
新创建一个工程叫做MarkBook,作为我们的工程名,也作为这个插件产品的名称
添加一个右键点击之后的子菜单
- 创建action,注意选择EditorPopupMenu,顺便设置了快捷键方式ctrl+p
- 创建字后自动生成的配置文件和PopupAction类
- 测试结果
获取编辑器中已经选中的文本
- 修改
PopupAction
对象
弹出对话框,获取用户编辑的笔记内容
-
创建
AddNoteDialog
完善笔记内容
- 确定一条笔记需要的字段创建NoteData类
- 找一个存储位置
- 获取文件名称和类型,存储在全局变量
- 添加笔记到笔记列表集合
如何创建一个ToolWindow
- 创建一个GUI Form
- 创建之后自动生成的NoteListWindow
- 创建NoteListWindowFactory
- 配置加载toolWindow扩展内容
在ToolWindow中添加表格
- 在数据中心添加内容
- 定义表格初始化设置,并在
NoteListWindow
构造方法中调用init
- 在
btnAdd
按钮的点击事件中添加
- 设置关闭
- 设置清空列表
让用户选择文档生成的目录
- 添加文件选择,获取用户选择的目录
将笔记列表静态化生成文档
- 定义处理的接口
- 编写Freemarker的抽象类
- 编写
MDFreeMarkProcessor
继承AbstractFreeMarkerProcessor
。实现抽象方法
- 添加处理操作
- 完善提示
- 对话框提示
- 通知提示
__EOF__

本文作者:菜菜
本文链接:https://www.cnblogs.com/caicz/p/16470174.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/caicz/p/16470174.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
JUST DO IT!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)