diff options
| author | Kyren223 <ulmliad223@gmail.com> | 2024-05-09 18:09:24 +0300 |
|---|---|---|
| committer | Kyren223 <ulmliad223@gmail.com> | 2024-05-09 18:09:24 +0300 |
| commit | 9b9c0f0594209b8c4ecdb7901293734ccf567437 (patch) | |
| tree | 0843cb07aa00ce80418f01a1ad083f72e45d7d93 /src/main/kotlin/me/kyren223/trident/ui | |
| parent | 1e30fa7ded9939fa45a45f82f84c1e8cd95d68aa (diff) | |
Finished implementing all the settings, mapping menu, trident list menu, and fixed all the bugs/issues.
Added more index actions for a total of 10 actions (compared to the original 4).
Updated README.md and TODO.md.
Changed version to 2.0.0.
Versions now follow the semver standard. which means that for each major version there will be backwards incompatible changes. for minor versions there will be new features and bug fixes. and for patch versions there will be bug fixes only.
Diffstat (limited to 'src/main/kotlin/me/kyren223/trident/ui')
3 files changed, 36 insertions, 23 deletions
diff --git a/src/main/kotlin/me/kyren223/trident/ui/SettingsConfigurable.kt b/src/main/kotlin/me/kyren223/trident/ui/SettingsConfigurable.kt index 6283a29..79c4fdc 100644 --- a/src/main/kotlin/me/kyren223/trident/ui/SettingsConfigurable.kt +++ b/src/main/kotlin/me/kyren223/trident/ui/SettingsConfigurable.kt @@ -4,7 +4,7 @@ package me.kyren223.trident.ui import com.intellij.openapi.options.Configurable import com.intellij.openapi.util.NlsContexts.ConfigurableName import me.kyren223.trident.data.SettingsData -import me.kyren223.trident.data.SettingsState +import me.kyren223.trident.data.Settings import javax.swing.JComponent class SettingsConfigurable : Configurable { @@ -21,7 +21,7 @@ class SettingsConfigurable : Configurable { } override fun isModified(): Boolean { - val settings = SettingsState.instance + val settings = Settings.state if (settings.width != this.settings!!.getWidth()) return true if (settings.height != this.settings!!.getHeight()) return true if (settings.fontSize != this.settings!!.getFontSize()) return true @@ -29,11 +29,12 @@ class SettingsConfigurable : Configurable { if (settings.automaticMapping != this.settings!!.getAutomaticMapping()) return true if (settings.recursiveMapping != this.settings!!.getRecursiveMapping()) return true if (settings.rememberLine != this.settings!!.getRememberLine()) return true + if (settings.indexCycling != this.settings!!.getIndexCycling()) return true return false } override fun apply() { - val settings = SettingsState.instance + val settings = Settings.state settings.width = this.settings!!.getWidth() settings.height = this.settings!!.getHeight() settings.fontSize = this.settings!!.getFontSize() @@ -41,10 +42,11 @@ class SettingsConfigurable : Configurable { settings.automaticMapping = this.settings!!.getAutomaticMapping() settings.recursiveMapping = this.settings!!.getRecursiveMapping() settings.rememberLine = this.settings!!.getRememberLine() + settings.indexCycling = this.settings!!.getIndexCycling() } override fun reset() { - val settings = SettingsState.instance + val settings = Settings.state if (this.settings == null) { this.settings = SettingsData() } @@ -55,6 +57,7 @@ class SettingsConfigurable : Configurable { this.settings!!.setAutomaticMapping(settings.automaticMapping) this.settings!!.setRecursiveMapping(settings.recursiveMapping) this.settings!!.setRememberLine(settings.rememberLine) + this.settings!!.setIndexCycling(settings.indexCycling) } override fun disposeUIResources() { diff --git a/src/main/kotlin/me/kyren223/trident/ui/TridentListMenu.kt b/src/main/kotlin/me/kyren223/trident/ui/TridentListMenu.kt index 4062837..af04b7c 100644 --- a/src/main/kotlin/me/kyren223/trident/ui/TridentListMenu.kt +++ b/src/main/kotlin/me/kyren223/trident/ui/TridentListMenu.kt @@ -1,5 +1,3 @@ -@file:Suppress("SameParameterValue") - package me.kyren223.trident.ui import com.intellij.openapi.editor.EditorSettings @@ -10,8 +8,9 @@ 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.data.Settings import me.kyren223.trident.utils.TridentList +import me.kyren223.trident.utils.injectEnterToSelectMapping import me.kyren223.trident.utils.setEditorMode import java.awt.event.FocusEvent import java.awt.event.FocusListener @@ -23,7 +22,7 @@ class TridentListMenu(private val content: String) : DialogWrapper(true) { init { this.title = "Trident List" - val settings = SettingsState.instance + val settings = Settings.state setSize(settings.width, settings.height) super.init() } @@ -32,9 +31,9 @@ class TridentListMenu(private val content: String) : DialogWrapper(true) { editor = EditorTextField(this.content) editor.setOneLineMode(false) editor.addSettingsProvider { - it.setFontSize(SettingsState.instance.fontSize) + it.setFontSize(Settings.state.fontSize) it.isInsertMode = false - val lineNumber = if (SettingsState.instance.rememberLine) line else 0 + val lineNumber = if (Settings.state.rememberLine) line else 0 it.caretModel.moveToLogicalPosition(LogicalPosition(lineNumber, 0)) it.settings.isLineNumbersShown = true it.settings.lineNumerationType = EditorSettings.LineNumerationType.ABSOLUTE @@ -46,7 +45,8 @@ class TridentListMenu(private val content: String) : DialogWrapper(true) { setEditorMode(editor, Mode.NORMAL()) } - override fun focusLost(e: FocusEvent?) { /* Do nothing */ } + override fun focusLost(e: FocusEvent?) { /* Do nothing */ + } }) return editor @@ -58,10 +58,7 @@ class TridentListMenu(private val content: String) : DialogWrapper(true) { } fun select() { - val project = editor.project doOKAction() - val file = TridentList.select(project, line) ?: return - FileEditorManager.getInstance(project).openFile(file, true) } override fun doOKAction() { @@ -75,8 +72,9 @@ class TridentListMenu(private val content: String) : DialogWrapper(true) { } private fun save() { - TridentList.set(editor.project, editor.text.split("\n")) - line = editor.editor!!.caretModel.logicalPosition.line + instance = null + files = editor.text.split("\n") + line = editor.editor?.caretModel?.logicalPosition?.line ?: 0 } override fun createSouthPanel(): JComponent? { @@ -84,11 +82,21 @@ class TridentListMenu(private val content: String) : DialogWrapper(true) { } companion object { + var instance: TridentListMenu? = null + var files: List<String>? = null var line = 0 fun open(project: Project) { val content = TridentList.get(project).joinToString("\n") - val menu = TridentListMenu(content) - menu.show() + instance = TridentListMenu(content) + injectEnterToSelectMapping() + val selected = instance!!.showAndGet() + + files?.let { TridentList.set(project, it) } + files = null + + if (!selected) return + val file = TridentList.select(project, line) ?: return + FileEditorManager.getInstance(project).openFile(file, true) } } } diff --git a/src/main/kotlin/me/kyren223/trident/ui/TridentMappingsMenu.kt b/src/main/kotlin/me/kyren223/trident/ui/TridentMappingsMenu.kt index a84b561..4a6d859 100644 --- a/src/main/kotlin/me/kyren223/trident/ui/TridentMappingsMenu.kt +++ b/src/main/kotlin/me/kyren223/trident/ui/TridentMappingsMenu.kt @@ -7,7 +7,7 @@ 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.data.Settings import me.kyren223.trident.utils.TridentMappings import me.kyren223.trident.utils.setEditorMode import java.awt.event.FocusEvent @@ -18,7 +18,7 @@ class TridentMappingsMenu(private val content: String) : DialogWrapper(true) { private lateinit var editor: EditorTextField init { - val settings = SettingsState.instance + val settings = Settings.state this.title = "Trident Mappings" setSize(settings.width, settings.height) super.init() @@ -28,7 +28,7 @@ class TridentMappingsMenu(private val content: String) : DialogWrapper(true) { editor = EditorTextField(this.content) editor.setOneLineMode(false) editor.addSettingsProvider { - it.setFontSize(SettingsState.instance.fontSize) + it.setFontSize(Settings.state.fontSize) it.isInsertMode = false it.caretModel.moveToLogicalPosition(LogicalPosition(0, 0)) it.settings.isLineNumbersShown = true @@ -62,11 +62,10 @@ class TridentMappingsMenu(private val content: String) : DialogWrapper(true) { } private fun save() { - val map = editor.text.split("\n") + map = editor.text.split("\n") .map { entry -> entry.split("=") } .filter { entry -> entry.size == 2 } .associate { it[0] to it[1] } - TridentMappings.set(editor.project, map) } override fun createSouthPanel(): JComponent? { @@ -74,11 +73,14 @@ class TridentMappingsMenu(private val content: String) : DialogWrapper(true) { } 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 } } } |
