blob: 70d1ae6eed021430f9ed681b35f0cf3231cf90c3 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
package script
import java.lang.reflect._
object Keys extends Application {
generate()
def generate() = {
val fields = classOf[java.awt.event.KeyEvent].getFields
val prefix = "VK_"
val lines = for (f <- fields; if ((f.getModifiers & Modifier.STATIC) != 0) && f.getName.startsWith(prefix)) yield {
val id = f.getInt(null)
val name = javaConstantName2Scala(prefix, f.getName, "Key")
"val " + name + " = Value(" + f.getName + ")"
}
val source = new StringBuilder
source.append("object Key extends Enumeration {\n")
source.append(" import java.awt.event.KeyEvent._\n\n")
lines.foreach(l => source.append(" " + l + "\n"))
source.append("}")
println(source)
}
def javaConstantName2Scala(prefix: String, name: String, prefixForNumber: String): String = {
var lower = false
var last = ' '
val builder = new StringBuilder
val trimmed = name.substring(prefix.length)
val n = if (trimmed(0).isDigit) prefixForNumber + trimmed else trimmed
for (val c <- n) {
if (c == '_') {
lower = false
}
else if (lower == true) {
builder.append(c.toLowerCase)
}
else {
lower = true
builder.append(c)
}
}
builder.toString
}
}
|