mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
IJPL-172124 Allow to listen for command search popup events
IJ-CR-148020 (cherry picked from commit d1a449823a5c68a5ca82f16c12ccb5d938e70e79) GitOrigin-RevId: 378e3bd5c357a47dd1092c2c5a2ad2226c25f53e
This commit is contained in:
committed by
intellij-monorepo-bot
parent
d598a63db6
commit
b3226a47c2
@@ -0,0 +1,18 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.plugins.terminal.block.history
|
||||
|
||||
import com.intellij.util.messages.Topic
|
||||
import org.jetbrains.annotations.ApiStatus
|
||||
import org.jetbrains.plugins.terminal.block.prompt.TerminalPromptModel
|
||||
|
||||
@ApiStatus.Internal
|
||||
interface CommandSearchListener {
|
||||
fun commandSearchShown(promptModel: TerminalPromptModel) {}
|
||||
|
||||
fun commandSearchAborted(promptModel: TerminalPromptModel) {}
|
||||
|
||||
companion object {
|
||||
@Topic.ProjectLevel
|
||||
val TOPIC: Topic<CommandSearchListener> = Topic(CommandSearchListener::class.java, Topic.BroadcastDirection.NONE)
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,8 @@
|
||||
package org.jetbrains.plugins.terminal.block.history
|
||||
|
||||
import com.intellij.codeInsight.lookup.Lookup
|
||||
import com.intellij.codeInsight.lookup.LookupEvent
|
||||
import com.intellij.codeInsight.lookup.LookupListener
|
||||
import com.intellij.openapi.editor.Editor
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.util.Key
|
||||
@@ -20,8 +22,16 @@ internal class CommandSearchPresenter(
|
||||
val lookup = CommandHistoryUtil.createLookup(project, editor, command, history.asReversed())
|
||||
lookup.putUserData(IS_COMMAND_SEARCH_LOOKUP_KEY, true)
|
||||
|
||||
lookup.addLookupListener(object : LookupListener {
|
||||
override fun lookupCanceled(event: LookupEvent) {
|
||||
project.messageBus.syncPublisher(CommandSearchListener.TOPIC).commandSearchAborted(promptModel)
|
||||
}
|
||||
})
|
||||
|
||||
if (lookup.showLookup()) {
|
||||
lookup.ensureSelectionVisible(false)
|
||||
|
||||
project.messageBus.syncPublisher(CommandSearchListener.TOPIC).commandSearchShown(promptModel)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user