001         package com.croftsoft.core.animation.animator;
002    
003         import java.awt.Graphics2D;
004         import java.io.Serializable;
005         import javax.swing.JComponent;
006    
007         import com.croftsoft.core.animation.ComponentAnimator;
008    
009         /*********************************************************************
010         * Animates text.
011         *
012         * @version
013         *   2002-03-31
014         * @since
015         *   2002-03-31
016         * @author
017         *   <a href="https://www.croftsoft.com/">David Wallace Croft</a>
018         *********************************************************************/
019    
020         public class  TextAnimator
021           implements ComponentAnimator, Serializable
022         //////////////////////////////////////////////////////////////////////
023         //////////////////////////////////////////////////////////////////////
024         {
025    
026         private static final long  serialVersionUID = 0L;
027    
028         //
029    
030         private String  text;
031    
032         private int     deltaX;
033    
034         private int     deltaY;
035    
036         private int     x;
037    
038         private int     y;
039    
040         //////////////////////////////////////////////////////////////////////
041         //////////////////////////////////////////////////////////////////////
042    
043         public  TextAnimator ( )
044         //////////////////////////////////////////////////////////////////////
045         {
046         }
047    
048         //////////////////////////////////////////////////////////////////////
049         //////////////////////////////////////////////////////////////////////
050    
051         public int     getDeltaX ( ) { return deltaX; }
052    
053         public int     getDeltaY ( ) { return deltaY; }
054    
055         public String  getText   ( ) { return text;   }
056    
057         public int     getX      ( ) { return x;      }
058    
059         public int     getY      ( ) { return y;      }
060    
061         //////////////////////////////////////////////////////////////////////
062         //////////////////////////////////////////////////////////////////////
063    
064         public void  setDeltaX ( int     deltaX ) { this.deltaX = deltaX; }
065    
066         public void  setDeltaY ( int     deltaY ) { this.deltaY = deltaY; }
067    
068         public void  setText   ( String  text   ) { this.text   = text;   }
069    
070         public void  setX      ( int     x      ) { this.x      = x;      }
071    
072         public void  setY      ( int     y      ) { this.y      = y;      }
073    
074         //////////////////////////////////////////////////////////////////////
075         //////////////////////////////////////////////////////////////////////
076    
077         public void  update ( JComponent  component )
078         //////////////////////////////////////////////////////////////////////
079         {
080           x += deltaX;
081    
082           y += deltaY;
083    
084           int  componentWidth  = component.getWidth  ( );
085    
086           int  componentHeight = component.getHeight ( );
087    
088           if ( x > componentWidth )
089           {
090             x = 0;
091           }
092           else if ( x < 0 )
093           {
094             x = componentWidth;
095           }
096           
097           if ( y > componentHeight )
098           {
099             y = 0;
100           }
101           else if ( y < 0 )
102           {
103             y = componentHeight;
104           }
105    
106           component.repaint ( );
107         }
108    
109         public void  paint (
110           JComponent  component,
111           Graphics2D  graphics )
112         //////////////////////////////////////////////////////////////////////
113         {
114           graphics.setColor ( component.getForeground ( ) );
115    
116           graphics.drawString ( text, x, y );
117         }
118    
119         //////////////////////////////////////////////////////////////////////
120         //////////////////////////////////////////////////////////////////////
121         }