/*
 * Main.fx
 *
 * Created on 30 Apr, 2009, 5:00:04 PM
 */

package fisheyemenu;

import java.lang.Math;
import javafx.scene.Cursor;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.input.MouseEvent;
import javafx.scene.paint.Color;
import javafx.scene.Scene;
import javafx.scene.Group;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

/**
 @author Rakesh Menon
 */

var bgRect = Rectangle {
    width: 800
    height: 300
    onMouseMoved: onMouseMoved
    fill: Color.WHITE
    cursor: Cursor.HAND
};

var imageView : ImageView[];
for(i in [0..7]) {
    insert ImageView {
        translateX: 60 * i
        image: Image {
            url: "{__DIR__}images/logo_{i}.gif"
        }
        scaleX: 0.65
        scaleY: 0.65
        smooth: true
        onMouseMoved: function(e) {
            e.node.toFront();
        }
    into imageView;
}

def maxScale = 2.0;
def multiplier = 60.0;
function onMouseMoved(e : MouseEvent: Void {
    for(iv in imageView) {
        var imageScale = maxScale - Math.min(maxScale - 1, Math.abs(e.x - (iv.translateX + 70 2)) / multiplier);
        iv.scaleX = imageScale/1.5;
        iv.scaleY = imageScale/1.5;
    }
}

Stage {
    title: "Fish Eye Menu"
    scene: Scene {
        content: bgRect, Group content: imageView } ]
        width: 570
        height: 150
    }
    resizable: false
}