/*
* 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 podcastfeedviewer;
import javafx.scene.CustomNode;
import javafx.scene.Node;
import javafx.scene.shape.Rectangle;
import javafx.scene.effect.Glow;
import javafx.scene.paint.Color;
import javafx.animation.Timeline;
import javafx.animation.Interpolator;
import javafx.scene.input.MouseEvent;
import javafx.scene.Group;
import javafx.scene.text.Text;
import javafx.scene.text.Font;
public class TooltipNode extends CustomNode{
public-init var sourceNode:Node;
public-init var tooltip:String;
public-init var width :Integer = 80;
var glowColor = Color.TRANSPARENT;
override var opacity = 0.0;
def showTip:Timeline = Timeline {
keyFrames: [
at (0s) {
glowColor => Color.TRANSPARENT;
opacity => 0.0;
},
at (1s) {
glowColor =>Color.color(0.5, 0.5, 0.5, 0.5);
opacity => 1.0 tween Interpolator.EASEBOTH;
},
]
}
var glowEffect = Glow {
level: 0.2
}
var rectangle:Rectangle = Rectangle{
translateX: bind ( sourceNode.translateX+(sourceNode.layoutBounds.width - rectangle.layoutBounds.width )/2)
translateY: bind (( sourceNode.layoutBounds.height/2) + 45 * Main.heightRatio1);
fill:Color.YELLOW
width:width
height:25
}
var text:Text = Text {
translateX: bind (rectangle.translateX )
translateY: bind rectangle.translateY+(rectangle.layoutBounds.height / 2) + 3
font: Font {
size: 11
}
fill: Color.BLUEVIOLET
content: bind tooltip
}
override function create():Node {
sourceNode.onMouseEntered = function(e:MouseEvent){
showTip.rate = 1.0;
sourceNode.effect = glowEffect;
showTip.playFromStart();
}
sourceNode.onMouseExited = function(e:MouseEvent){
showTip.rate = -1.0;
sourceNode.effect = null;
opacity = 0.0;
}
Group{
content: [rectangle,text]
}
}
}