准备工作做好之后,接下来就是正题了,在你创建好的action中,就可以开始写你的插件功能了,通过getData(PlatformDataKeys.PROJECT)获取到Project对象。
我想开发一个获取当前的项目依赖列表的插件,所以我这里新建了个弹框DevPanel
public class DevelopAction extends AnAction {
@Override
public void actionPerformed(AnActionEvent e) {
Project project = e.getData(PlatformDataKeys.PROJECT);
XMan.init(project);
new DevPanel(project).show();
}
}
DevPanel其实就是一个dialog弹框,弹出效果如下图所示
由于弹框中需要展示依赖配置列表,我创建了一个scrollPane,来包裹list(Swing中的list本身虽然是列表,但是不支持滚动,滚动效果需要scrollPanel来帮助实现)。
val center = JPanel()
loadKitConfig()
val scrollPane = JScrollPane().apply {
preferredSize = Dimension(200, 200)
verticalScrollBarPolicy = ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS
isWheelScrollingEnabled = true
}
scrollPane.setViewportView(listModule)
center.add(scrollPane, BorderLayout.CENTER)
其中loadKitConfig是用来加载本地依赖配置信息的
private fun loadKitConfig() {
val kitConfig = DevUtil.getProjectConfig()
kitConfig?.modules?.let {
val list = DefaultListModel<KitConfig.ModuleInfo>()
it.forEach { info ->
list.addElement(info)
}
listModule.model = list
}
}
当然最开始肯定是没有这个配置的,所以需要开发人员手动配置一下(后续版本会优化成自动获取),点击“添加模块依赖按钮”会弹出下面的弹框,用来配置你需要本地开发的依赖模块的信息: 依赖名:你项目中implementation或者api后面的sdk依赖名,比如
implementation "androidx.core:core-ktx:1.7.0" ,你这里直接写androidx.core:core-ktx; 本项目/其他项目是针对于本地依赖(比如core-ktx)的模块是否和当前project同属一个; 版本号为依赖库的版本号(1.7.0),最后在路径那里选择你本地模块的路径,点击ok即可
之后依赖列表会自动刷新你新添加的依赖。
最后附github地址