package swirlingsquares;
import javafx.scene.*;
import javafx.scene.paint.*;
import javafx.scene.shape.*;
import javafx.stage.*;
import javafx.scene.transform.*;
import javafx.scene.input.*;
import javafx.animation.*;

import java.lang.System;


var angle = 0.0;

var stage:Stage = Stage {
    style: StageStyle.TRANSPARENT
    visible: true
    width: 400 height: 400
    scene: Scene {
        fill: null
        content: Group {
            translateX: 100 translateY: 100
            content: for(i in [0..10]) {
                // here is the magic with binding
                Rectangle {
                    fill: Color.rgb(25*i,0,0, i/10.0)
                    width: 100 height: 100 arcHeight: 10 arcWidth: 10
                    stroke: Color.BLACK strokeWidth: 5
                    transforms: bind [
                        Transform.rotate(-i*36+angle/2,50,50),
                        Transform.translate(angle/4,0),
                    ]
                }
            }
            onMousePressed: function(e:MouseEvent):Void { stage.close(); }
        }
    }
}

var anim = Timeline { keyFrames: [
        KeyFrame { time: 0s values: angle => -360 tween Interpolator.EASEBOTH },
        KeyFrame { time: 2s values: angle => 360 tween Interpolator.EASEBOTH },
    ]
    autoReverse: true
    repeatCount: Timeline.INDEFINITE
};
anim.play();