mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
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:
committed by
intellij-monorepo-bot
parent
09803522eb
commit
8ffa788615
+14
-5
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user