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="http://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 }