/*
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
 * Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.
 *
 * This file is available and licensed under the following license:
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 *   * Redistributions of source code must retain the above copyright notice,
 *     this list of conditions and the following disclaimer.
 *
 *   * Redistributions in binary form must reproduce the above copyright notice,
 *     this list of conditions and the following disclaimer in the documentation
 *     and/or other materials provided with the distribution.
 *
 *   * Neither the name of Sun Microsystems nor the names of its contributors
 *     may be used to endorse or promote products derived from this software
 *     without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
package lazyloader.view;

import javafx.scene.CustomNode;
import javafx.scene.Node;
import lazyloader.Main;
import javafx.scene.Cursor;
import javafx.scene.Group;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.scene.text.TextOrigin;
import java.lang.String;
import lazyloader.view.MenuBar;

/**
 @author Rakesh Menon
 */

package def WIDTH = 200.0;
package def HEIGHT = 25.0;
package def ARC = 1.0;

public class Menu extends CustomNode {
    
    public-init var name : String;
    public-init var urls : String[];
    public-init var className : String;
    public-init var onClick : function();
    public-init var thumbnail : String;
    
    public var menuBar : MenuBar;
    
    public-read var bgRect = Rectangle {
        width: WIDTH
        height: HEIGHT
        fill: Color.TRANSPARENT
        stroke: Color.TRANSPARENT
        strokeWidth: 0.5
        arcWidth: ARC
        arcHeight: ARC
    }
    
    public-read var nameText : Text = Text {
        content: name
        translateX: 10
        translateY: bind (HEIGHT - nameText.boundsInLocal.height)/2.0 1
        font: Font.font("sansserif", FontWeight.BOLD, 14)
        fill: Color.BLACK
        textOrigin: TextOrigin.TOP
    }
    
    override function create() : Node {
        cursor = Cursor.HAND;
        Group content: bgRect, nameText] };
    }
    
    override var onMouseReleased = function(e) {

        if(disabled or menuBar.disabled) { return}
        if(menuBar.adjustSelection.running) { return}
        
        var bounds = e.node.localToScene(e.node.boundsInLocal);
        menuBar.updateSelRect(bounds);
        Main.launchApplication(thumbnail, className, urls);
    }
}