001         package com.croftsoft.core.animation.controller;
002    
003         import java.awt.*;
004         import java.awt.event.*;
005    
006         import com.croftsoft.core.animation.animator.FrameRateAnimator;
007         import com.croftsoft.core.lang.NullArgumentException;
008    
009         /*********************************************************************
010         * Toggle the frame rate display.
011         *
012         * @version
013         *   2003-08-02
014         * @since
015         *   2003-04-11
016         * @author
017         *   <a href="https://www.croftsoft.com/">David Wallace Croft</a>
018         *********************************************************************/
019    
020         public final class  FrameRateController
021           extends KeyAdapter
022         //////////////////////////////////////////////////////////////////////
023         //////////////////////////////////////////////////////////////////////
024         {
025    
026         private final FrameRateAnimator  frameRateAnimator;
027    
028         //////////////////////////////////////////////////////////////////////
029         //////////////////////////////////////////////////////////////////////
030    
031         public  FrameRateController (
032           Component          component,
033           FrameRateAnimator  frameRateAnimator )
034         //////////////////////////////////////////////////////////////////////
035         {
036           NullArgumentException.check (
037             this.frameRateAnimator = frameRateAnimator );
038    
039           component.addKeyListener ( this );
040    
041           component.requestFocus ( );
042         }
043    
044         public  FrameRateController ( Component  component )
045         //////////////////////////////////////////////////////////////////////
046         {
047           this ( component, new FrameRateAnimator ( component ) );
048    
049           // initially off
050    
051           frameRateAnimator.toggle ( );
052         }
053    
054         //////////////////////////////////////////////////////////////////////
055         // accessor methods
056         //////////////////////////////////////////////////////////////////////
057    
058         public FrameRateAnimator  getFrameRateAnimator ( )
059         //////////////////////////////////////////////////////////////////////
060         {
061           return frameRateAnimator;
062         }
063    
064         //////////////////////////////////////////////////////////////////////
065         // interface KeyListener methods
066         //////////////////////////////////////////////////////////////////////
067    
068         public void  keyPressed ( KeyEvent  keyEvent )
069         //////////////////////////////////////////////////////////////////////
070         {
071           if ( keyEvent.getKeyCode ( ) == KeyEvent.VK_F )
072           {
073             frameRateAnimator.toggle ( );
074           }
075         }
076    
077         //////////////////////////////////////////////////////////////////////
078         //////////////////////////////////////////////////////////////////////
079         }