Intellij 插件开发-AndroidStudio(四)-添加类和模板

目录

前言

正文

代码解读

模板添加

创建流程

使用


Intellij 插件开发-AndroidStudio (零)番外

Intellij 插件开发-AndroidStudio(一)--环境构建

 Intellij 插件开发-AndroidStudio(二)-文件操作

 Intellij 插件开发-AndroidStudio(三)-写入生成代码

Intellij 插件开发-AndroidStudio(四)-添加类和模板

前言

本章节,主要讲解如何在所选目录下添加根据模板创建的类

正文

不管是添加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");
    }

模板添加

我们在用编辑器的时候,都知道,可以在编辑器中天机代码模板。

在插件开发中也是一样,我们也可以创建自己自定的模板。

创建流程

  1. 在根目录的resources目录下创建fileTemplates/internal
  2. 创建自己的模板文件 xxx.java.ft内容示例如下
    #if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
    /**
     * Author: ${USER}
     * Created on ${DATE}
     */
    public class ${NAME} extends BaseView{
            }
  3. 在plugin.xml中注册模板 

    <extensions defaultExtensionNs="com.intellij">
        <!-- Add your extensions here -->
        <internalFileTemplate name="MVPTemplateClass"/>
    </extensions>
  4. 至此,模板的创建就完成了。

目录

前言

正文

代码解读

模板添加

创建流程

使用


使用

使用很简单,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");

快去试试吧。

猜你喜欢

转载自blog.csdn.net/shenjinalin123/article/details/82621562
今日推荐