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 }