@@ -15,7 +15,10 @@ import com.intellij.util.PlatformIcons
1515import com.longforus.mvpautocodeplus.config.ItemConfigBean
1616import com.longforus.mvpautocodeplus.maker.*
1717import com.longforus.mvpautocodeplus.ui.EnterKeywordDialog
18+ import org.jetbrains.android.dom.manifest.Manifest
1819import org.jetbrains.android.facet.AndroidFacet
20+ import org.jetbrains.android.facet.AndroidRootUtil
21+ import org.jetbrains.android.util.AndroidUtils
1922import org.jetbrains.kotlin.psi.KtFile
2023import com.intellij.openapi.application.runWriteAction as runWriteAction1
2124
@@ -25,14 +28,18 @@ import com.intellij.openapi.application.runWriteAction as runWriteAction1
2528 * Description :
2629 */
2730
28- class MainAction : AnAction (" Generate MVP Code" , " auto make mvp code" , PlatformIcons .CLASS_ICON ), WriteActionAware {
31+ open class MainAction : AnAction (" Generate MVP Code" , " auto make mvp code" , PlatformIcons .CLASS_ICON ), WriteActionAware {
2932 var project: Project ? = null
30- lateinit var mSelectedState: PropertiesComponent
31- fun createFile (enterName : String , templateName : String , dir : PsiDirectory , superImplName : String , contract : PsiFile ? = null, fileName : String = enterName): Pair <PsiFile ?,
33+ private lateinit var mSelectedState: PropertiesComponent
34+ var curAppPackage: String? = null
35+
36+ private fun createFile (enterName : String , templateName : String , dir : PsiDirectory , superImplName : String , contract : PsiFile ? = null, fileName : String = enterName): Pair <PsiFile ?,
3237 PsiClass ?> {
3338 var clazz: PsiClass ? = null
3439 val template = TemplateMaker .getTemplate(templateName, project!! ) ? : return null to null
35- val liveTemplateDefaultValues = TemplateParamFactory .getParam4TemplateName(templateName, enterName, superImplName, contract, mSelectedState)
40+ val liveTemplateDefaultValues = TemplateParamFactory .getParam4TemplateName(templateName, enterName, superImplName, contract, mSelectedState).toMutableMap().also {
41+ it[" CUR_APP_PACKAGE" ] = curAppPackage
42+ }
3643 val psiFile = createFileFromTemplate(fileName, template, dir, null , false , liveTemplateDefaultValues, mSelectedState.getValue(COMMENT_AUTHOR ))
3744 if (! templateName.contains(" Contract" )) {
3845 val openFile = FileEditorManager .getInstance(project!! ).openFile(psiFile!! .virtualFile, false )
@@ -77,6 +84,13 @@ class MainAction : AnAction("Generate MVP Code", "auto make mvp code", PlatformI
7784 mSelectedState = it.state
7885 val module = ModuleUtil .findModuleForFile(dir.virtualFile, project!! )
7986 val facet = AndroidFacet .getInstance(module!! )
87+ if (facet != null ) {
88+ AndroidRootUtil .getManifestFileForCompiler(facet)?.let {
89+ AndroidUtils .loadDomElement(facet.module, it, Manifest ::class .java)?.let {
90+ curAppPackage = it.getPackage()?.value
91+ }
92+ }
93+ }
8094 runWriteAction1 {
8195 if (it.isJava) {
8296 doJavaCreate(it, dir, facet)
@@ -138,7 +152,7 @@ class MainAction : AnAction("Generate MVP Code", "auto make mvp code", PlatformI
138152 }
139153
140154
141- fun getSubDir (dir : PsiDirectory , dirName : String ): PsiDirectory {
155+ private fun getSubDir (dir : PsiDirectory , dirName : String ): PsiDirectory {
142156 return if (dir.name == CONTRACT ) {
143157 if (dirName == CONTRACT ) {
144158 dir
@@ -162,7 +176,7 @@ class MainAction : AnAction("Generate MVP Code", "auto make mvp code", PlatformI
162176 presentation.isEnabled = enabled
163177 }
164178
165- protected fun isAvailable (dataContext : DataContext ): Boolean {
179+ private fun isAvailable (dataContext : DataContext ): Boolean {
166180 val project = CommonDataKeys .PROJECT .getData(dataContext)
167181 val view = LangDataKeys .IDE_VIEW .getData(dataContext)
168182 return project != null && view != null && view.directories.isNotEmpty()
0 commit comments