Skip to content

Commit 319830e

Browse files
committed
complete register and LayoutCreator.kt
1 parent f8a9f45 commit 319830e

File tree

5 files changed

+41
-21
lines changed

5 files changed

+41
-21
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,3 +55,4 @@ crashlytics.properties
5555
crashlytics-build.properties
5656
fabric.properties
5757
gradle.properties
58+
/local.properties

src/main/kotlin/com/longforus/mvpautocodeplus/MainAction.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -96,11 +96,11 @@ class MainAction : AnAction("Generate MVP Code", "auto make mvp code", PlatformI
9696
val sdV = getSubDir(dir, VIEW)
9797
if (it.isActivity) {
9898
val activityKt = createFile(it.name, VIEW_IMPL_TP_ACTIVITY_KOTLIN, sdV, it.vImpl, contractK.first, "${it.name}Activity")
99-
CompleteRegister.registerActivity(activityKt.second, JavaDirectoryService.getInstance().getPackage(dir), facet!!, "")
100-
doCreateLayoutFile(activityKt.second, dir, facet, false)
99+
ComponentRegister.registerActivity(project!!,activityKt.second, JavaDirectoryService.getInstance().getPackage(dir), facet!!, "")
100+
doCreateLayoutFile(it,activityKt.second, project!!, facet, false)
101101
} else {
102102
val fragmentKt = createFile(it.name, VIEW_IMPL_TP_FRAGMENT_KOTLIN, sdV, it.vImpl, contractK.first, "${it.name}Fragment")
103-
doCreateLayoutFile(fragmentKt.second, dir, facet!!, false)
103+
doCreateLayoutFile(it,fragmentKt.second, project!!, facet!!, false,false)
104104
}
105105
}
106106
if (it.pImpl.isNotEmpty()) {
@@ -120,11 +120,11 @@ class MainAction : AnAction("Generate MVP Code", "auto make mvp code", PlatformI
120120
val sdV = getSubDir(dir, VIEW)
121121
if (it.isActivity) {
122122
val activityJava = createFile(it.name, VIEW_IMPL_TP_ACTIVITY_JAVA, sdV, it.vImpl, contractJ.first)
123-
CompleteRegister.registerActivity(activityJava.second, JavaDirectoryService.getInstance().getPackage(dir), facet!!, "")
124-
doCreateLayoutFile(activityJava.second, dir, facet, true)
123+
ComponentRegister.registerActivity(project!!,activityJava.second, JavaDirectoryService.getInstance().getPackage(dir), facet!!, "")
124+
doCreateLayoutFile(it,activityJava.second, project!!, facet, true)
125125
} else {
126126
val fragmentJava = createFile(it.name, VIEW_IMPL_TP_FRAGMENT_JAVA, sdV, it.vImpl, contractJ.first)
127-
doCreateLayoutFile(fragmentJava.second, dir, facet!!, true)
127+
doCreateLayoutFile(it,fragmentJava.second, project!!, facet!!, true,false)
128128
}
129129
}
130130
if (it.pImpl.isNotEmpty()) {

src/main/kotlin/com/longforus/mvpautocodeplus/maker/CompleteRegister.kt renamed to src/main/kotlin/com/longforus/mvpautocodeplus/maker/ComponentRegister.kt

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.longforus.mvpautocodeplus.maker
22

3+
import com.intellij.openapi.command.WriteCommandAction
4+
import com.intellij.openapi.project.Project
35
import com.intellij.openapi.vfs.ReadonlyStatusHandler
46
import com.intellij.psi.PsiClass
57
import com.intellij.psi.PsiPackage
@@ -16,24 +18,27 @@ import org.jetbrains.android.util.AndroidUtils
1618
* @author longforus
1719
* @date 2020/3/18 15:11
1820
*/
19-
object CompleteRegister {
21+
object ComponentRegister {
2022

21-
fun registerActivity(aClass: PsiClass?, aPackage: PsiPackage?, facet: AndroidFacet, label: String?) {
23+
fun registerActivity(project:Project,aClass: PsiClass?, aPackage: PsiPackage?, facet: AndroidFacet, label: String?) {
2224
val manifestFile = AndroidRootUtil.getManifestFile(facet)
23-
if (manifestFile != null && ReadonlyStatusHandler.ensureFilesWritable(facet.module.project, *arrayOf(manifestFile))) {
25+
if (manifestFile != null && ReadonlyStatusHandler.ensureFilesWritable(facet.module.project, manifestFile)) {
2426
val manifest = AndroidUtils.loadDomElement(facet.module, manifestFile,
2527
Manifest::class.java)
2628
if (manifest != null) {
2729
val packageName = manifest.getPackage().value
2830
if (packageName == null || packageName.isEmpty()) {
29-
manifest.getPackage().setValue(aPackage?.qualifiedName)
31+
manifest.getPackage().value = aPackage?.qualifiedName
3032
}
3133
val application = manifest.application
3234
if (application != null) {
33-
val component = addToManifest( aClass!!, application)
34-
if (component != null && !label.isNullOrEmpty()) {
35-
component.label.setValue(ResourceValue.literal(label))
35+
WriteCommandAction.writeCommandAction(project, aClass!!.containingFile).run<Throwable> {
36+
val component = addToManifest( aClass, application)
37+
if (component != null && !label.isNullOrEmpty()) {
38+
component.label.value = ResourceValue.literal(label)
39+
}
3640
}
41+
3742
}
3843
}
3944
}

src/main/kotlin/com/longforus/mvpautocodeplus/maker/LayoutCreator.kt

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,16 @@ package com.longforus.mvpautocodeplus.maker
33
import com.android.resources.ResourceFolderType
44
import com.intellij.openapi.application.ApplicationManager
55
import com.intellij.openapi.command.WriteCommandAction
6+
import com.intellij.openapi.project.Project
67
import com.intellij.openapi.util.io.FileUtil
8+
import com.intellij.openapi.vfs.LocalFileSystem
79
import com.intellij.psi.*
810
import com.intellij.psi.codeStyle.CodeStyleManager
911
import com.intellij.psi.codeStyle.JavaCodeStyleManager
10-
import org.jetbrains.android.actions.CreateResourceFileAction
12+
import com.longforus.mvpautocodeplus.config.ItemConfigBean
1113
import org.jetbrains.android.dom.manifest.Manifest
1214
import org.jetbrains.android.facet.AndroidFacet
15+
import org.jetbrains.android.facet.AndroidRootUtil
1316
import 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

src/main/resources/META-INF/plugin.xml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,7 @@
4646

4747
<depends>com.intellij.modules.lang</depends>
4848
<depends>com.intellij.modules.java</depends>
49-
50-
49+
<depends>org.jetbrains.android</depends>
5150
<extensions defaultExtensionNs="com.intellij">
5251
<applicationConfigurable instance="com.longforus.mvpautocodeplus.config.ConfigComponent"/>
5352
</extensions>

0 commit comments

Comments
 (0)