Android 工具開發-基於intellij(四)-添加類和模板

目錄

前言

正文

代碼解讀

模板添加

創建流程

使用


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");
    }

 

模板添加

我們在用編輯器的時候,都知道,可以在編輯器中天機代碼模板。

在插件開發中也是一樣,我們也可以創建自己自定的模板。

創建流程

  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");

 

快去試試吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章