2 * Copyright (c) 2003-2009 jMonkeyEngine
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
12 * * Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
16 * * Neither the name of 'jMonkeyEngine' nor the names of its contributors
17 * may be used to endorse or promote products derived from this software
18 * without specific prior written permission.
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
22 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
27 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
28 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
29 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 package com.jme.input.keyboard;
35 import java.util.ArrayList;
37 import com.jme.input.ActionTrigger;
38 import com.jme.input.KeyInput;
39 import com.jme.input.KeyInputListener;
42 * Each {@link KeyboardInputHandlerDevice} has an instance of this class which is subscribed at the
43 * {@link com.jme.input.KeyInput} to receive keyboard events and forward them to the keyboard triggers.
45 class TriggersKeyboardInputListener implements KeyInputListener {
47 public TriggersKeyboardInputListener() {
50 public void activate() {
51 KeyInput.get().addListener( this );
54 public void deactivate() {
55 KeyInput.get().removeListener( this );
58 private ArrayList<KeyboardInputHandlerDevice.KeyTrigger> buttonTriggers = new ArrayList<KeyboardInputHandlerDevice.KeyTrigger>();
60 public void onKey( char character, int keyCode, boolean pressed ) {
61 for ( int i = buttonTriggers.size() - 1; i >= 0; i-- ) {
62 final ActionTrigger trigger = buttonTriggers.get( i );
63 trigger.checkActivation( character, keyCode, Float.NaN, Float.NaN, pressed, null );
68 void add( KeyboardInputHandlerDevice.KeyTrigger trigger ) {
69 buttonTriggers.add( trigger );
72 void remove( KeyboardInputHandlerDevice.KeyTrigger trigger ) {
73 buttonTriggers.remove( trigger );