001 package com.croftsoft.apps.chat.view; 002 003 import java.awt.*; 004 import java.awt.geom.*; 005 import java.io.*; 006 import java.util.*; 007 import javax.swing.JComponent; 008 009 import com.croftsoft.core.animation.ComponentAnimator; 010 import com.croftsoft.core.animation.animator.ModelAnimator; 011 import com.croftsoft.core.animation.animator.WorldAnimator; 012 import com.croftsoft.core.animation.model.ModelAccessor; 013 import com.croftsoft.core.animation.model.WorldAccessor; 014 import com.croftsoft.core.animation.painter.ColorPainter; 015 import com.croftsoft.core.awt.image.ImageCache; 016 import com.croftsoft.core.lang.NullArgumentException; 017 import com.croftsoft.core.media.sound.AudioClipCache; 018 019 import com.croftsoft.apps.chat.ChatConstants; 020 import com.croftsoft.apps.chat.model.ChatModelAccessor; 021 022 /********************************************************************* 023 * ComponentAnimator for a ChatModel. 024 * 025 * @version 026 * 2003-07-23 027 * @since 028 * 2003-06-11 029 * @author 030 * <a href="https://www.croftsoft.com/">David Wallace Croft</a> 031 *********************************************************************/ 032 033 public final class ChatModelAnimator 034 extends ModelAnimator 035 ////////////////////////////////////////////////////////////////////// 036 ////////////////////////////////////////////////////////////////////// 037 { 038 039 private final ChatModelAccessor chatModelAccessor; 040 041 private final ImageCache imageCache; 042 043 private final AffineTransform affineTransform; 044 045 ////////////////////////////////////////////////////////////////////// 046 ////////////////////////////////////////////////////////////////////// 047 048 public ChatModelAnimator ( 049 ChatModelAccessor chatModelAccessor, 050 ImageCache imageCache ) 051 ////////////////////////////////////////////////////////////////////// 052 { 053 super ( chatModelAccessor ); 054 055 this.chatModelAccessor = chatModelAccessor; 056 057 NullArgumentException.check ( this.imageCache = imageCache ); 058 059 affineTransform = new AffineTransform ( ); 060 } 061 062 ////////////////////////////////////////////////////////////////////// 063 ////////////////////////////////////////////////////////////////////// 064 065 public void paint ( 066 JComponent component, 067 Graphics2D graphics ) 068 ////////////////////////////////////////////////////////////////////// 069 { 070 if ( chatModelAccessor.isActive ( ) ) 071 { 072 affineTransform.setToTranslation ( 073 chatModelAccessor.getCenterX ( ) - ChatConstants.RADIUS, 074 chatModelAccessor.getCenterY ( ) - ChatConstants.RADIUS ); 075 076 try 077 { 078 graphics.drawImage ( 079 imageCache.get ( 080 chatModelAccessor.getAvatarType ( ).toLowerCase ( ) 081 + ChatConstants.AVATAR_IMAGE_FILENAME_EXTENSION ), 082 affineTransform, 083 null ); 084 } 085 catch ( IOException ex ) 086 { 087 ex.printStackTrace ( ); 088 } 089 } 090 } 091 092 ////////////////////////////////////////////////////////////////////// 093 ////////////////////////////////////////////////////////////////////// 094 }