summaryrefslogtreecommitdiff
path: root/src/main/kotlin/me/kyren223/trident/actions
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/kotlin/me/kyren223/trident/actions')
-rw-r--r--src/main/kotlin/me/kyren223/trident/actions/AppendAction.kt16
-rw-r--r--src/main/kotlin/me/kyren223/trident/actions/SelectAction.kt44
-rw-r--r--src/main/kotlin/me/kyren223/trident/actions/TridentListAction.kt33
-rw-r--r--src/main/kotlin/me/kyren223/trident/actions/TridentListSelectAction.kt14
-rw-r--r--src/main/kotlin/me/kyren223/trident/actions/TridentMappingsAction.kt12
5 files changed, 119 insertions, 0 deletions
diff --git a/src/main/kotlin/me/kyren223/trident/actions/AppendAction.kt b/src/main/kotlin/me/kyren223/trident/actions/AppendAction.kt
new file mode 100644
index 0000000..1b9a2b4
--- /dev/null
+++ b/src/main/kotlin/me/kyren223/trident/actions/AppendAction.kt
@@ -0,0 +1,16 @@
+package me.kyren223.trident.actions
+
+import com.intellij.openapi.actionSystem.AnAction
+import com.intellij.openapi.actionSystem.AnActionEvent
+import com.intellij.openapi.actionSystem.PlatformDataKeys
+import com.intellij.openapi.project.Project
+import com.intellij.openapi.vfs.VirtualFile
+import me.kyren223.trident.utils.TridentList
+
+class AppendAction : AnAction() {
+ override fun actionPerformed(e: AnActionEvent) {
+ val project: Project = e.project ?: return
+ val file: VirtualFile = e.getData(PlatformDataKeys.VIRTUAL_FILE) ?: return
+ TridentList.append(project, file)
+ }
+}
diff --git a/src/main/kotlin/me/kyren223/trident/actions/SelectAction.kt b/src/main/kotlin/me/kyren223/trident/actions/SelectAction.kt
new file mode 100644
index 0000000..37617c4
--- /dev/null
+++ b/src/main/kotlin/me/kyren223/trident/actions/SelectAction.kt
@@ -0,0 +1,44 @@
+package me.kyren223.trident.actions
+
+import com.intellij.openapi.actionSystem.AnAction
+import com.intellij.openapi.actionSystem.AnActionEvent
+import com.intellij.openapi.actionSystem.PlatformDataKeys
+import com.intellij.openapi.fileEditor.FileEditorManager
+import me.kyren223.trident.utils.TridentList
+
+class SelectAction : AnAction() {
+ override fun actionPerformed(e: AnActionEvent) {
+ val project = e.project ?: return
+ var index = when (val actionId = e.actionManager.getId(this)) {
+ NEXT -> {
+ val file = e.getData(PlatformDataKeys.VIRTUAL_FILE) ?: return
+ val current = TridentList.getIndexOfFile(project, file) ?: return
+ current + 1
+ }
+
+ PREV -> {
+ val file = e.getData(PlatformDataKeys.VIRTUAL_FILE) ?: return
+ val current = TridentList.getIndexOfFile(project, file) ?: return
+ current - 1
+ }
+
+ else -> {
+ getIndex(actionId!!)
+ }
+ }
+
+ val file = TridentList.select(project, index) ?: return
+ FileEditorManager.getInstance(project).openFile(file, true)
+ }
+
+ private fun getIndex(actionId: String): Int {
+ return actionId.substring(SELECT.length).toInt() - 1
+ }
+
+ companion object {
+ const val NEXT = "TridentSelectNext"
+ const val PREV = "TridentSelectPrev"
+ const val SELECT = "TridentSelect"
+ }
+}
+
diff --git a/src/main/kotlin/me/kyren223/trident/actions/TridentListAction.kt b/src/main/kotlin/me/kyren223/trident/actions/TridentListAction.kt
new file mode 100644
index 0000000..cef0bf2
--- /dev/null
+++ b/src/main/kotlin/me/kyren223/trident/actions/TridentListAction.kt
@@ -0,0 +1,33 @@
+package me.kyren223.trident.actions
+
+import com.intellij.openapi.actionSystem.AnAction
+import com.intellij.openapi.actionSystem.AnActionEvent
+import com.maddyhome.idea.vim.api.injector
+import com.maddyhome.idea.vim.command.MappingMode
+import com.maddyhome.idea.vim.key.MappingOwner
+import me.kyren223.trident.data.SettingsState
+import me.kyren223.trident.ui.TridentListMenu
+
+class TridentListAction : AnAction() {
+ override fun actionPerformed(e: AnActionEvent) {
+ if (!remapped) remap()
+ val project = e.project ?: return
+ TridentListMenu.open(project)
+ }
+
+ // TODO move the remap to somewhere else
+ private fun remap() {
+ if (!SettingsState.instance.enterToSelect) return
+ val keys = injector.parser.parseKeys(":action TridentQuickMenuSelect<cr>")
+ val keyGroup = injector.keyGroup
+ keyGroup.putKeyMapping(MappingMode.NVO,
+ injector.parser.parseKeys("<cr>"),
+ MappingOwner.Plugin.get("Trident"), keys, false
+ )
+ remapped = true
+ }
+
+ companion object {
+ var remapped = false
+ }
+}
diff --git a/src/main/kotlin/me/kyren223/trident/actions/TridentListSelectAction.kt b/src/main/kotlin/me/kyren223/trident/actions/TridentListSelectAction.kt
new file mode 100644
index 0000000..d1dfd2d
--- /dev/null
+++ b/src/main/kotlin/me/kyren223/trident/actions/TridentListSelectAction.kt
@@ -0,0 +1,14 @@
+package me.kyren223.trident.actions
+
+import com.intellij.openapi.actionSystem.AnAction
+import com.intellij.openapi.actionSystem.AnActionEvent
+import me.kyren223.trident.ui.TridentListMenu
+import me.kyren223.trident.utils.TridentList
+
+class TridentListSelectAction : AnAction() {
+ override fun actionPerformed(e: AnActionEvent) {
+ val project = e.project ?: return
+ TridentList.select(project, TridentListMenu.line)
+ }
+
+}
diff --git a/src/main/kotlin/me/kyren223/trident/actions/TridentMappingsAction.kt b/src/main/kotlin/me/kyren223/trident/actions/TridentMappingsAction.kt
new file mode 100644
index 0000000..b303c9e
--- /dev/null
+++ b/src/main/kotlin/me/kyren223/trident/actions/TridentMappingsAction.kt
@@ -0,0 +1,12 @@
+package me.kyren223.trident.actions
+
+import com.intellij.openapi.actionSystem.AnAction
+import com.intellij.openapi.actionSystem.AnActionEvent
+import me.kyren223.trident.ui.TridentMappingsMenu
+
+class TridentMappingsAction : AnAction() {
+ override fun actionPerformed(e: AnActionEvent) {
+ val project = e.project ?: return
+ TridentMappingsMenu.open(project)
+ }
+}