advertisement
javaboutique
Search Tips
Articles  |   Tutorials  |   Reviews  |   Tools  |   by Category  |   by Date  |   by Name  |   Submit  |   Source  |   Forums  |  
javaboutique
Browse DevX


Partners & Affiliates











advertisement

TextFade


//TextFade.java by Alec Cove.

import java.applet.*;
import java.awt.*;
import java.util.*;

public class TextFade extends Applet implements Runnable
{

	public static final int SLEEPTIME = 80;

	public void init() {
		imageBuffer = createImage(size().width, size().height);
        bGraphics = imageBuffer.getGraphics();
       	currentLink = 0;
		errorMessage ="";

		try {
			linkDelay = Integer.parseInt(getParameter("linkdelay"));
			fadeSpeed = Integer.parseInt(getParameter("fadespeed"));
			fSize = Integer.parseInt(getParameter("fontsize"));
			xStart = Integer.parseInt(getParameter("xstart"));
			yStart = Integer.parseInt(getParameter("ystart"));
			blockWidth = Integer.parseInt(getParameter("textblockwidth"));
			leading = Integer.parseInt(getParameter("leading"));
			paramsCollected = true;
		} catch (NumberFormatException e) {
			paramsCollected = false;
		}

		pc = new ParameterCollector("string_", this);
		paramStrings = pc.get("string_");
		paramUrls = pc.get("url_");
		paramTargets = pc.get("target_");
		textColor = pc.hexConvert(getParameter("textcolor"));
		rollColor = pc.hexConvert(getParameter("rollcolor"));
		backColor = pc.hexConvert(getParameter("backcolor"));

		String fFace = getParameter("fontface");
		int fStyle = pc.getFontStyle(getParameter("fontstyle"));
		f = new Font(fFace, fStyle, fSize);

		if (paramsCollected)
			buildTextLinks();
		else
			errorMessage = ""; //Removed error message in case people dont want links
	}

	public void paint(Graphics g) {
		bGraphics.setColor(backColor);
		bGraphics.fillRect(0, 0, size().width, size().height);

		drawParagraph(textlinkArray[currentLink]);
		g.drawImage(imageBuffer, 0, 0, this);
	}

	private void drawParagraph(TextLink tl) {
		bGraphics.setColor(tl.getTextColor());
		bGraphics.setFont(f);
		for(int i=0; i < tl.getNumStrings(); i++)
			bGraphics.drawString( tl.getString(i), tl.getPos().x, tl.getLeading(i) );
	}

	private void buildTextLinks()
	{
		FontMetrics fm = bGraphics.getFontMetrics(f);
		textlinkArray = new TextLink[paramStrings.length];
		for (int i = 0; i < paramStrings.length; i++) {
			textlinkArray[i] = new TextLink (paramStrings[i], paramUrls[i], paramTargets[i], xStart, yStart, blockWidth, leading, textColor, rollColor, fm);
			textlinkArray[i].setTextColor(backColor); //start out fading in - same color as the background
		}
	}

	public void run() {
        while(true) {
            repaint();
			if ( !(textlinkArray[currentLink].getHighlight()) )
				cycleLinks(linkDelay);
            try {
                Thread.sleep(SLEEPTIME);
            }
            catch (Exception e){
            }
        }
	}

	private void cycleLinks(int delaySeconds)
	{
		long t = new Date().getTime();

		if ( t - tSeconds > (delaySeconds * 1000) ) {
			if (textlinkArray[currentLink].fadeTo(backColor, fadeSpeed)) {
				currentLink = (currentLink >= textlinkArray.length-1) ? 0 : currentLink + 1;
				tSeconds = t;
			}
		}
		else
			textlinkArray[currentLink].fadeTo(textColor, fadeSpeed);
	}

	public boolean mouseMove(Event evt, int x, int y) {
		showStatus(errorMessage);
		if ( textlinkArray[currentLink].mouseWithin(x, y) )
			textlinkArray[currentLink].setHighlight(true);
		else
			textlinkArray[currentLink].setHighlight(false);
		return true;
	}

	public boolean mouseExit(Event evt, int x, int y) {
		for (int i = 0; i < textlinkArray.length; i++)
			textlinkArray[i].setHighlight(false);
		return true;
	}

	public boolean mouseDown(Event evt, int x, int y) {
		if ( textlinkArray[currentLink].mouseWithin(x, y) ) {
			try {
				AppletContext context = getAppletContext();
				context.showDocument(textlinkArray[currentLink].getUrl(), textlinkArray[currentLink].getTarget());
			}
			catch(Exception e) {
				errorMessage = "Warning: one or more url parameters are set incorrectly!";
			}
		}
		return true;
	}

	public void start() {
		if (m_ScrollerApplet == null) {
			m_ScrollerApplet = new Thread(this);
			textlinkArray[currentLink].setHighlight(false);
			tSeconds = new Date().getTime();
			m_ScrollerApplet.start();
		}
	}

