? ? ?IDEA插件由单project推向支持多module 需要对其中的参数进行更改、还做了其他小工具。相关回顾感悟。
1.插件内参数传递,IDea插件内一般而言有一个环境 变量都可以获取到所哟udall信息,但是想要获取的信息一般不能从本身这个类查找,idea源码的习惯是数据会有一个对应的xxxManage.getInstance 去实例化获取到自己想要的数据。例如AppManage.getInstance
2.ActionEvent和anActionEvent是两个不同的事件,两者上下文传递的信息不一致。一般而言,anActionEvent是最全的数据,而actionEvent不是很齐,想要获取还需要按照1的方法实例化获取。
3.project中的信息非常齐全,一般随意获取自己想要获取到的信息,而module中的信息比较少,想要获取和project中一些而module中没有的数据,需要使用moduleManage
4.关于IDEA插件在项目中显示自定义节点的情况。通常派生于projectNode这个类,为了方便有其他同类型的节点进行继承,对一级节点可以对一些方法进行统一重写,(有些方法也必须要在一级节点进行重写,方便equals等情况)。同时最好添加一个treeProvider,根据对应的逻辑去添加阶段,节点下的内容如果是文件重新过滤,这里就把节点都加上去了。
5. 节点的动作修改为module,传入信息可能变化,需要在过滤显示的情况下(类型要一致)显示出这个action Setvisable
6.文件过去的idea有些前面会带上 file:// 需要subString 6 获取getPath函数转一下 根据实际去掉或者保存file://
7.合理利用工具类,抽象出方法和工具去解耦
8.写文件到json类型中对于idea自带的一些类型不好写入,写一个代理类舍弃掉这些 需要时在运行时补上。同时 fastjson对map类型不友好,写入多组独处时的方法不对劲,最后写入数组,能用数组就数组。
9. 对于idea去做界面,利用他的设计表格做比较快,当然用idea的设计做会硬编码较多。想要做一些自定义修改时,可以利用监听器去做一些东西,比如说关联同步,选择等情况。
10.对于idea自带的方法选择进行重写,需要找他的方法,一般都是有预留接口
11.idea获取自己插件定义在里面的配置文件的方法是 xx.class.getclassloader.getResource(path),相对resources
12. ui线程一般是比较难搞的,dispath什么的可以试试多模态 就是动作的setModel()熟悉 就是这个框可以后台运行。
|