From 603d4c6ce67e626442b1466d90ed4c06ee549808 Mon Sep 17 00:00:00 2001 From: elias Date: Fri, 23 Jun 2006 10:48:04 +0000 Subject: [PATCH] Added ControllerEventTest for testing event queueing --- build.xml | 6 + .../games/input/test/ControllerEventTest.java | 300 +++++++++++ .../games/input/test/ControllerReadTest.java | 497 +++++++++--------- plugins/windows/src/native/build.xml | 2 +- 4 files changed, 553 insertions(+), 252 deletions(-) create mode 100644 coreAPI/src/java/net/java/games/input/test/ControllerEventTest.java diff --git a/build.xml b/build.xml index 6ee1457..67eaee9 100644 --- a/build.xml +++ b/build.xml @@ -45,6 +45,12 @@ + + + + + + diff --git a/coreAPI/src/java/net/java/games/input/test/ControllerEventTest.java b/coreAPI/src/java/net/java/games/input/test/ControllerEventTest.java new file mode 100644 index 0000000..77330e7 --- /dev/null +++ b/coreAPI/src/java/net/java/games/input/test/ControllerEventTest.java @@ -0,0 +1,300 @@ +/***************************************************************************** + * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistribution of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistribution in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materails provided with the distribution. + * + * Neither the name Sun Microsystems, Inc. or the names of the contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * This software is provided "AS IS," without a warranty of any kind. + * ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING + * ANY IMPLIED WARRANT OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR + * NON-INFRINGEMEN, ARE HEREBY EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN") AND + * ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS + * A RESULT OF USING, MODIFYING OR DESTRIBUTING THIS SOFTWARE OR ITS + * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST + * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, + * INCIDENTAL OR PUNITIVE DAMAGES. HOWEVER CAUSED AND REGARDLESS OF THE THEORY + * OF LIABILITY, ARISING OUT OF THE USE OF OUR INABILITY TO USE THIS SOFTWARE, + * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + * + * You acknowledge that this software is not designed or intended for us in + * the design, construction, operation or maintenance of any nuclear facility + * + *****************************************************************************/ +package net.java.games.input.test; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Container; +import java.awt.GridLayout; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.HashMap; + +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; + +import net.java.games.input.Component; +import net.java.games.input.Controller; +import net.java.games.input.ControllerEnvironment; +import net.java.games.input.EventQueue; +import net.java.games.input.Event; + +public class ControllerEventTest extends JFrame{ + private static abstract class AxisPanel extends JPanel{ + Component axis; + float data; + + public AxisPanel(Component ax){ + axis = ax; + setLayout(new BorderLayout()); + add(new JLabel(ax.getName()+"("+ax.getIdentifier()+")"), + BorderLayout.NORTH); + } + + public void setPollData(float data){ + this.data = data; + renderData(); + } + + public Component getAxis() { + return axis; + } + + protected abstract void renderData(); + } + + private static class DigitalAxisPanel extends AxisPanel { + JLabel digitalState = new JLabel(""); + + public DigitalAxisPanel(Component ax) { + super(ax); + add(digitalState,BorderLayout.CENTER); + } + + protected void renderData(){ + if (data == 0.0f){ + digitalState.setBackground(getBackground()); + digitalState.setText("OFF"); + } else if ( data == 1.0f) { + digitalState.setBackground(Color.green); + digitalState.setText("ON"); + }else { // shoudl never happen + digitalState.setBackground(Color.red); + digitalState.setText("ERR:"+data); + } + digitalState.repaint(); + } + } + + private static class DigitalHatPanel extends AxisPanel { + JLabel digitalState = new JLabel(""); + + public DigitalHatPanel(Component ax) { + super(ax); + add(digitalState,BorderLayout.CENTER); + } + + protected void renderData(){ + if (data == Component.POV.OFF){ + digitalState.setBackground(getBackground()); + digitalState.setText("OFF"); + } else if ( data == Component.POV.UP) { + digitalState.setBackground(Color.green); + digitalState.setText("UP"); + } else if ( data == Component.POV.UP_RIGHT) { + digitalState.setBackground(Color.green); + digitalState.setText("UP+RIGHT"); + } else if ( data == Component.POV.RIGHT) { + digitalState.setBackground(Color.green); + digitalState.setText("RIGHT"); + } else if ( data == Component.POV.DOWN_RIGHT) { + digitalState.setBackground(Color.green); + digitalState.setText("DOWN+RIGHT"); + } else if ( data == Component.POV.DOWN) { + digitalState.setBackground(Color.green); + digitalState.setText("DOWN"); + } else if ( data == Component.POV.DOWN_LEFT) { + digitalState.setBackground(Color.green); + digitalState.setText("DOWN+LEFT"); + } else if ( data == Component.POV.LEFT) { + digitalState.setBackground(Color.green); + digitalState.setText("LEFT"); + } else if ( data == Component.POV.UP_LEFT) { + digitalState.setBackground(Color.green); + digitalState.setText("UP+LEFT"); + }else { // shoudl never happen + digitalState.setBackground(Color.red); + digitalState.setText("ERR:"+data); + } + digitalState.repaint(); + } + } + private static class AnalogAxisPanel extends AxisPanel { + JLabel analogState = new JLabel(""); + + public AnalogAxisPanel(Component ax) { + super(ax); + add(analogState,BorderLayout.CENTER); + } + + protected void renderData(){ + String extra = ""; + if (getAxis().getDeadZone() >= Math.abs(data)) + extra = " (DEADZONE)"; + analogState.setText(""+data+extra); + analogState.repaint(); + } + } + + + + private static class ControllerWindow extends JFrame { + Controller ca; + Map axes_to_panels = new HashMap(); + boolean disabled = false; + + public ControllerWindow(JFrame frame,Controller ca){ + super(ca.getName()); + this.setName(ca.getName()); + this.ca = ca; + Container c = this.getContentPane(); + c.setLayout(new BorderLayout()); + Component[] components = ca.getComponents(); + System.out.println("Component count = "+components.length); + if (components.length>0) { + int width = (int)Math.ceil(Math.sqrt(components.length)); + JPanel p = new JPanel(); + p.setLayout(new GridLayout(width,0)); + for(int j=0;j"); - - public DigitalAxisPanel(Component ax) { - super(ax); - add(digitalState,BorderLayout.CENTER); - } - - protected void renderData(){ - if (data == 0.0f){ - digitalState.setBackground(getBackground()); - digitalState.setText("OFF"); - } else if ( data == 1.0f) { - digitalState.setBackground(Color.green); - digitalState.setText("ON"); - }else { // shoudl never happen - digitalState.setBackground(Color.red); - digitalState.setText("ERR:"+data); - } - digitalState.repaint(); - } -} - -class DigitalHatPanel extends AxisPanel { - JLabel digitalState = new JLabel(""); - - public DigitalHatPanel(Component ax) { - super(ax); - add(digitalState,BorderLayout.CENTER); - } - - protected void renderData(){ - if (data == Component.POV.OFF){ - digitalState.setBackground(getBackground()); - digitalState.setText("OFF"); - } else if ( data == Component.POV.UP) { - digitalState.setBackground(Color.green); - digitalState.setText("UP"); - } else if ( data == Component.POV.UP_RIGHT) { - digitalState.setBackground(Color.green); - digitalState.setText("UP+RIGHT"); - } else if ( data == Component.POV.RIGHT) { - digitalState.setBackground(Color.green); - digitalState.setText("RIGHT"); - } else if ( data == Component.POV.DOWN_RIGHT) { - digitalState.setBackground(Color.green); - digitalState.setText("DOWN+RIGHT"); - } else if ( data == Component.POV.DOWN) { - digitalState.setBackground(Color.green); - digitalState.setText("DOWN"); - } else if ( data == Component.POV.DOWN_LEFT) { - digitalState.setBackground(Color.green); - digitalState.setText("DOWN+LEFT"); - } else if ( data == Component.POV.LEFT) { - digitalState.setBackground(Color.green); - digitalState.setText("LEFT"); - } else if ( data == Component.POV.UP_LEFT) { - digitalState.setBackground(Color.green); - digitalState.setText("UP+LEFT"); - }else { // shoudl never happen - digitalState.setBackground(Color.red); - digitalState.setText("ERR:"+data); - } - digitalState.repaint(); - } -} -class AnalogAxisPanel extends AxisPanel { - JLabel analogState = new JLabel(""); - - public AnalogAxisPanel(Component ax) { - super(ax); - add(analogState,BorderLayout.CENTER); - } - - protected void renderData(){ - String extra = ""; - if (getAxis().getDeadZone() >= Math.abs(data)) - extra = " (DEADZONE)"; - analogState.setText(""+data+extra); - analogState.repaint(); - } -} - - - -class ControllerWindow extends JFrame { - Controller ca; - List axisList = new ArrayList(); - boolean disabled = false; - - public ControllerWindow(JFrame frame,Controller ca){ - super(ca.getName()); - this.setName(ca.getName()); - this.ca = ca; - Container c = this.getContentPane(); - c.setLayout(new BorderLayout()); - Component[] components = ca.getComponents(); - System.out.println("Component count = "+components.length); - if (components.length>0) { - int width = (int)Math.ceil(Math.sqrt(components.length)); - JPanel p = new JPanel(); - p.setLayout(new GridLayout(width,0)); - for(int j=0;j"); + + public DigitalAxisPanel(Component ax) { + super(ax); + add(digitalState,BorderLayout.CENTER); + } + + protected void renderData(){ + if (data == 0.0f){ + digitalState.setBackground(getBackground()); + digitalState.setText("OFF"); + } else if ( data == 1.0f) { + digitalState.setBackground(Color.green); + digitalState.setText("ON"); + }else { // shoudl never happen + digitalState.setBackground(Color.red); + digitalState.setText("ERR:"+data); + } + digitalState.repaint(); + } + } + + private static class DigitalHatPanel extends AxisPanel { + JLabel digitalState = new JLabel(""); + + public DigitalHatPanel(Component ax) { + super(ax); + add(digitalState,BorderLayout.CENTER); + } + + protected void renderData(){ + if (data == Component.POV.OFF){ + digitalState.setBackground(getBackground()); + digitalState.setText("OFF"); + } else if ( data == Component.POV.UP) { + digitalState.setBackground(Color.green); + digitalState.setText("UP"); + } else if ( data == Component.POV.UP_RIGHT) { + digitalState.setBackground(Color.green); + digitalState.setText("UP+RIGHT"); + } else if ( data == Component.POV.RIGHT) { + digitalState.setBackground(Color.green); + digitalState.setText("RIGHT"); + } else if ( data == Component.POV.DOWN_RIGHT) { + digitalState.setBackground(Color.green); + digitalState.setText("DOWN+RIGHT"); + } else if ( data == Component.POV.DOWN) { + digitalState.setBackground(Color.green); + digitalState.setText("DOWN"); + } else if ( data == Component.POV.DOWN_LEFT) { + digitalState.setBackground(Color.green); + digitalState.setText("DOWN+LEFT"); + } else if ( data == Component.POV.LEFT) { + digitalState.setBackground(Color.green); + digitalState.setText("LEFT"); + } else if ( data == Component.POV.UP_LEFT) { + digitalState.setBackground(Color.green); + digitalState.setText("UP+LEFT"); + }else { // shoudl never happen + digitalState.setBackground(Color.red); + digitalState.setText("ERR:"+data); + } + digitalState.repaint(); + } + } + private static class AnalogAxisPanel extends AxisPanel { + JLabel analogState = new JLabel(""); + + public AnalogAxisPanel(Component ax) { + super(ax); + add(analogState,BorderLayout.CENTER); + } + + protected void renderData(){ + String extra = ""; + if (getAxis().getDeadZone() >= Math.abs(data)) + extra = " (DEADZONE)"; + analogState.setText(""+data+extra); + analogState.repaint(); + } + } + + + + private static class ControllerWindow extends JFrame { + Controller ca; + List axisList = new ArrayList(); + boolean disabled = false; + + public ControllerWindow(JFrame frame,Controller ca){ + super(ca.getName()); + this.setName(ca.getName()); + this.ca = ca; + Container c = this.getContentPane(); + c.setLayout(new BorderLayout()); + Component[] components = ca.getComponents(); + System.out.println("Component count = "+components.length); + if (components.length>0) { + int width = (int)Math.ceil(Math.sqrt(components.length)); + JPanel p = new JPanel(); + p.setLayout(new GridLayout(width,0)); + for(int j=0;j - +