	public void stop() {
		if (m_ScrollerApplet != null) {
			m_ScrollerApplet.stop();
			m_ScrollerApplet = null;
		}
	}

	public void update(Graphics g) {
		paint(g);
    }

	private String[] paramStrings;
	private String[] paramUrls;
	private String[] paramTargets;
	private Color[] barColorsArray;
	private TextLink[] textlinkArray;
	private int currentLink;

	private long tSeconds;
	private ParameterCollector pc;
	private Image imageBuffer;
	private Graphics bGraphics;
	private Thread m_ScrollerApplet;

	private Color textColor;
	private Color rollColor;
	private Color backColor;
	private Font f;
	private int linkDelay;
	private int fadeSpeed;
	private int fSize;
	private int xStart;
	private int yStart;
	private int blockWidth;
	private int leading;

	private boolean paramsCollected;
	private String errorMessage;
}

Return to TextFade

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.

 Microsoft RIA Development Center
 IBM Rational Resource Center
 Destination .NET
XML error: not well-formed (invalid token) at line 33
advertisement
Receive Articles via our XML/RSS feed
Receive Articles via our XML/RSS feed

JavaBytes
Internet Cyclone
This powerful, easy-to-use, internet optimizer is for Windows 95, 98, ME, NT, 2000 and XP. It's designed to automatically optimize your Windows settings, boosting your Internet connection up to 200%.

Free VMware Server 2.0 Now Release Candidate
Linux Player Xandros Grabs Storied Rival Linspire
Hey Enterprise: Here Comes the 3G iPhone
MySpace Opens Profile Portability API
Microsoft Jumps Into Virtualization Fray
Eclipse Ganymede Makes It Easier for Devs
Open Source Nokia a Threat to Microsoft, Google?
Salesforce, Google Head for 2nd on Apps
HP Open Sources Unix File System for Linux
Red Hat Opens Its Network to Space

Build a Generic Histogram Generator for SQL Server
Beyond XML and JSON: YAML for Java Developers
Mastering the Windows Mobile Emulators
Avaya AE Services Provide Rapid Telephony Integration with Facebook
Featured Algorithm: Intel Threading Building Blocks: parallel_reduce
Getting Started with Windows Live Admin Center
Eight Key Practices for ASP.NET Deployment
Java ME User Interfaces: Do It with LWUIT!
Talking VPro: Transcript
Bringing Semantic Technology to the Enterprise

Advertising Info  |   Member Services  |   Contact Us  |   Help  |   Feedback  |   Site Map  |   Network Map  |   About



JupiterOnlineMedia

internet.comearthweb.comDevx.commediabistro.comGraphics.com

Search:

Jupitermedia Corporation has two divisions: Jupiterimages and JupiterOnlineMedia

Jupitermedia Corporate Info


Legal Notices, Licensing, Reprints, & Permissions, Privacy Policy.

Advertise | Newsletters | Tech Jobs | Shopping | E-mail Offers

Solutions
Whitepapers and eBooks
IBM eBook: Planning a Service Oriented Architecture
IBM eBook: Choosing the Right Architecture--What It Means for You and Your Business
Microsoft Article: Will Hyper-V Make VMware This Decade's Netscape?
Avaya Article: Using Intelligent Presence to Create Smarter Business Applications
Intel Go Parallel Article: Getting Started with TBB on Windows
Microsoft Article: 7.0, Microsoft's Lucky Version?
Avaya Article: How to Feed Data into the Avaya Event Processor
IBM Article: Developing a Software Policy for Your Organization
Microsoft Article: Managing Virtual Machines with Microsoft System Center
Intel Go Parallel Article: Intel Threading Tools and OpenMP
HP eBook: Storage Networking , Part 1
Microsoft Article: Solving Data Center Complexity with Microsoft System Center Configuration Manager 2007
MORE WHITEPAPERS, EBOOKS, AND ARTICLES
Webcasts
HP Video: StorageWorks EVA4400 and Oracle
HP Webcast: Storage Is Changing Fast - Be Ready or Be Left Behind
Microsoft Silverlight Video: Creating Fading Controls with Expression Design and Expression Blend 2
MORE WEBCASTS, PODCASTS, AND VIDEOS
Downloads and eKits
Red Gate Download: SQL Toolbelt and free High-Performance SQL Code eBook
Iron Speed Designer Application Generator
MORE DOWNLOADS, EKITS, AND FREE TRIALS
Tutorials and Demos
Silverlight 2 App and Walkthrough: Leverage Silverlight 2 with SQL Server and XML
IBM Article: Enterprise Search--Do You Know What's Out There?
HP Demo: StorageWorks EVA4400
Microsoft Article: The Progress and Promise of Deep Zoom
Microsoft How-to Article: Get Going with Silverlight and Windows Live
MORE TUTORIALS, DEMOS AND STEP-BY-STEP GUIDES