001         package com.croftsoft.apps.ajgp.anim;
002    
003         import java.awt.Graphics2D;
004         import javax.swing.JComponent;
005    
006         import com.croftsoft.core.animation.ComponentAnimator;
007         import com.croftsoft.core.lang.NullArgumentException;
008    
009         /*********************************************************************
010         * ComponentAnimator implementation example.
011         *
012         * @version
013         *   2003-05-06
014         * @since
015         *   2003-05-06
016         * @author
017         *   <a href="https://www.croftsoft.com/">David Wallace Croft</a>
018         *********************************************************************/
019    
020         public final class  ExampleAnimator
021           implements ComponentAnimator
022         //////////////////////////////////////////////////////////////////////
023         //////////////////////////////////////////////////////////////////////
024         {
025    
026         private final String  text;
027    
028         private final int     deltaX;
029    
030         private final int     deltaY;
031    
032         //
033    
034         private int  x;
035    
036         private int  y;
037    
038         //////////////////////////////////////////////////////////////////////
039         //////////////////////////////////////////////////////////////////////
040    
041         public  ExampleAnimator (
042           String  text,
043           int     deltaX,
044           int     deltaY )
045         //////////////////////////////////////////////////////////////////////
046         {
047           NullArgumentException.check ( this.text = text );
048    
049           this.deltaX = deltaX;
050    
051           this.deltaY = deltaY;
052         }
053    
054         //////////////////////////////////////////////////////////////////////
055         //////////////////////////////////////////////////////////////////////
056    
057         public void  update ( JComponent  component )
058         //////////////////////////////////////////////////////////////////////
059         {
060           x += deltaX;
061    
062           y += deltaY;
063    
064           int  componentWidth  = component.getWidth  ( );
065    
066           int  componentHeight = component.getHeight ( );
067    
068           if ( x > componentWidth )
069           {
070             x = 0;
071           }
072           else if ( x < 0 )
073           {
074             x = componentWidth;
075           }
076           
077           if ( y > componentHeight )
078           {
079             y = 0;
080           }
081           else if ( y < 0 )
082           {
083             y = componentHeight;
084           }
085    
086           component.repaint ( );
087         }
088    
089         public void  paint (
090           JComponent  component,
091           Graphics2D  graphics )
092         //////////////////////////////////////////////////////////////////////
093         {
094           graphics.setColor ( component.getForeground ( ) );
095    
096           graphics.drawString ( text, x, y );
097         }
098    
099         //////////////////////////////////////////////////////////////////////
100         //////////////////////////////////////////////////////////////////////
101         }