Listing 3: UpMenu.fx
package mariahcarey;

import javafx.ui.*;
import javafx.ui.canvas.*;
import javafx.ui.filter.*;

class UpMenu extends CompositeNode{
attribute home: String;
attribute news: String;
attribute tour: String;
attribute multimedia: String;
attribute photos: String;
attribute community: String;
attribute music: String;
attribute store: String;
attribute help: String;
}

attribute UpMenu.home = "{__DOCBASE__}//images//home_1.bmp";
attribute UpMenu.news = "{__DOCBASE__}//images//news_1.bmp";
attribute UpMenu.tour = "{__DOCBASE__}//images//tour_1.bmp";
attribute UpMenu.multimedia = "{__DOCBASE__}//images//multimedia_1.bmp";
attribute UpMenu.photos = "{__DOCBASE__}//images//photos_1.bmp";
attribute UpMenu.community = "{__DOCBASE__}//images//community_1.bmp";
attribute UpMenu.music = "{__DOCBASE__}//images//music_1.bmp";
attribute UpMenu.store = "{__DOCBASE__}//images//store_1.bmp";
attribute UpMenu.help = "{__DOCBASE__}//images//help_1.bmp";

function UpMenu.composeNode() = 

Group {
    transform: []     
    content: [ImageView {
        transform: translate(180,72)
        image: Image { url: bind home }
        cursor: HAND
        onMouseEntered: operation(e:CanvasMouseEvent) {              
               home="{__DOCBASE__}//images//home_2.bmp";              
               }
        onMouseExited: operation(e:CanvasMouseEvent) {              
               home="{__DOCBASE__}//images//home_1.bmp";
               }
    },
    ImageView {
        transform: translate(240,73)
        image: Image { url: bind news }
        cursor: HAND
        onMouseEntered: operation(e:CanvasMouseEvent) {              
               news="{__DOCBASE__}//images//news_2.bmp";
               }
        onMouseExited: operation(e:CanvasMouseEvent) {              
               news="{__DOCBASE__}//images//news_1.bmp";
               }
    },
    ImageView {
        transform: translate(295,73)
        image: Image { url: bind tour }
        cursor: HAND
        onMouseEntered: operation(e:CanvasMouseEvent) {              
               tour="{__DOCBASE__}//images//tour_2.bmp";
               }
        onMouseExited: operation(e:CanvasMouseEvent) {              
               tour="{__DOCBASE__}//images//tour_1.bmp";
               }
    },
    ImageView {
        transform: translate(353,73)
        image: Image { url: bind multimedia }
        cursor: HAND
        onMouseEntered: operation(e:CanvasMouseEvent) {              
               multimedia="{__DOCBASE__}//images//multimedia_2.bmp";
               }
        onMouseExited: operation(e:CanvasMouseEvent) {              
               multimedia="{__DOCBASE__}//images//multimedia_1.bmp";
               }
    },
    ImageView {
        transform: translate(473,73)
        image: Image { url: bind photos }
        cursor: HAND
        onMouseEntered: operation(e:CanvasMouseEvent) {              
               photos="{__DOCBASE__}//images//photos_2.bmp";
               }
        onMouseExited: operation(e:CanvasMouseEvent) {              
               photos="{__DOCBASE__}//images//photos_1.bmp";
               }
    },
    ImageView {
        transform: translate(548,73)
        image: Image { url: bind community }
        cursor: HAND
        onMouseEntered: operation(e:CanvasMouseEvent) {              
               community="{__DOCBASE__}//images//community_2.bmp";
               }
        onMouseExited: operation(e:CanvasMouseEvent) {              
               community="{__DOCBASE__}//images//community_1.bmp";
               }
    },
    ImageView {
        transform: translate(660,73)
        image: Image { url: bind music }
        cursor: HAND
        onMouseEntered: operation(e:CanvasMouseEvent) {              
               music="{__DOCBASE__}//images//music_2.bmp";
               }
        onMouseExited: operation(e:CanvasMouseEvent) {              
               music="{__DOCBASE__}//images//music_1.bmp";
               }
    },
    ImageView {
        transform: translate(725,73)
        image: Image { url: bind store }
        cursor: HAND
        onMouseEntered: operation(e:CanvasMouseEvent) {              
               store="{__DOCBASE__}//images//store_2.bmp";
               }
        onMouseExited: operation(e:CanvasMouseEvent) {              
               store="{__DOCBASE__}//images//store_1.bmp";
               }
    },
    ImageView {
        transform: translate(790,73)
        image: Image { url: bind help }
        cursor: HAND
        onMouseEntered: operation(e:CanvasMouseEvent) {              
               help="{__DOCBASE__}//images//help_2.bmp";
               }
        onMouseExited: operation(e:CanvasMouseEvent) {              
               help="{__DOCBASE__}//images//help_1.bmp";
               }
    }]
};

How to Add Java Applets to Your Site

New on the Java Boutique:

New Review:

Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling API boasts simplicity, ease-of-integration, a well-rounded feature set, and it's free!

New Applet:

Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA sequences into three useful formats.

Elsewhere on internet.com:

WebDeveloper Java
Lots of Java information on webdeveloper.com

WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.

ScriptSearch Java
Hundreds of free Java code files to download.

jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.