in src/main/kotlin/org/arend/search/proof/ProofSearchService.kt [40:91]
fun show(e: AnActionEvent) {
IdeEventQueue.getInstance().popupManager.closeAllPopups(false)
val project: Project = e.project ?: return
val signatureSearchUI = createView(e)
myProofSearchUI = signatureSearchUI
val balloon =
with(JBPopupFactory.getInstance().createComponentPopupBuilder(signatureSearchUI, signatureSearchUI.editorSearchField)) {
setProject(project)
setModalContext(false)
setCancelOnClickOutside(true)
setRequestFocus(true)
setCancelKeyEnabled(false)
setCancelCallback {
if (isShown()) {
lastSearchText = myProofSearchUI?.editorSearchField?.text
}
true
}
addUserData("SIMPLE_WINDOW") // NON-NLS
setResizable(true)
setMovable(true)
.setDimensionServiceKey(project, PROOF_SEARCH_LOCATION_KEY, true)
setLocateWithinScreenBounds(false)
createPopup()
}.also {
Disposer.register(it, signatureSearchUI)
Disposer.register(project, it)
}
myBalloon = balloon
Disposer.register(balloon) {
if (signatureSearchUI.viewType == BigPopupUI.ViewType.SHORT) {
WindowStateService.getInstance(project).putSize(PROOF_SEARCH_LOCATION_KEY, myBalloonFullSize)
}
myProofSearchUI = null
myBalloon = null
myBalloonFullSize = null
}
if (signatureSearchUI.viewType == BigPopupUI.ViewType.SHORT) {
myBalloonFullSize = WindowStateService.getInstance(project).getSize(PROOF_SEARCH_LOCATION_KEY)
balloon.size = signatureSearchUI.preferredSize
}
calcPositionAndShow(project, balloon, signatureSearchUI)
val text = signatureSearchUI.editorSearchField.text
if (text.isNotEmpty()) {
signatureSearchUI.editorSearchField.editor?.selectionModel?.setSelection(0, text.length)
signatureSearchUI.registerSearchAttempt()
}
}