@@ -5,6 +5,7 @@ import com.intellij.json.JsonFileType
55import com.intellij.openapi.application.ApplicationManager
66import com.intellij.openapi.editor.Editor
77import com.intellij.openapi.editor.EditorFactory
8+ import com.intellij.openapi.editor.impl.EditorImpl
89import com.intellij.openapi.fileChooser.FileChooser
910import com.intellij.openapi.fileChooser.FileChooserDescriptor
1011import com.intellij.openapi.progress.util.DispatchThreadProgressWindow
@@ -22,9 +23,7 @@ import java.awt.BorderLayout
2223import java.awt.Dimension
2324import java.awt.Toolkit
2425import java.awt.datatransfer.DataFlavor
25- import java.awt.event.ActionEvent
26- import java.awt.event.KeyAdapter
27- import java.awt.event.KeyEvent
26+ import java.awt.event.*
2827import java.net.URL
2928import javax.swing.*
3029import javax.swing.text.JTextComponent
@@ -128,7 +127,7 @@ class JsonInputDialog(classsName: String, private val project: Project) : Messag
128127
129128 private fun createJsonContentEditor (): Editor {
130129 val editorFactory = EditorFactory .getInstance()
131- val document = editorFactory.createDocument(" " ).apply { }
130+ val document = editorFactory.createDocument(" " ).apply { }
132131 document.setReadOnly(false )
133132 document.addDocumentListener(object : com.intellij.openapi.editor.event.DocumentListener {
134133 override fun documentChanged (event : com.intellij.openapi.editor.event.DocumentEvent ? ) = revalidate()
@@ -141,8 +140,20 @@ class JsonInputDialog(classsName: String, private val project: Project) : Messag
141140 component.isEnabled = true
142141 component.preferredSize = Dimension (640 , 480 )
143142 component.autoscrolls = true
143+ component.addFocusListener(object : FocusListener {
144+ override fun focusLost (e : FocusEvent ? ) {
144145
145- editor.contentComponent.componentPopupMenu = JPopupMenu ().apply {
146+ }
147+
148+ override fun focusGained (e : FocusEvent ? ) {
149+ component.isFocusCycleRoot = true
150+
151+ }
152+ })
153+
154+ val contentComponent = editor.contentComponent
155+ contentComponent.isFocusable = true
156+ contentComponent.componentPopupMenu = JPopupMenu ().apply {
146157 add(createPasteFromClipboardMenuItem())
147158 add(createRetrieveContentFromHttpURLMenuItem())
148159 add(createLoadFromLocalFileMenu())
@@ -210,7 +221,7 @@ class JsonInputDialog(classsName: String, private val project: Project) : Messag
210221 override fun getInputString (): String = if (exitCode == 0 ) jsonContentEditor.document.text.trim() else " "
211222
212223 override fun getPreferredFocusedComponent (): JComponent ? {
213- return if (this .myField.text?.isEmpty() != false ) {
224+ return if (this .myField.text.isNullOrEmpty() ) {
214225 this .myField
215226 } else {
216227 jsonContentEditor.contentComponent
0 commit comments