目录
Intellij 插件开发-AndroidStudio (零)番外
Intellij 插件开发-AndroidStudio(一)--环境构建
Intellij 插件开发-AndroidStudio(二)-文件操作
Intellij 插件开发-AndroidStudio(三)-写入生成代码
Intellij 插件开发-AndroidStudio(四)-添加类和模板
前言
本章节,主要讲解如何在所选目录下添加根据模板创建的类
打个广告,自己写的代码生成插件,自动生成很多实用代码:
https://github.com/JianLin-Shen/MZSluggard-code
正文
不管是添加java类还是别的格式的代码文件,对整个工程来说都是file。所以对Project来说,就是往某个目录想添加文件。
添加class的方法:JavaDirectoryService.getInstance().createClass(directory, "MyTest", "MVPTemplateClass")
代码解读
@Override
public void actionPerformed(AnActionEvent e) {
// TODO: insert action logic here
Project fatherProject = e.getProject();
if (fatherProject == null) {
return;
}
//获取所选的目录,即需要添加类的的包路径file
VirtualFile virtualFile = CommonDataKeys.VIRTUAL_FILE.getData(e.getDataContext());
if (virtualFile == null || !virtualFile.isDirectory()) {
return;
}
//通过所选文件,获取包的directory
PsiDirectory directory = PsiDirectoryFactory.getInstance(fatherProject).createDirectory(virtualFile);
//添加类
JavaDirectoryService.getInstance().createClass(directory, "MyTest", "MVPTemplateClass");
}
模板添加
我们在用编辑器的时候,都知道,可以在编辑器中天机代码模板。
在插件开发中也是一样,我们也可以创建自己自定的模板。
创建流程
- 在根目录的resources目录下创建fileTemplates/internal
- 创建自己的模板文件 xxx.java.ft内容示例如下
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end /** * Author: ${USER} * Created on ${DATE} */ public class ${NAME} extends BaseView{ }
-
在plugin.xml中注册模板
<extensions defaultExtensionNs="com.intellij"> <!-- Add your extensions here --> <internalFileTemplate name="MVPTemplateClass"/> </extensions>
- 至此,模板的创建就完成了。
使用
使用很简单,JavaDirectoryService.getInstance().createClass(directory, "MyTest", "MVPTemplateClass");
MVPTemplateClass就是我创建的目标注册的名字。
创建方法讲解
创建模板的时候,我们可能会涉及到不同字符串对象的引入。这个时候就要借助另一个方法
JavaDirectoryService.getInstance().createClass(Directory, String className, String templateName,boolean arg, Map<String,String> mapParams);
关键参数就是mapParams.如果有多个可变对象,就自定义map传入进去就好了。
如示例中的NAME可以通过下面的方式定义
mapParams.put("NAME","MyClass");
快去试试吧。