IDEA-349990 ui: show "Sort Bookmarks" in menu for non-top-group nodes

Make the action a little more discoverable.

GitOrigin-RevId: 7baf9396d794049fb6729dffb810df1badc27375
This commit is contained in:
Aleksey Pivovarov
2024-03-25 19:06:35 +00:00
committed by intellij-monorepo-bot
parent 09803522eb
commit 8ffa788615
@@ -2,6 +2,7 @@
package com.intellij.ide.bookmark.actions
import com.intellij.ide.bookmark.BookmarksManagerImpl
import com.intellij.ide.bookmark.ui.tree.GroupNode
import com.intellij.openapi.actionSystem.ActionUpdateThread
import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.openapi.project.DumbAwareAction
@@ -12,14 +13,22 @@ internal class SortGroupBookmarksAction : DumbAwareAction() {
override fun update(event: AnActionEvent) {
val manager = event.bookmarksManager as? BookmarksManagerImpl
val node = manager?.let { event.selectedGroupNode }
val empty = node?.value?.getBookmarks().isNullOrEmpty()
event.presentation.isEnabledAndVisible = !empty
event.presentation.isEnabledAndVisible = manager != null &&
getSelectedGroupNodes(event).firstOrNull() != null
}
override fun actionPerformed(event: AnActionEvent) {
val manager = event.bookmarksManager as? BookmarksManagerImpl ?: return
val node = event.selectedGroupNode ?: return
manager.sort(node.value)
val nodes = getSelectedGroupNodes(event)
for (groupNode in nodes) {
manager.sort(groupNode.value)
}
}
private fun getSelectedGroupNodes(event: AnActionEvent): Sequence<GroupNode> {
val nodes = event.bookmarkNodes ?: return emptySequence()
return nodes.asSequence().flatMap { node -> generateSequence(node) { it.parent } }
.filterIsInstance<GroupNode>()
.distinct()
}
}