/* * AnimatedImageButtonApplet.java * * Copyright (C) 1996 Shaun Terry. All Rights Reserved. */ package spt.applets; import java.awt.Image; import java.awt.Event; import java.net.URL; import java.net.MalformedURLException; import java.applet.*; import spt.gui.ImagePanel; import spt.gui.AnimatedImageButton; import spt.applets.ImageButtonApplet; /** * A button applet that can display an animation.

* Parameters *

 * ANIMATEONENTER		bool	Animate only on mouse enter (TRUE) or always (FALSE) (optional)
 * INFINITELOOP		bool	Run the image indefinitely or once only? (optional)
 * INTERFRAMEPAUSE		int	Interval between frames, in milliseconds (optional)
 * INTERCYCLEPAUSE		int	Interval between cycles, in milliseconds (optional)
 * FILEPREFIX		String	Files are of the form {prefix}XX.{extension} where XX = startnum..endnum (required)
 * FILEEXTENSION		String	(see above) (required)
 * FILESTARTNUM		int	(see above) (required)
 * FILEENDNUM		int	(see above) (required)
 * IMGSOURCEDIR		URL	The directory where the image files are (required)
 * TEXT			String	A button label (optional)
 *
 * 
* Plus ImageButtonApplet and StdApplet parameters. * * @see spt.applets.StdApplet * @see spt.applets.ImageButtonApplet * @see spt.gui.AnimatedImageButton * @author Shaun Terry */ public class AnimatedImageButtonApplet extends ImageButtonApplet { AnimatedImageButton imgButton; public void init() { stdAppletInit(); String imgsrcdir=null; imgsrcdir = paramParser.getParameter("IMGSOURCEDIR"); if (imgsrcdir == null) { System.err.println("Param(IMGSOURCEDIR): Must be specified"); return; } String prefix, ext; int startNum=1, endNum=(-1); int interframepause=(-1), intercyclepause=(-1); Integer ii=null; if ((ii = paramParser.getInteger("FILEENDNUM")) == null) { System.err.println("Param(FILEENDNUM): Must be specified"); return; } else endNum = ii.intValue(); prefix = paramParser.getParameter("FILEPREFIX", "T"); ext = paramParser.getParameter("FILEEXTENSION", "gif"); ii = paramParser.getInteger("FILESTARTNUM", 1); startNum = ii.intValue(); if ((ii = paramParser.getInteger("INTERFRAMEPAUSE")) != null) { interframepause = ii.intValue(); } if ((ii = paramParser.getInteger("INTERCYCLEPAUSE")) != null) { intercyclepause = ii.intValue(); } Image ip[] = new Image[endNum-startNum+1]; try { for (int i=startNum; i <= endNum; ++i) { URL f = new URL(getCodeBase(), imgsrcdir + "/" + prefix + i + "." + ext); ip[i-startNum] = ImagePanel.loadImage(this, f); } } catch (MalformedURLException f) { System.err.println(f); return; } paramParser.applyFontParam(); String text = paramParser.getParameter("TEXT"); imgButton = new AnimatedImageButton(text); for (int i=0; i < endNum-startNum+1; ++i) { if (i == 0 && intercyclepause >= 0) imgButton.addImage(ip[i], intercyclepause); else if (interframepause >= 0) imgButton.addImage(ip[i], interframepause); else imgButton.addImage(ip[i]); } if (paramParser.getBoolean("INFINITELOOP", true).booleanValue()) { imgButton.setRepeat(true); } else imgButton.setRepeat(false); super.imgButton = imgButton; super.setParams(); if (paramParser.getBoolean("ANIMATEONENTER", true).booleanValue()) { imgButton.setAnimateOnEnter(true); } else imgButton.setAnimateOnEnter(false); imgButton.startAnimation(); add(imgButton); } /** Parameters */ public String[][] getParameterInfo() { String[][] info = { { "ANIMATEONENTER", "boolean", "Animate only on mouse enter (TRUE) or always (FALSE)" }, { "INFINITELOOP", "boolean", "Run the image indefinitely or once only?" }, { "INTERFRAMEPAUSE","int", "Interval between frames, in milliseconds" }, { "INTERCYCLEPAUSE","int", "Interval between cycles, in milliseconds" }, { "FILEPREFIX", "String", "Files are of the form {prefix}XX.{extension} where XX = startnum..endnum" }, { "FILEEXTENSION", "String", "(see above)" }, { "FILESTARTNUM", "int", "(see above)" }, { "FILEENDNUM", "int", "(see above)" }, { "IMGSOURCEDIR", "URL", "The directory where the image files are" }, { "TEXT", "String", "A button label" }, }; return mergeParameters(super.getParameterInfo(), info); } }