diff options
| author | Kyren223 <ulmliad223@gmail.com> | 2024-08-23 00:31:20 +0300 |
|---|---|---|
| committer | Kyren223 <ulmliad223@gmail.com> | 2024-08-23 00:32:15 +0300 |
| commit | 7451f83d6685073d10df9bae5c957fdb55dcdc53 (patch) | |
| tree | db9a10dcb117263aebcf03b74b5ad68d466d5287 /src/main/kotlin/me/kyren223/trident/ui/TridentMappingsMenu.kt | |
| parent | 43346334c56e47e619d40108a07dd8dc651b11fd (diff) | |
fix: issues with IdeaVim version 2.16.0, everything should work now
Diffstat (limited to 'src/main/kotlin/me/kyren223/trident/ui/TridentMappingsMenu.kt')
| -rw-r--r-- | src/main/kotlin/me/kyren223/trident/ui/TridentMappingsMenu.kt | 171 |
1 files changed, 85 insertions, 86 deletions
diff --git a/src/main/kotlin/me/kyren223/trident/ui/TridentMappingsMenu.kt b/src/main/kotlin/me/kyren223/trident/ui/TridentMappingsMenu.kt index 79f1df8..062c618 100644 --- a/src/main/kotlin/me/kyren223/trident/ui/TridentMappingsMenu.kt +++ b/src/main/kotlin/me/kyren223/trident/ui/TridentMappingsMenu.kt @@ -1,86 +1,85 @@ -package me.kyren223.trident.ui - -import com.intellij.openapi.editor.EditorSettings -import com.intellij.openapi.editor.LogicalPosition -import com.intellij.openapi.project.Project -import com.intellij.openapi.ui.DialogWrapper -import com.intellij.ui.EditorTextField -import com.maddyhome.idea.vim.newapi.vim -import com.maddyhome.idea.vim.state.mode.Mode -import me.kyren223.trident.data.SettingsState -import me.kyren223.trident.utils.TridentMappings -import me.kyren223.trident.utils.setEditorMode -import java.awt.event.FocusEvent -import java.awt.event.FocusListener -import javax.swing.JComponent - -class TridentMappingsMenu(private val content: String) : DialogWrapper(true) { - private lateinit var editor: EditorTextField - - init { - val settings = SettingsState.instance.state - this.title = "Trident Mappings" - setSize(settings.width, settings.height) - super.init() - } - - override fun createCenterPanel(): JComponent { - editor = EditorTextField(this.content) - editor.setOneLineMode(false) - editor.addSettingsProvider { - it.setFontSize(SettingsState.instance.fontSize) - it.isInsertMode = false - it.caretModel.moveToLogicalPosition(LogicalPosition(0, 0)) - it.settings.isLineNumbersShown = true - it.settings.lineNumerationType = EditorSettings.LineNumerationType.ABSOLUTE - } - - editor.addFocusListener(object : FocusListener { - override fun focusGained(e: FocusEvent?) { - val editor = editor.editor!!.vim - setEditorMode(editor, Mode.NORMAL()) - } - - override fun focusLost(e: FocusEvent?) { /* Do nothing */ } - }) - - return editor - } - - override fun getPreferredFocusedComponent(): JComponent { - return this.editor - } - - override fun doOKAction() { - save() - super.doOKAction() - } - - override fun doCancelAction() { - save() - super.doCancelAction() - } - - private fun save() { - map = editor.text.split("\n") - .map { entry -> entry.split("=") } - .filter { entry -> entry.size == 2 } - .associate { it[0] to it[1] } - } - - override fun createSouthPanel(): JComponent? { - return null - } - - companion object { - var map: Map<String, String>? = null - fun open(project: Project) { - val content = TridentMappings.get(project).entries - .joinToString("\n") { "${it.key}=${it.value}" } - val menu = TridentMappingsMenu(content) - menu.show() - map?.let { TridentMappings.set(project, it) } - map = null - } - } -} +package me.kyren223.trident.ui
+
+import com.intellij.openapi.editor.EditorSettings
+import com.intellij.openapi.editor.LogicalPosition
+import com.intellij.openapi.project.Project
+import com.intellij.openapi.ui.DialogWrapper
+import com.intellij.ui.EditorTextField
+import com.maddyhome.idea.vim.newapi.vim
+import com.maddyhome.idea.vim.state.mode.Mode
+import me.kyren223.trident.data.SettingsState
+import me.kyren223.trident.utils.TridentMappings
+import java.awt.event.FocusEvent
+import java.awt.event.FocusListener
+import javax.swing.JComponent
+
+class TridentMappingsMenu(private val content: String) : DialogWrapper(true) {
+ private lateinit var editor: EditorTextField
+
+ init {
+ val settings = SettingsState.instance.state
+ this.title = "Trident Mappings"
+ setSize(settings.width, settings.height)
+ super.init()
+ }
+
+ override fun createCenterPanel(): JComponent {
+ editor = EditorTextField(this.content)
+ editor.setOneLineMode(false)
+ editor.addSettingsProvider {
+ it.setFontSize(SettingsState.instance.fontSize)
+ it.isInsertMode = false
+ it.caretModel.moveToLogicalPosition(LogicalPosition(0, 0))
+ it.settings.isLineNumbersShown = true
+ it.settings.lineNumerationType = EditorSettings.LineNumerationType.ABSOLUTE
+ }
+
+ editor.addFocusListener(object : FocusListener {
+ override fun focusGained(e: FocusEvent?) {
+ val editor = editor.editor!!.vim
+ editor.mode = Mode.NORMAL()
+ }
+
+ override fun focusLost(e: FocusEvent?) { /* Do nothing */ }
+ })
+
+ return editor
+ }
+
+ override fun getPreferredFocusedComponent(): JComponent {
+ return this.editor
+ }
+
+ override fun doOKAction() {
+ save()
+ super.doOKAction()
+ }
+
+ override fun doCancelAction() {
+ save()
+ super.doCancelAction()
+ }
+
+ private fun save() {
+ map = editor.text.split("\n")
+ .map { entry -> entry.split("=") }
+ .filter { entry -> entry.size == 2 }
+ .associate { it[0] to it[1] }
+ }
+
+ override fun createSouthPanel(): JComponent? {
+ return null
+ }
+
+ companion object {
+ var map: Map<String, String>? = null
+ fun open(project: Project) {
+ val content = TridentMappings.get(project).entries
+ .joinToString("\n") { "${it.key}=${it.value}" }
+ val menu = TridentMappingsMenu(content)
+ menu.show()
+ map?.let { TridentMappings.set(project, it) }
+ map = null
+ }
+ }
+}
|
