【问题标题】:How to show IntelliJ JSON editor in dialog?如何在对话框中显示 IntelliJ JSON 编辑器?
【发布时间】:2018-06-05 20:45:37
【问题描述】:
我想在我正在为 Kotlin 和 Java 开发的插件的对话框中显示以下类型的编辑器。我试过下面的代码sn-p
editorTextField.setEnabled(true);
editorTextField.setOneLineMode(false);
editorTextField.setFileType(new JsonFileType());
有人能指出如何做到这一点吗?
我特别需要行号、JSON 语法高亮和代码折叠我可以看到所有代码规范here。请帮助我了解如何在我的插件中使用它们。
JSON 编辑器:
【问题讨论】:
标签:
intellij-idea
jetbrains-ide
intellij-plugin
intellij-idea-2016
【解决方案1】:
class JsonOutputDialog(language: Language, project: Project, text: String) : DialogWrapper(project) {
private val panel = JPanel(BorderLayout())
init {
super.setOKActionEnabled(false)
init()
val editorTextField = CustomEditorField(language, project, text)
editorTextField.setOneLineMode(false)
editorTextField.preferredSize = Dimension(800, 600)
editorTextField.isVisible = true
panel.add(editorTextField)
editorTextField.setCaretPosition(0)
}
override fun createCenterPanel() = panel
}
class CustomEditorField(language: Language, project: Project, s: String) : LanguageTextField(language, project, s) {
override fun createEditor(): EditorEx {
val editor = super.createEditor()
editor.setVerticalScrollbarVisible(true)
editor.setHorizontalScrollbarVisible(true)
val settings = editor.settings
settings.isLineNumbersShown = true
settings.isAutoCodeFoldingEnabled = true
settings.isFoldingOutlineShown = true
settings.isAllowSingleLogicalLineFolding = true
settings.isRightMarginShown=true
return editor
}
}
这是你需要做的。这里的关键是使用LanguageTextField 而不是EditorTextField 并覆盖createEditor() 方法来配置您正在寻找的所有选项,例如行号和代码折叠。