chore: clean up SwingMenu.shortcut using buildArray utility function
This commit is contained in:
parent
d1f7152b27
commit
672612588a
@ -34,6 +34,7 @@ dependencies {
|
|||||||
instrumentationTools()
|
instrumentationTools()
|
||||||
}
|
}
|
||||||
extraResources(project(mapOf("path" to ":native", "configuration" to "results")))
|
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("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-core:5.0.0")
|
||||||
// implementation("com.github.hypfvieh:dbus-java-transport-native-unixsocket: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.ApplicationManager
|
||||||
import com.intellij.openapi.application.EDT
|
import com.intellij.openapi.application.EDT
|
||||||
import io.gitlab.jfronny.globalmenu.GlobalMenu
|
import io.gitlab.jfronny.globalmenu.GlobalMenu
|
||||||
|
import io.gitlab.jfronny.globalmenu.buildArray
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.runBlocking
|
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 ->
|
override val shortcut: Array<String>? get() = menuItem?.accelerator?.let { ks ->
|
||||||
val s = getModifiers(ks.modifiers)
|
buildArray {
|
||||||
val vk = keyEvents[ks.keyCode] ?: "UNKNOWN"
|
val modifiers = ks.modifiers
|
||||||
val l = mutableListOf<String>()
|
if (modifiers and InputEvent.SHIFT_DOWN_MASK != 0) accept("Shift")
|
||||||
l.addAll(s)
|
if (modifiers and InputEvent.CTRL_DOWN_MASK != 0) accept("Ctrl")
|
||||||
l.add(vk)
|
if (modifiers and InputEvent.META_DOWN_MASK != 0) accept("Meta")
|
||||||
l.toTypedArray()
|
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")
|
||||||
private fun getModifiers(modifiers: Int): List<String> = buildList {
|
if (modifiers and InputEvent.BUTTON2_DOWN_MASK != 0) accept("Button2")
|
||||||
if (modifiers and InputEvent.SHIFT_DOWN_MASK != 0) add("Shift")
|
if (modifiers and InputEvent.BUTTON3_DOWN_MASK != 0) accept("Button3")
|
||||||
if (modifiers and InputEvent.CTRL_DOWN_MASK != 0) add("Ctrl")
|
accept(keyEvents[ks.keyCode] ?: "UNKNOWN")
|
||||||
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) {
|
override val toggleType: String? get() = when (menuItem) {
|
||||||
|
Loading…
Reference in New Issue
Block a user