diff options
| author | Kyren223 <ulmliad223@gmail.com> | 2024-02-23 23:11:09 +0200 |
|---|---|---|
| committer | Kyren223 <ulmliad223@gmail.com> | 2024-02-23 23:11:09 +0200 |
| commit | 5da72c7ec98edfab7fbebc335e1a9fba116988a5 (patch) | |
| tree | b44ff2e0a10c1f5c58c7da50c91efc1b7dd2be9d /src/main/kotlin/me/kyren223/trident/SelectAction.kt | |
| parent | 1017f0d17aa1c745ec0af2de4239c37816d040eb (diff) | |
Added a new menu for path mappings to allow shortcuts like the built-in `...`
Note: need to rethink how normal paths are saved, they should potentially be saved raw (not absolute paths) and then the virtual file list needs to change to string and then dynamically on the fly replace with mappings of key -> value to make an absolute path that then will be used
Diffstat (limited to 'src/main/kotlin/me/kyren223/trident/SelectAction.kt')
| -rw-r--r-- | src/main/kotlin/me/kyren223/trident/SelectAction.kt | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/main/kotlin/me/kyren223/trident/SelectAction.kt b/src/main/kotlin/me/kyren223/trident/SelectAction.kt new file mode 100644 index 0000000..2e09bb9 --- /dev/null +++ b/src/main/kotlin/me/kyren223/trident/SelectAction.kt @@ -0,0 +1,43 @@ +package me.kyren223.trident + +import com.intellij.openapi.actionSystem.AnAction +import com.intellij.openapi.actionSystem.AnActionEvent +import com.intellij.openapi.actionSystem.PlatformDataKeys +import com.intellij.openapi.fileEditor.FileEditorManager + +class SelectAction : AnAction() { + override fun actionPerformed(e: AnActionEvent) { + val project = e.project ?: return + var index = when (val actionId = e.actionManager.getId(this)) { + NEXT -> { + val current = TridentState.getIndexOfFile(project, e.getData(PlatformDataKeys.VIRTUAL_FILE)) + if (current == -1) return + current + 1 + } + PREV -> { + val current = TridentState.getIndexOfFile(project, e.getData(PlatformDataKeys.VIRTUAL_FILE)) + if (current == -1) return + current - 1 + } + else -> { + getIndex(actionId) + } + } + + val count = TridentState.getFileCount(project) + index = ((index % count) + count) % count + val file = TridentState.selectFile(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" + } +} + |
