IDEA-197201 Escape theme name in JSON, select and open created file

This commit is contained in:
Yaroslav Pankratyev
2018-08-17 16:53:19 +07:00
parent 0b9551a11f
commit dc79cf0ace
2 changed files with 8 additions and 3 deletions
@@ -1,5 +1,5 @@
{
"name": "${NAME}",
"name": ${NAME},
"dark": ${IS_DARK},
"author": "",
@@ -4,10 +4,12 @@ package org.jetbrains.idea.devkit.actions
import com.intellij.ide.fileTemplates.FileTemplateManager
import com.intellij.ide.fileTemplates.FileTemplateUtil
import com.intellij.ide.ui.UIThemeProvider
import com.intellij.json.psi.JsonElementGenerator
import com.intellij.openapi.actionSystem.AnAction
import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.openapi.actionSystem.LangDataKeys
import com.intellij.openapi.command.WriteCommandAction
import com.intellij.openapi.fileEditor.FileEditorManager
import com.intellij.openapi.module.Module
import com.intellij.openapi.project.Project
import com.intellij.openapi.roots.ModuleRootManager
@@ -27,8 +29,9 @@ import org.jetbrains.idea.devkit.util.PsiUtil
import java.util.*
import javax.swing.JComponent
//TODO better undo support
class NewThemeAction: AnAction() {
val THEME_JSON_TEMPLATE = "ThemeJson.json"
private val THEME_JSON_TEMPLATE = "ThemeJson.json"
private val THEME_PROVIDER_EP_NAME = UIThemeProvider.EP_NAME.name
@@ -44,6 +47,8 @@ class NewThemeAction: AnAction() {
if (dialog.exitCode == DialogWrapper.OK_EXIT_CODE) {
val file = createThemeJson(dialog.name.text, dialog.isDark.isSelected, project, dir)
view.selectElement(file)
FileEditorManager.getInstance(project).openFile(file.virtualFile, true)
registerTheme(dir, file, module)
}
}
@@ -57,7 +62,7 @@ class NewThemeAction: AnAction() {
val fileName = getThemeJsonFileName(themeName)
val template = FileTemplateManager.getInstance(project).getJ2eeTemplate(THEME_JSON_TEMPLATE)
val props = Properties()
props.setProperty("NAME", themeName) //TODO escape for JSON
props.setProperty("NAME", JsonElementGenerator(project).createStringLiteral(themeName).text)
props.setProperty("IS_DARK", isDark.toString())
val created = FileTemplateUtil.createFromTemplate(template, fileName, props, dir)