Java Web Start版 Groovy Console をちょっとだけ変えてみた その3

残念ながら 参加はできませんでしたが...
12/20 の JavaFX & GlassFish 合同勉強会id:nobeans さんが FxBuilder を使って Groovy から JavaFX を利用する方法を発表されていたのを受けて、Java Web Start 版 Groovy Console でも FxBuilder を利用できるようにしてみました。
id:nobeans さんの発表内容は こちら

今回の変更点は JNLP ファイルのみ...
Groovy Console 用 JNLP ファイルの resources に JavaFX Runtion の JNLP ファイルと

<extension name="JavaFX Runtime" href="http://dl.javafx.com/1.2/javafx-rt.jnlp" />
FxBuilder で必要な JAR ファイル
<jar href="fxbuilder-0.2.jar" />
<jar href="JFXtras-0.5.jar" />
<jar href="miglayout-3.6.3-swing.jar" />
を追加しただけ...
※ 実際には他の修正も一緒に行っていますが 今回は省略。詳細は次回以降で...

しかし JNLP の extension 機能はとっても便利ですね。
JavaFX Runtime のように既に公開された JNLP コンポーネントがあれば、何も考えなくても自分のアプリケーションに必要なライブラリを全て取り込んでくれるのです。
Groovy や Griffon も JNLPコンポーネントとして公開されないのだろうか。

もちろん、この Java Web Start 版 Groovy Console を利用すれば...
面倒な インストール作業なしに すぐに JavaFX の世界を体験することができます。
JavaFX を試してみたいけど インストール面倒だし やめとこ...」なんて方には とってもおススメ!!

興味のある方は右下のメニューの Groovy Console の [Launch] ボタンをクリックしてみてください。

注意!!
Groovy Console はオレオレ証明書で署名されており、全ての権限が与えられています。
利用される方はあくまで自己責任で...

あとは こんな感じでコーディングして実行するだけ...

import griffon.builder.fx.*;
import javafx.lang.*;
import javafx.animation.*;

def fx = new griffon.builder.fx.FxBuilder();

def rt = fx.parallelTransition {
    fx.rotateTransition(
        duration: Duration.valueOf(3000),
        interpolator: Interpolator.$LINEAR,
        byAngle: 360,
        repeatCount:Timeline.$INDEFINITE
    )
    fx.scaleTransition(
        duration: Duration.valueOf(3000),
        interpolator: Interpolator.$LINEAR,
        fromX: 0.1, fromY: 0.1,
        toX: 2.0, toY: 2.0,
        autoReverse: true,
        repeatCount:Timeline.$INDEFINITE
    )
};

fx.edt {
    stage(width: 200, height: 200) {
        scene {
            stack (width: 200, height: 200) {
                text = text(content: "Hello, World.")
            }
            button = button(
                text: "PAUSE",
                layoutX: 10,
                layoutY: 10,
                action: {
                    if (button.text == "PAUSE") {
                        rt.pause();
                        button.text = "PLAY";
                    } else {
                        rt.play();
                        button.text = "PAUSE";
                    }
                }
            )
        }
    }
    
    rt.node = text;
    rt.play();
}

ただ、残念なのは FxBuilder が 最新の JavaFX 1.3 に対応していないってことかな...