001 package com.croftsoft.apps.mars.controller; 002 003 import java.awt.*; 004 import java.awt.event.*; 005 006 import com.croftsoft.core.lang.NullArgumentException; 007 import com.croftsoft.core.media.sound.AudioClipCache; 008 009 import com.croftsoft.apps.mars.UserData; 010 011 /********************************************************************* 012 * Toggles sound. 013 * 014 * @version 015 * 2003-04-04 016 * @since 017 * 2003-04-02 018 * @author 019 * <a href="https://www.croftsoft.com/">David Wallace Croft</a> 020 *********************************************************************/ 021 022 public final class SoundController 023 extends KeyAdapter 024 ////////////////////////////////////////////////////////////////////// 025 ////////////////////////////////////////////////////////////////////// 026 { 027 028 private final AudioClipCache audioClipCache; 029 030 private final UserData userData; 031 032 ////////////////////////////////////////////////////////////////////// 033 ////////////////////////////////////////////////////////////////////// 034 035 public SoundController ( 036 AudioClipCache audioClipCache, 037 UserData userData, 038 Component component ) 039 ////////////////////////////////////////////////////////////////////// 040 { 041 NullArgumentException.check ( 042 this.audioClipCache = audioClipCache ); 043 044 NullArgumentException.check ( this.userData = userData ); 045 046 component.addKeyListener ( this ); 047 048 component.requestFocus ( ); 049 } 050 051 ////////////////////////////////////////////////////////////////////// 052 // interface KeyListener methods 053 ////////////////////////////////////////////////////////////////////// 054 055 public void keyPressed ( KeyEvent keyEvent ) 056 ////////////////////////////////////////////////////////////////////// 057 { 058 if ( keyEvent.getKeyCode ( ) == KeyEvent.VK_S ) 059 { 060 boolean muted = !userData.isMuted ( ); 061 062 userData.setMuted ( muted ); 063 064 audioClipCache.setMuted ( muted ); 065 066 System.out.println ( "Sound " + ( muted ? "off" : "on" ) ); 067 } 068 } 069 070 ////////////////////////////////////////////////////////////////////// 071 ////////////////////////////////////////////////////////////////////// 072 }