Skip to content

Commit 76f88d1

Browse files
committed
layout 파일 생성 코드 추가
1 parent b1d2424 commit 76f88d1

File tree

2 files changed

+19
-8
lines changed

2 files changed

+19
-8
lines changed

src/main/kotlin/kr/co/finda/androidtemplate/actions/CreateFindaTemplateAction.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import com.intellij.openapi.actionSystem.AnAction
44
import com.intellij.openapi.actionSystem.AnActionEvent
55
import com.intellij.openapi.actionSystem.CommonDataKeys
66
import com.intellij.openapi.ui.Messages
7+
import com.intellij.openapi.vfs.VirtualFile
8+
import com.intellij.openapi.vfs.VirtualFileManager
79
import com.intellij.pom.Navigatable
810
import kr.co.finda.androidtemplate.dialogs.CreateFindaTemplateDialog
911

@@ -13,8 +15,8 @@ class CreateFindaTemplateAction : AnAction() {
1315
val currentProject = e.project
1416
val virtualFile = e.getData(CommonDataKeys.VIRTUAL_FILE)
1517

16-
if (virtualFile != null) {
17-
CreateFindaTemplateDialog(virtualFile).showAndGet()
18+
if (virtualFile != null && currentProject != null) {
19+
CreateFindaTemplateDialog(currentProject, virtualFile).showAndGet()
1820
} else {
1921
Messages.showMessageDialog(
2022
currentProject,

src/main/kotlin/kr/co/finda/androidtemplate/dialogs/CreateFindaTemplateDialog.kt

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,21 @@
11
package kr.co.finda.androidtemplate.dialogs
22

3-
import com.intellij.openapi.actionSystem.CommonDataKeys
3+
import com.intellij.openapi.project.Project
44
import com.intellij.openapi.ui.DialogWrapper
5-
import com.intellij.openapi.vfs.LocalFileSystem
65
import com.intellij.openapi.vfs.VfsUtil
76
import com.intellij.openapi.vfs.VirtualFile
87
import com.intellij.openapi.vfs.VirtualFileManager
98
import com.intellij.ui.EnumComboBoxModel
109
import com.intellij.ui.components.JBTextField
1110
import com.intellij.ui.layout.panel
12-
import com.intellij.util.ResourceUtil
1311
import kr.co.finda.androidtemplate.ext.replaceAll
14-
import kr.co.finda.androidtemplate.models.ScreenType
1512
import kr.co.finda.androidtemplate.models.GeneratedFileInfo
13+
import kr.co.finda.androidtemplate.models.ScreenType
1614
import kr.co.finda.androidtemplate.models.TemplateInfo
17-
import java.io.File
1815
import javax.swing.JComponent
1916

2017
class CreateFindaTemplateDialog(
18+
private val project: Project,
2119
private val virtualFile: VirtualFile
2220
) : DialogWrapper(true) {
2321

@@ -55,6 +53,7 @@ class CreateFindaTemplateDialog(
5553

5654
createCodeFile(generatedFileInfo, templateInfo.codeTemplateContent)
5755
createViewModelFile(generatedFileInfo, templateInfo.viewModelTemplateContent)
56+
createLayoutFile(generatedFileInfo, templateInfo.layoutTemplateContent)
5857

5958
super.doOKAction()
6059
}
@@ -85,8 +84,18 @@ class CreateFindaTemplateDialog(
8584
}
8685

8786
private fun createLayoutFile(
88-
87+
generatedFileInfo: GeneratedFileInfo,
88+
templateContent: String
8989
) {
90+
val layoutDirectory = VirtualFileManager.getInstance()
91+
.findFileByUrl("file://${project.basePath}/src/main/res/layout")
92+
val layoutFile = layoutDirectory?.createChildData(this, "${generatedFileInfo.layoutFileName}.xml")
93+
94+
val content = templateContent
95+
.replaceAll("@VM_PACKAGE@", generatedFileInfo.viewModelFileName)
9096

97+
layoutFile?.let {
98+
VfsUtil.saveText(layoutFile, content)
99+
}
91100
}
92101
}

0 commit comments

Comments
 (0)