OSDN Git Service

5ea85770f3d323599e51bc6307b0a83d3d2c3a38
[mikumikustudio/MikuMikuStudio.git] / src / com / jme / input / keyboard / TriggersKeyboardInputListener.java
1 /*
2  * Copyright (c) 2003-2009 jMonkeyEngine
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are
7  * met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  *   notice, this list of conditions and the following disclaimer.
11  *
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.
15  *
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.
19  *
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.
31  */
32
33 package com.jme.input.keyboard;
34
35 import java.util.ArrayList;
36
37 import com.jme.input.ActionTrigger;
38 import com.jme.input.KeyInput;
39 import com.jme.input.KeyInputListener;
40
41 /**
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.
44  */
45 class TriggersKeyboardInputListener implements KeyInputListener {
46
47     public TriggersKeyboardInputListener() {
48     }
49
50     public void activate() {
51         KeyInput.get().addListener( this );
52     }
53
54     public void deactivate() {
55         KeyInput.get().removeListener( this );
56     }
57
58     private ArrayList<KeyboardInputHandlerDevice.KeyTrigger> buttonTriggers = new ArrayList<KeyboardInputHandlerDevice.KeyTrigger>();
59
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 );
64         }
65
66     }
67
68     void add( KeyboardInputHandlerDevice.KeyTrigger trigger ) {
69         buttonTriggers.add( trigger );
70     }
71
72     void remove( KeyboardInputHandlerDevice.KeyTrigger trigger ) {
73         buttonTriggers.remove( trigger );
74     }
75 }