Skip to content

Commit 7bbe653

Browse files
committed
Optimize interactive mode.
1 parent 8e582a7 commit 7bbe653

File tree

2 files changed

+29
-2
lines changed

2 files changed

+29
-2
lines changed

src/main/kotlin/cn/yiiguxing/plugin/md/palette/MaterialPaletteDialog.kt

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
package cn.yiiguxing.plugin.md.palette
22

33
import com.intellij.icons.AllIcons
4+
import com.intellij.openapi.Disposable
45
import com.intellij.openapi.ide.CopyPasteManager
56
import com.intellij.openapi.project.Project
67
import com.intellij.openapi.ui.DialogWrapper
78
import com.intellij.openapi.ui.JBMenuItem
89
import com.intellij.openapi.ui.JBPopupMenu
10+
import com.intellij.openapi.util.Disposer
11+
import com.intellij.openapi.wm.IdeFocusManager
912
import com.intellij.ui.JBColor
1013
import com.intellij.ui.PopupMenuListenerAdapter
1114
import com.intellij.ui.border.CustomLineBorder
@@ -40,9 +43,10 @@ class MaterialPaletteDialog(project: Project?) : DialogWrapper(project) {
4043

4144
init {
4245
title = "Material Palette"
43-
peer.setAppIcons()
46+
isModal = false
4447
setResizable(false)
4548

49+
peer.setAppIcons()
4650
form.init()
4751
init()
4852
}
@@ -225,5 +229,28 @@ class MaterialPaletteDialog(project: Project?) : DialogWrapper(project) {
225229
private const val COLOR_BOX_SIZE = 40
226230
private val BORDER_COLOR = JBColor(0xB3B3B3, 0x232323)
227231
private val BORDER_COLOR_FIXED = JBColor(0xB3B3B3, 0x000000)
232+
233+
private val sDialogMap = HashMap<Project?, MaterialPaletteDialog>()
234+
235+
fun show(project: Project?) {
236+
val dialog = synchronized(sDialogMap) {
237+
sDialogMap.getOrPut(project) {
238+
MaterialPaletteDialog(project).apply {
239+
Disposer.register(disposable, Disposable {
240+
synchronized(sDialogMap) {
241+
sDialogMap.remove(project)
242+
}
243+
})
244+
project?.let { Disposer.register(it, disposable) }
245+
}
246+
}
247+
}
248+
249+
if (!dialog.isShowing) {
250+
dialog.show()
251+
} else {
252+
IdeFocusManager.getInstance(project).requestFocus(dialog.window, true)
253+
}
254+
}
228255
}
229256
}

src/main/kotlin/cn/yiiguxing/plugin/md/palette/ShowMaterialPaletteDialogAction.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import javax.swing.Icon
1313
class ShowMaterialPaletteDialogAction : AnAction(icon) {
1414

1515
override fun actionPerformed(e: AnActionEvent) {
16-
MaterialPaletteDialog(e.project).show()
16+
MaterialPaletteDialog.show(e.project)
1717
}
1818

1919
companion object {

0 commit comments

Comments
 (0)