技术开发 频道

Groovy 1.6的新特性

  Swing console改进

  除了UI以外,Swing console也发生了很多变化:

  Console可作为Applet运行(groovy.ui.ConsoleApplet)。

  除了语法高亮以外,编辑器还支持代码缩进。

  在编辑区拖放Groovy脚本会打开相应的文件。

  可以修改console脚本运行的classpath,这是通过向classpath中增加新的JAR和目录实现的,如下图所示

  View菜单中增加了两个选项:一个用来显示输出域中的脚本,另一个用来以可视化方式显示执行结果。

  如果脚本抛出了异常,那么你可以点击与脚本相关的堆栈信息行,这样就可以轻松转到错误发生处。

  如果脚本有编译错误,错误消息也是可以点击的。

  回到结果可视化这个主题上来,新加入的系统可以让我们定制结果的渲染方式。如果执行的脚本返回爵士音乐家的一个Map,那么结果可能如下所示:

  这里展现的是Map的常规文本显示样式。那如何定制可视化结果的显示样式呢?Swing console可以助我们一臂之力。首先要确保勾上了菜单上的可视化选项:View -> Visualize Script Results,Preference API会存储并记得Groovy Console所有设定的信息。有几个内置的可视化结果:如果脚本返回java.awt.Image、javax.swing.Icon或是java.awt.Component(没有父亲),那么对象就不会用toString()的方式显示,否则仍然会用文本的方式显示。现在请在~/.groovy/OutputTransforms.groovy中编写如下Groovy脚本:

1 import javax.swing.*
2
3   transforms << { result ->
4
5   if (result instanceof Map) {
6
7   def table = new JTable(
8
9   result.collect{ k, v -<
10
11   [k, v?.inspect()] as Object[]
12
13   } as Object[][],
14
15   ['Key', 'Value'] as Object[])
16
17   table.preferredViewportSize = table.preferredSize
18
19   return new JScrollPane(table)
20
21   }
22
23   }

  Groovy Swing console会在启动时执行该脚本,将transforms列表注入到脚本绑定中,这样就可以增加自己的脚本结果表示了。该示例将Map转换为好看的Swing JTable。现在所显示的Map更容易理解,如下图所示:

  显然Swing console并不是一个功能完全的IDE,它只用来处理日常的脚本任务,是你工具箱中不可或缺的组成部分。

1