目錄
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");
快去試試吧。