groovyConsole - Groovy Swing 控制台

1. Groovy : Groovy 控制台

Groovy Swing 控制台允许用户输入和运行 Groovy 脚本。本页记录了此用户界面的功能。

2. 基础

image

  1. Groovy 控制台通过 groovyConsolegroovyConsole.bat 启动,两者都位于 $GROOVY_HOME/bin

  2. 控制台包含一个输入区域和一个输出区域。

  3. 您可以在输入区域中键入 Groovy 脚本。

  4. 当您从“操作”菜单中选择“运行”时,控制台会编译脚本并运行它。

  5. 通常会打印在 System.out 上的任何内容都将在输出区域中打印。

  6. 如果脚本返回非空结果,则会打印该结果。

3. 功能

3.1. 命令行选项和参数

Groovy 控制台支持多种选项来控制类路径和其他功能。

./bin/groovyConsole --help
Usage: groovyConsole [options] [filename]
The Groovy Swing Console allows a user to enter and run Groovy scripts.
      --configscript=PARAM   A script for tweaking the compiler configuration options
      -cp, -classpath, --classpath
                             Specify where to find the class files - must be first
                               argument
  -D, --define=<name=value>  Define a system property
  -h, --help                 Display this help message
  -pa, --parameters          Generate metadata for reflection on method parameter
                               names (jdk8+ only)
  -pr, --enable-preview      Enable preview Java features (jdk12+ only)
  -V, --version              Display the version

3.2. 运行脚本

您可以使用多个快捷键来运行脚本或代码片段

  • Ctrl+EnterCtrl+R 都是 运行脚本 的快捷键。

  • 如果您只突出显示输入区域中的部分文本,则 Groovy 将只运行该文本。

  • 脚本的结果是执行的最后一个表达式的值。

  • 您可以通过从“操作”菜单中选择“捕获 System.out”来打开和关闭 System.out 捕获

3.3. 编辑文件

您可以打开任何文本文件,编辑它,运行它(作为 Groovy 脚本),然后在完成时再次保存它。

  • 选择“文件 > 打开”(快捷键 ctrl+O)打开文件

  • 选择“文件 > 保存”(快捷键 ctrl+S)保存文件

  • 选择“文件 > 新建文件”(快捷键 ctrl+Q)从空白输入区域重新开始

3.4. 历史记录和结果

  • 您可以通过从“操作”菜单中选择“检查最后”在最后一个(非空)结果上弹出 GUI 检查器。检查器是查看列表和映射的便捷方式。

  • 控制台会记住最后十次脚本运行。您可以通过从“编辑”菜单中选择“下一个”和“上一个”来在历史记录中来回滚动。Ctrl-Nctrl-P 是方便的快捷键。

  • 最后一个(非空)结果绑定到名为 _(下划线)的变量。

  • 每次运行的最后一个结果(空和非空)都绑定到名为 __(两个下划线)的列表变量中。最后一次运行的结果是 __[-1],倒数第二次运行的结果是 __[-2],依此类推。

3.5. 中断脚本

Groovy 控制台是开发脚本的非常方便的工具。通常,您会发现自己多次运行脚本,直到它按您想要的方式工作。但是,如果您的代码需要太长时间才能完成,或者更糟的是,创建了一个无限循环,该怎么办?可以通过单击脚本执行时弹出的一个小对话框上的“中断”按钮,或通过工具栏中的“中断”图标来中断脚本执行。

Toolbar

但是,这可能不足以中断脚本:单击该按钮将中断执行线程,但如果您的代码没有处理中断标志,脚本可能会继续运行而您无法有效地停止它。为了避免这种情况,您必须确保“脚本 > 允许中断”菜单项已选中。这将自动将 AST 转换应用到您的脚本中,该转换将处理检查中断标志(@ThreadInterrupt)。这样,即使您没有显式地处理中断,您也可以保证脚本可以被中断,但代价是额外的执行时间。

3.6. 等等

  • 您可以通过从“操作菜单”中选择“字体变小”或“字体变大”来更改字体大小

  • 由于 groovy.ui.ConsoleApplet,控制台可以作为 Applet 运行

  • 当您按下回车键时,代码会自动缩进

  • 您可以将 Groovy 脚本拖放到文本区域以打开文件

  • 您可以通过从“脚本”菜单中将新 JAR 或目录添加到类路径中来修改控制台中运行的脚本使用的类路径

  • 当预期编译错误或抛出异常时,从输出区域中的错误超链接

4. 嵌入控制台

要将 Swing 控制台嵌入您的应用程序,只需创建 Console 对象,加载一些变量,然后启动它。控制台可以嵌入 Java 或 Groovy 代码中。用于此的 Java 代码是

import groovy.ui.Console;

    ...
    Console console = new Console();
    console.setVariable("var1", getValueOfVar1());
    console.setVariable("var2", getValueOfVar2());
    console.run();
    ...

控制台启动后,您可以在 Groovy 代码中使用变量值。

5. 可视化脚本输出结果

您可以自定义可视化脚本输出结果的方式。让我们看看如何自定义它。例如,查看映射结果将显示如下内容

image

您在这里看到的是映射的通常文本表示。但是,如果我们启用了某些结果的自定义可视化,会怎么样?Swing 控制台允许您执行此操作。首先,您必须确保选中可视化选项:“查看 → 可视化脚本结果”——记录一下,Groovy 控制台的所有设置都通过首选项 API 存储和记住。内置了一些结果可视化:如果脚本返回 java.awt.Imagejavax.swing.Icon 或没有父级的 java.awt.Component,则会显示该对象而不是其 toString() 表示。否则,其他所有内容都只表示为文本。现在,在 ~/.groovy/OutputTransforms.groovy 中创建以下 Groovy 脚本

import javax.swing.*

transforms << { result ->
    if (result instanceof Map) {
        def table = new JTable(
            result.collect{ k, v ->
                [k, v?.inspect()] as Object[]
            } as Object[][],
            ['Key', 'Value'] as Object[])
        table.preferredViewportSize = table.preferredSize
        return new JScrollPane(table)
    }
}

Groovy Swing 控制台将在启动时执行该脚本,将转换列表注入脚本的绑定中,以便您可以添加自己的脚本结果表示。在我们的例子中,我们将映射转换为外观不错的 Swing JTable。我们现在能够以友好且有吸引力的方式可视化映射,如下面的屏幕截图所示

image

6. 高级调试:AST 浏览器

Groovy 控制台可以可视化表示当前正在编辑的脚本的 AST(抽象语法树),如下面的屏幕截图所示。当您想了解 AST 转换的工作原理时,这很有用,特别是如果您正在开发自己的 AST 转换时。在下面的示例中,我们用 @Immutable 注解了我们的类,Groovy 编译器为我们生成了大量样板代码。我们可以在“源代码”选项卡中看到生成的 equals 方法的代码。

AST Browser

我们甚至可以检查编译器生成的 JVM 字节码。在下图中,我们查看了 Groovy 表达式 LocalDate.parse('2020/02/10', 'yyyy/MM/dd') 的字节码。

AST Browser

7. 高级调试:CST 浏览器

Groovy 控制台可以可视化表示脚本初始解析的 CST(具体语法树)。这主要对解析大师有用。

CST Browser