diff options
Diffstat (limited to 'src/swing/script/Keys.scala')
-rw-r--r-- | src/swing/script/Keys.scala | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/swing/script/Keys.scala b/src/swing/script/Keys.scala new file mode 100644 index 0000000000..70d1ae6eed --- /dev/null +++ b/src/swing/script/Keys.scala @@ -0,0 +1,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 + } +} |