From 3ab5bc95eb1e12837b804024cdad7ca1dcb6f1de Mon Sep 17 00:00:00 2001 From: Kyren223 Date: Tue, 13 Feb 2024 22:22:12 +0200 Subject: Implemented HarpoonQuickMenu, auto fuces, starts in normal mode, able to view current harpoon list, no functionality yet for navigating to a selected file or modifying the harpoon list --- .../me/kyren223/harpoonforjb/HarpoonState.kt | 23 ++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'src/main/kotlin/me/kyren223/harpoonforjb/HarpoonState.kt') diff --git a/src/main/kotlin/me/kyren223/harpoonforjb/HarpoonState.kt b/src/main/kotlin/me/kyren223/harpoonforjb/HarpoonState.kt index fcb20a5..73c82b2 100644 --- a/src/main/kotlin/me/kyren223/harpoonforjb/HarpoonState.kt +++ b/src/main/kotlin/me/kyren223/harpoonforjb/HarpoonState.kt @@ -1,6 +1,7 @@ package me.kyren223.harpoonforjb import com.intellij.ide.util.PropertiesComponent +import com.intellij.openapi.fileEditor.FileEditorManager import com.intellij.openapi.project.Project import com.intellij.openapi.vfs.LocalFileSystem import com.intellij.openapi.vfs.VirtualFile @@ -8,6 +9,8 @@ import com.intellij.openapi.vfs.VirtualFile object HarpoonState { private var projectFiles: MutableMap> = mutableMapOf() private const val HARPOON_LIST_KEY = "HarpoonList" + private var quickMenuSelectedIndex: Int? = null + private var quickMenuContent: String? = "" fun setFile(project: Project, index: Int, file: VirtualFile) { if (index < 0) return @@ -74,4 +77,24 @@ object HarpoonState { loadProject(project) return projectFiles[project.name]!!.size } + + fun toggleQuickMenu(project: Project) { + loadProject(project) + val content = projectFiles[project.name]!! + .joinToString("\n") { it.path } + .replace(project.basePath!!, "...") + .trim() + + val quickMenu = HarpoonQuickMenu(content) + val result = quickMenu.showAndGet() + + if (content != quickMenuContent) { + // Update the content + // TODO: Update the content + } + + if (!result || quickMenuSelectedIndex == null) return + val file = selectFile(project, quickMenuSelectedIndex!!) ?: return + FileEditorManager.getInstance(project).openFile(file, true) + } } \ No newline at end of file -- cgit v1.3.1