chore: clean up SwingMenu.shortcut using buildArray utility function
This commit is contained in:
parent
d1f7152b27
commit
672612588a
@ -34,6 +34,7 @@ dependencies {
|
||||
instrumentationTools()
|
||||
}
|
||||
extraResources(project(mapOf("path" to ":native", "configuration" to "results")))
|
||||
implementation("io.gitlab.jfronny:commons:2.0.0-SNAPSHOT")
|
||||
implementation("io.gitlab.jfronny:commons-unsafe:2.0.0-SNAPSHOT")
|
||||
// implementation("com.github.hypfvieh:dbus-java-core:5.0.0")
|
||||
// implementation("com.github.hypfvieh:dbus-java-transport-native-unixsocket:5.0.0")
|
||||
|
20
src/main/kotlin/io/gitlab/jfronny/globalmenu/Utils.kt
Normal file
20
src/main/kotlin/io/gitlab/jfronny/globalmenu/Utils.kt
Normal file
@ -0,0 +1,20 @@
|
||||
package io.gitlab.jfronny.globalmenu
|
||||
|
||||
import io.gitlab.jfronny.commons.MultiConsumer
|
||||
|
||||
@PublishedApi internal class Node<T>(val value: T, var next: Node<T>? = null)
|
||||
inline fun <reified T> buildArray(generate: MultiConsumer<T>.() -> Unit): Array<T> {
|
||||
var length = 0
|
||||
var head: Node<T>? = null
|
||||
MultiConsumer<T> { value ->
|
||||
head = Node(value, head)
|
||||
length++
|
||||
}.generate()
|
||||
val array = arrayOfNulls<T>(length)
|
||||
while (head != null) {
|
||||
array[--length] = head!!.value
|
||||
head = head!!.next
|
||||
}
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
return array as Array<T>
|
||||
}
|
@ -5,6 +5,7 @@ import com.intellij.openapi.actionSystem.impl.ActionMenuItem
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.application.EDT
|
||||
import io.gitlab.jfronny.globalmenu.GlobalMenu
|
||||
import io.gitlab.jfronny.globalmenu.buildArray
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.runBlocking
|
||||
@ -49,23 +50,18 @@ class SwingMenu(private val menuItem: JMenuItem?, override val id: Int, private
|
||||
} }
|
||||
|
||||
override val shortcut: Array<String>? get() = menuItem?.accelerator?.let { ks ->
|
||||
val s = getModifiers(ks.modifiers)
|
||||
val vk = keyEvents[ks.keyCode] ?: "UNKNOWN"
|
||||
val l = mutableListOf<String>()
|
||||
l.addAll(s)
|
||||
l.add(vk)
|
||||
l.toTypedArray()
|
||||
buildArray {
|
||||
val modifiers = ks.modifiers
|
||||
if (modifiers and InputEvent.SHIFT_DOWN_MASK != 0) accept("Shift")
|
||||
if (modifiers and InputEvent.CTRL_DOWN_MASK != 0) accept("Ctrl")
|
||||
if (modifiers and InputEvent.META_DOWN_MASK != 0) accept("Meta")
|
||||
if (modifiers and InputEvent.ALT_DOWN_MASK != 0) accept("Alt")
|
||||
if (modifiers and InputEvent.ALT_GRAPH_DOWN_MASK != 0) accept("AltGraph")
|
||||
if (modifiers and InputEvent.BUTTON1_DOWN_MASK != 0) accept("Button1")
|
||||
if (modifiers and InputEvent.BUTTON2_DOWN_MASK != 0) accept("Button2")
|
||||
if (modifiers and InputEvent.BUTTON3_DOWN_MASK != 0) accept("Button3")
|
||||
accept(keyEvents[ks.keyCode] ?: "UNKNOWN")
|
||||
}
|
||||
|
||||
private fun getModifiers(modifiers: Int): List<String> = buildList {
|
||||
if (modifiers and InputEvent.SHIFT_DOWN_MASK != 0) add("Shift")
|
||||
if (modifiers and InputEvent.CTRL_DOWN_MASK != 0) add("Ctrl")
|
||||
if (modifiers and InputEvent.META_DOWN_MASK != 0) add("Meta")
|
||||
if (modifiers and InputEvent.ALT_DOWN_MASK != 0) add("Alt")
|
||||
if (modifiers and InputEvent.ALT_GRAPH_DOWN_MASK != 0) add("AltGraph")
|
||||
if (modifiers and InputEvent.BUTTON1_DOWN_MASK != 0) add("Button1")
|
||||
if (modifiers and InputEvent.BUTTON2_DOWN_MASK != 0) add("Button2")
|
||||
if (modifiers and InputEvent.BUTTON3_DOWN_MASK != 0) add("Button3")
|
||||
}
|
||||
|
||||
override val toggleType: String? get() = when (menuItem) {
|
||||
|
Loading…
Reference in New Issue
Block a user