diff options
Diffstat (limited to 'src/main/kotlin')
| -rw-r--r-- | src/main/kotlin/me/kyren223/harpoonforjb/HarpoonQuickMenu.kt | 17 | ||||
| -rw-r--r-- | src/main/kotlin/me/kyren223/harpoonforjb/HarpoonState.kt | 15 |
2 files changed, 27 insertions, 5 deletions
diff --git a/src/main/kotlin/me/kyren223/harpoonforjb/HarpoonQuickMenu.kt b/src/main/kotlin/me/kyren223/harpoonforjb/HarpoonQuickMenu.kt index 9740470..baf027b 100644 --- a/src/main/kotlin/me/kyren223/harpoonforjb/HarpoonQuickMenu.kt +++ b/src/main/kotlin/me/kyren223/harpoonforjb/HarpoonQuickMenu.kt @@ -1,6 +1,10 @@ +@file:Suppress("SameParameterValue") + package me.kyren223.harpoonforjb +import com.intellij.ide.plugins.PluginManagerCore import com.intellij.openapi.editor.LogicalPosition +import com.intellij.openapi.extensions.PluginId import com.intellij.openapi.ui.DialogWrapper import com.intellij.ui.EditorTextField import com.maddyhome.idea.vim.KeyHandler @@ -41,7 +45,7 @@ class HarpoonQuickMenu(private val content: String) : DialogWrapper(true) { simulateKeyPress("<ESC>", editor, context) } - override fun focusLost(e: FocusEvent?) { /* Do nothing */} + override fun focusLost(e: FocusEvent?) { /* Do nothing */ } }) return editorTextField @@ -54,4 +58,15 @@ class HarpoonQuickMenu(private val content: String) : DialogWrapper(true) { override fun getPreferredFocusedComponent(): JComponent? { return this.editorTextField } + + fun select() { + if (this.editorTextField.editor == null) return + HarpoonState.quickMenuContent = this.editorTextField.text + HarpoonState.quickMenuSelectedIndex = this.editorTextField.editor!!.caretModel.logicalPosition.line + doOKAction() + } + + override fun createSouthPanel(): JComponent? { + return null + } } diff --git a/src/main/kotlin/me/kyren223/harpoonforjb/HarpoonState.kt b/src/main/kotlin/me/kyren223/harpoonforjb/HarpoonState.kt index 73c82b2..36f3b0c 100644 --- a/src/main/kotlin/me/kyren223/harpoonforjb/HarpoonState.kt +++ b/src/main/kotlin/me/kyren223/harpoonforjb/HarpoonState.kt @@ -9,8 +9,9 @@ import com.intellij.openapi.vfs.VirtualFile object HarpoonState { private var projectFiles: MutableMap<String, MutableList<VirtualFile>> = mutableMapOf() private const val HARPOON_LIST_KEY = "HarpoonList" - private var quickMenuSelectedIndex: Int? = null - private var quickMenuContent: String? = "" + private var quickMenu: HarpoonQuickMenu? = null + var quickMenuSelectedIndex: Int? = null + var quickMenuContent: String? = "" fun setFile(project: Project, index: Int, file: VirtualFile) { if (index < 0) return @@ -85,8 +86,8 @@ object HarpoonState { .replace(project.basePath!!, "...") .trim() - val quickMenu = HarpoonQuickMenu(content) - val result = quickMenu.showAndGet() + quickMenu = HarpoonQuickMenu(content) + val result = quickMenu!!.showAndGet() if (content != quickMenuContent) { // Update the content @@ -94,7 +95,13 @@ object HarpoonState { } if (!result || quickMenuSelectedIndex == null) return + println("Selected index: $quickMenuSelectedIndex") val file = selectFile(project, quickMenuSelectedIndex!!) ?: return FileEditorManager.getInstance(project).openFile(file, true) } + + fun quickMenuSelect() { + if (quickMenu == null || !quickMenu!!.isShowing) return + quickMenu!!.select() + } }
\ No newline at end of file |
