001         package com.croftsoft.apps.chat.view;
002    
003         import java.awt.*;
004         import javax.swing.JComponent;
005    
006         import com.croftsoft.core.animation.ComponentAnimator;
007         import com.croftsoft.core.animation.ComponentPainter;
008         import com.croftsoft.core.animation.painter.ColorPainter;
009         import com.croftsoft.core.awt.image.ImageCache;
010         import com.croftsoft.core.lang.NullArgumentException;
011    
012         import com.croftsoft.apps.chat.model.ChatGameAccessor;
013    
014         /*********************************************************************
015         * ChatGame ComponentAnimator.
016         *
017         * @version
018         *   2003-06-11
019         * @since
020         *   2003-06-06
021         * @author
022         *   <a href="https://www.croftsoft.com/">David Wallace Croft</a>
023         *********************************************************************/
024    
025         public final class  ChatGameAnimator
026           implements ComponentAnimator
027         //////////////////////////////////////////////////////////////////////
028         //////////////////////////////////////////////////////////////////////
029         {
030    
031         private static final Color  BACKGROUND_COLOR = Color.BLACK;
032    
033         //
034    
035         private final ChatGameAccessor   chatGameAccessor;
036    
037         private final ComponentPainter   backgroundColorPainter;
038    
039         private final ChatWorldAnimator  chatWorldAnimator;
040    
041         //////////////////////////////////////////////////////////////////////
042         //////////////////////////////////////////////////////////////////////
043    
044         public  ChatGameAnimator (
045           ChatGameAccessor  chatGameAccessor,
046           JComponent        component,
047           ClassLoader       classLoader,
048           String            mediaDir )
049         //////////////////////////////////////////////////////////////////////
050         {
051           NullArgumentException.check (
052             this.chatGameAccessor = chatGameAccessor );
053    
054           backgroundColorPainter = new ColorPainter ( BACKGROUND_COLOR );
055    
056           chatWorldAnimator = new ChatWorldAnimator (
057             chatGameAccessor.getChatWorldAccessor ( ),
058             new ImageCache (
059               Transparency.BITMASK,
060               component,
061               classLoader,
062               mediaDir ) );
063         }
064    
065         //////////////////////////////////////////////////////////////////////
066         // interface ComponentAnimator methods
067         //////////////////////////////////////////////////////////////////////
068    
069         public void  update ( JComponent  component )
070         //////////////////////////////////////////////////////////////////////
071         {
072           chatWorldAnimator.update ( component );
073         }
074    
075         public void  paint (
076           JComponent  component,
077           Graphics2D  graphics )
078         //////////////////////////////////////////////////////////////////////
079         {
080           backgroundColorPainter.paint ( component, graphics );
081    
082           chatWorldAnimator.paint ( component, graphics );
083         }
084    
085         //////////////////////////////////////////////////////////////////////
086         //////////////////////////////////////////////////////////////////////
087         }