001 package com.croftsoft.apps.neuro; 002 003 import java.awt.event.*; 004 005 import com.croftsoft.core.gui.controller.NilController; 006 import com.croftsoft.core.lang.NullArgumentException; 007 import com.croftsoft.core.lang.lifecycle.Startable; 008 import com.croftsoft.core.util.slot.Slot; 009 010 /*********************************************************************** 011 * Neuro controller. 012 * 013 * Modifies the Model based on user input. 014 * 015 * @version 016 * $Id: NeuroController.java,v 1.5 2008/09/20 05:01:49 croft Exp $ 017 * @since 018 * 2008-08-17 019 * @author 020 * <a href="https://www.croftsoft.com/">David Wallace Croft</a> 021 ***********************************************************************/ 022 023 public final class NeuroController 024 extends NilController 025 implements Startable 026 //////////////////////////////////////////////////////////////////////// 027 //////////////////////////////////////////////////////////////////////// 028 { 029 030 private final Slot<NeuroMessage> requestSlot; 031 032 // 033 034 private boolean 035 keyFPressed, 036 mouseClicked, 037 spacePressed; 038 039 //////////////////////////////////////////////////////////////////////// 040 // constructor method 041 //////////////////////////////////////////////////////////////////////// 042 043 public NeuroController ( final Slot<NeuroMessage> requestSlot ) 044 //////////////////////////////////////////////////////////////////////// 045 { 046 NullArgumentException.checkArgs ( this.requestSlot = requestSlot ); 047 } 048 049 //////////////////////////////////////////////////////////////////////// 050 // listener methods 051 //////////////////////////////////////////////////////////////////////// 052 053 @Override 054 public void keyPressed ( final KeyEvent keyEvent ) 055 //////////////////////////////////////////////////////////////////////// 056 { 057 switch ( keyEvent.getKeyCode ( ) ) 058 { 059 case KeyEvent.VK_SPACE: 060 061 spacePressed = true; 062 063 break; 064 065 case KeyEvent.VK_F: 066 067 keyFPressed = true; 068 069 break; 070 071 default: 072 073 // ignore 074 } 075 } 076 077 @Override 078 public void mouseClicked ( final MouseEvent mouseEvent ) 079 //////////////////////////////////////////////////////////////////////// 080 { 081 mouseClicked = true; 082 } 083 084 //////////////////////////////////////////////////////////////////////// 085 // lifecycle methods 086 //////////////////////////////////////////////////////////////////////// 087 088 public void start ( ) 089 //////////////////////////////////////////////////////////////////////// 090 { 091 keyFPressed = false; 092 093 mouseClicked = false; 094 095 spacePressed = false; 096 } 097 098 @Override 099 public void update ( ) 100 //////////////////////////////////////////////////////////////////////// 101 { 102 if ( keyFPressed ) 103 { 104 keyFPressed = !requestSlot.offer ( 105 NeuroMessage.TOGGLE_FRAME_RATE_REQUEST_INSTANCE ); 106 } 107 108 if ( mouseClicked ) 109 { 110 mouseClicked = !requestSlot.offer ( 111 NeuroMessage.TOGGLE_CHANNEL_REQUEST_INSTANCE ); 112 } 113 114 if ( spacePressed ) 115 { 116 spacePressed = !requestSlot.offer ( 117 NeuroMessage.TOGGLE_PAUSE_REQUEST_INSTANCE ); 118 } 119 } 120 121 //////////////////////////////////////////////////////////////////////// 122 //////////////////////////////////////////////////////////////////////// 123 }