每天读一篇一线开发者原创好文 作者简介 作者姚刚,网管软件开发高级工程师,开源软件爱好者,对性能调优有深入研究,近年致力于TDD、重构、DDD、DSL等研究以及在团队中的落地。 今天他通过实战方式,为我们带来关于IDEA 插件开发全流程,希望给每个想要学习IDEA插件开发的朋友们提供些许帮助。 1.开发环境搭建 2.开发流程2.1.开发插件访问入口(Action)(1)扩展抽象类AnAction Code: (点击查看大图) (2)将扩展类注册到plugin.xml文件actions节点中,并完成相关属性配置。 属性含义: Id:每个action的唯一标识,要保证整个插件定义中唯一。 Class:插件访问入口类,必须扩展抽象类AnAction Text:插件在界面上的显示文本 Description:插件的描述信息 Icon:插件图标,本例效果: add-to-group:定义action锚点,其中group-id指定显示在某个菜单栏或鼠标右键。 这里以ToolsMenu为例,指定显示在菜单栏“Tools”菜单中。 Anchor指定在菜单中相对于其他菜单项的位置,有三个取值“first”“last”,“before”,“after”。 keyboard-shortcut:定义插件的快捷键。 说明:当通过IDEA新建Action的时候,IDEA也会自动完成Aciton在plugin.xml文件中的注册配置,注册内容如下(其中部分属性内容可通过后期手动配置进行修改添加)。 2.2开发插件配置面板(SearchableConfigurable)(1)实现SearchableConfigurable接口 三个关键方法: getDisplayName:控制在配置面板中左侧窗口的显示名称。 createComponent:配置界面的绘制,负责用户输入信息的接受。 isModified:当用户修改配置参数后,在点击“OK”“Apply”按钮前,框架会自动调用该方法,判断是否有修改,进而控制按钮“OK”“Apply”的是否可用。 Apply:用户点击“OK”或“Apply”按钮后会调用该方法,通常用于完成配置信息持久化。 Reset:用户点击“Reset”按钮后,用户界面配置参数重置。 Code: (点击查看大图) (2)界面绘制 可通过所见即所得的绘制工具或插件完成,当然直接编码绘制也可以。 (3)在plugin.xml文件中注册配置面板 含义: applicationConfigurable :配置 2.3 插件配置参数持久化当插件有一些用户定制的配置参数信息时,需要插件具备记忆功能,在IDEA重启后,任然能够生效,这就需要用到插件配置信息持久化接口。 (1)实现接口PersistentStateComponent<Element> (点击查看大图) (2)配置持久化文件位置以及参数 @State(name = 'SearchJar', storages = {@com.intellij.openapi.components.Storage(id = 'other', file ='$APP_CONFIG$/searchJarPath.xml')}) 含义: name:持久化文件组件名称可随意指定,通常用插件名称即可。 storages :定义配置参数的持久化位置。其中$APP_CONFIG$变量为Idea安装后默认的用户路径,例如:C:\Documents and Settings\10139682\.IdeaIC2017.3\config\options\searchJarPath.xml 上面的注解配置参数,在用户通过配置界面设置查找路径后,会自动修改或生成(当文件不存在)如下配置文件: 2.4开发状态栏进度条 对于存在长耗时运算的插件,会了提升用户体验,常常需要增加进度条。 扩展Task.Backgroundable抽象类,并覆盖run方法。 Code: 3.运行效果 3.1插件管理 3.2 Setting配置界面 3.3 插件入口 通过菜单Tools>>Search Jar或执行Ctrl+Alt+U快捷键。 弹出搜索jar输入框 开始执行搜索,任务状态栏显示效果如下 查找结果展示: 插件源码: https://10.89.168.164:8443/svn/Network_Management_Dept4/科室建设/EMS性能告警科/DEV_TEST_TOOLS/Plugin Dev/SearchJar 参考文献: [1]http://blog.csdn.net/chengtt_love/article/details/53745025 [2]http://www./intellij/sdk/docs/welcome.html
|
|