@@ -3,13 +3,16 @@ package com.longforus.mvpautocodeplus.maker
33import com.android.resources.ResourceFolderType
44import com.intellij.openapi.application.ApplicationManager
55import com.intellij.openapi.command.WriteCommandAction
6+ import com.intellij.openapi.project.Project
67import com.intellij.openapi.util.io.FileUtil
8+ import com.intellij.openapi.vfs.LocalFileSystem
79import com.intellij.psi.*
810import com.intellij.psi.codeStyle.CodeStyleManager
911import com.intellij.psi.codeStyle.JavaCodeStyleManager
10- import org.jetbrains.android.actions.CreateResourceFileAction
12+ import com.longforus.mvpautocodeplus.config.ItemConfigBean
1113import org.jetbrains.android.dom.manifest.Manifest
1214import org.jetbrains.android.facet.AndroidFacet
15+ import org.jetbrains.android.facet.AndroidRootUtil
1316import org.jetbrains.android.util.AndroidResourceUtil
1417
1518/* *
@@ -18,26 +21,38 @@ import org.jetbrains.android.util.AndroidResourceUtil
1821 * @date 2020/3/18 16:07
1922 */
2023@Throws(Exception ::class )
21- fun doCreateLayoutFile (element : PsiClass ? , directory : PsiDirectory , facet : AndroidFacet , isJava : Boolean ): PsiElement ? {
24+ fun doCreateLayoutFile (ic : ItemConfigBean , element : PsiClass ? , project : Project , facet : AndroidFacet , isJava : Boolean , isActivity : Boolean = true ): PsiElement ? {
2225 return if (element == null ) {
2326 null
2427 } else {
2528 val manifest = Manifest .getMainManifest(facet)
2629 val appPackage = manifest?.getPackage()?.value
27- if (appPackage != null && ! appPackage.isEmpty ()) {
30+ if (appPackage != null && appPackage.isNotEmpty ()) {
2831 ApplicationManager .getApplication().invokeLater {
29- createLayoutFileForActivityOrFragment(facet, element, appPackage, directory, isJava)
32+ LocalFileSystem .getInstance().findFileByPath(AndroidRootUtil .getResourceDirPath(facet) ? : " " )?.let {
33+ PsiManager .getInstance(project).findDirectory(it)?.let {
34+ createLayoutFileForActivityOrFragment(ic,facet, element, appPackage, it, isJava,isActivity)
35+
36+ }
37+ }
38+
3039 }
3140 }
3241 element
3342 }
3443}
3544
36- fun createLayoutFileForActivityOrFragment (facet : AndroidFacet , activityClass : PsiClass , appPackage : String , resDirectory : PsiDirectory , isJava : Boolean ) {
45+ fun createLayoutFileForActivityOrFragment (ic : ItemConfigBean , facet : AndroidFacet , activityClass : PsiClass , appPackage : String , resDirectory : PsiDirectory , isJava : Boolean , isActivity : Boolean ) {
3746 if (! facet.isDisposed && activityClass.isValid) {
3847 val className = activityClass.name
3948 if (className != null ) {
40- val layoutFile = CreateResourceFileAction .createFileResource(facet, ResourceFolderType .LAYOUT , null , null , null , true , " Create Layout For '$className '" , resDirectory, null , false )
49+ // val layoutFile = CreateResourceFileAction.createFileResource(facet, ResourceFolderType.LAYOUT, "activity_auto", null, null, true, "Create Layout For '$className'",
50+ // resDirectory, null, false)
51+
52+ val layoutFile = AndroidResourceUtil .createFileResource(
53+ if (isActivity) " activity_${ic.name.toLowerCase()} " else " frag_${ic.name.toLowerCase()} " , resDirectory.findSubdirectory(" layout" )!! ,
54+ " android.support.constraint.ConstraintLayout" ,
55+ ResourceFolderType .LAYOUT .getName(), false )
4156 val layoutFileName = layoutFile?.name
4257 if (layoutFileName != null ) {
4358 val onCreateMethods = activityClass.findMethodsByName(" getLayoutId" , false )// todo 生成viewBinding
0 commit comments