/* * Copyright (c) 1994-1998 Sun Microsystems, Inc. All Rights Reserved. * * Permission to use, copy, modify, and distribute this software and its * documentation for NON-COMMERCIAL or COMMERCIAL purposes and without fee is * hereby granted. Please refer to the file * http://java.sun.com/nav/business/trademark_guidelines.html for further * important copyright and trademark information and to * http://java.sun.com/nav/business/index.html for further important licensing * information for the Java (tm) Technology. * * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR * NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY * LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR * ITS DERIVATIVES. * * THIS SOFTWARE IS NOT DESIGNED OR INTENDED FOR USE OR RESALE AS ON-LINE * CONTROL EQUIPMENT IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE PERFORMANCE, * SUCH AS IN THE OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR * COMMUNICATION SYSTEMS, AIR TRAFFIC CONTROL, DIRECT LIFE SUPPORT MACHINES, OR * WEAPONS SYSTEMS, IN WHICH THE FAILURE OF THE SOFTWARE COULD LEAD DIRECTLY TO * DEATH, PERSONAL INJURY, OR SEVERE PHYSICAL OR ENVIRONMENTAL DAMAGE ("HIGH * RISK ACTIVITIES"). SUN SPECIFICALLY DISCLAIMS ANY EXPRESS OR IMPLIED * WARRANTY OF FITNESS FOR HIGH RISK ACTIVITIES. */ /* Modifié le 3.3.1999 par Xavier GARREAU... */ import java.applet.*; import java.awt.*; import java.net.*; public class JavaBanner extends Applet implements Runnable { private Graphics offG; private Dimension size; // Taille de l'aplet private Image offImage; private Thread animate; private Color bgcolor; // Couleur de fond de l'applet private long delay; // Délai entre deux images private String target; // Nom du cadre ou de la fenêtre affichant l'url séléctionnée private ImageList list; public void init() { size = size(); // Quelle est la taille de l'applet ? // Récupère le paramètre bgcolor String value = getParameter("bgcolor"); if (value != null) { bgcolor = new Color(Integer.parseInt(value, 16)); } else { bgcolor = Color.white; // Blanc par défaut } setBackground(bgcolor); // Applique la couleur de fond à l'applet offImage = createImage(size.width, size.height); // Création de l'image offG = offImage.getGraphics(); // Récupère le paramètre 'delay' value = getParameter("delay"); if (value != null) { delay = Integer.parseInt(value); } else { delay = 100; // 100 millisecondes par défaut } // Récupère le paramètre 'target' value = getParameter("target"); if (value != null) { target = new String(value); } else { target = "_self"; // Par défaut, la cible est le conteneur de l'applet } list = new ImageList(this); // Création de la liste d'images list.loadImages(); } public void start() { if ((animate == null) || (!animate.isAlive())) { animate = new Thread(this); } animate.start(); // Lance le Thread } public void run() { while (Thread.currentThread() == animate) { try { list.update(); // Rafraichissement de l'image repaint(); Thread.sleep(delay); } catch(InterruptedException e) { e.printStackTrace(); } } } public void stop() { if ((animate != null) && (animate.isAlive())) { animate.stop(); // Arrêt. Est appelé lors d'un changement de page. } } public void destroy() { animate = null; } public void update(Graphics g) { list.paint(offG); paint(g); } public void paint(Graphics g) { g.drawImage(offImage, 0, 0, this); } public boolean mouseDown(Event evt, int x, int y) // Evènement : clic { if (target.equals("_self")) { stop(); // On arrête l'animation si on charge la page dans le contenant de l'applet } getAppletContext().showDocument(list.getURL(), target); // On affiche le lien dans la cible spécifiée return(true); } public boolean mouseEnter(Event evt, int x, int y) // Evènement : la souris entre dans l'applet { list.setMouseEnter(true); // souris dans la zone = vrai showStatus(list.getURLString()); // Affichage dans la barre d'état l'adresse correspondant à l'image actuelle return(true); } public boolean mouseExit(Event evt, int x, int y) // Evènement : La souris sort de l'applet { list.setMouseEnter(false); // souris dans la zone = faux showStatus(""); // Rien à afficher dans la barre d'état return(true); } }