diff --git a/java/src/wiiusej/test/ClassicControllerGuiTest.java b/java/src/wiiusej/test/ClassicControllerGuiTest.java new file mode 100644 index 0000000..4e55b90 --- /dev/null +++ b/java/src/wiiusej/test/ClassicControllerGuiTest.java @@ -0,0 +1,179 @@ +/** + * This file is part of WiiuseJ. + * + * WiiuseJ is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * WiiuseJ is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with WiiuseJ. If not, see . + */ +package wiiusej.test; + +import wiiusej.WiiUseApiManager; +import wiiusej.Wiimote; +import wiiusej.utils.ClassicControllerButtonsEventPanel; +import wiiusej.wiiusejevents.physicalevents.ClassicControllerEvent; +import wiiusej.wiiusejevents.physicalevents.ExpansionEvent; +import wiiusej.wiiusejevents.physicalevents.IREvent; +import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent; +import wiiusej.wiiusejevents.physicalevents.WiimoteButtonsEvent; +import wiiusej.wiiusejevents.utils.WiimoteListener; +import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.DisconnectionEvent; +import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.NunchukInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.NunchukRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.StatusEvent; + +/** + * This frame is used to display events from a classic controller. + * + * @author guiguito + */ +public class ClassicControllerGuiTest extends javax.swing.JFrame implements WiimoteListener { + + private Wiimote wiimote; + private static int MAX_SHOULDER = 100; + + /** Creates new form ClassicControllerGuiTest */ + public ClassicControllerGuiTest(Wiimote wiimote) { + initComponents(); + this.wiimote = wiimote; + registerListeners(); + leftShoulderBar.setMaximum(MAX_SHOULDER); + rightShoulderBar.setMaximum(MAX_SHOULDER); + } + + private void registerListeners() { + wiimote.addWiiMoteEventListeners(this); + wiimote.addWiiMoteEventListeners((ClassicControllerButtonsEventPanel) classicControllerPanel); + } + + public void unRegisterListeners() { + wiimote.removeWiiMoteEventListeners(this); + wiimote.removeWiiMoteEventListeners((ClassicControllerButtonsEventPanel) classicControllerPanel); + } + + /** This method is called from within the constructor to + * initialize the form. + * WARNING: Do NOT modify this code. The content of this method is + * always regenerated by the Form Editor. + */ + // //GEN-BEGIN:initComponents + private void initComponents() { + + shouldersPanel = new javax.swing.JPanel(); + leftShoulderBar = new javax.swing.JProgressBar(); + rightShoulderBar = new javax.swing.JProgressBar(); + classicControllerPanel = new wiiusej.utils.ClassicControllerButtonsEventPanel(); + + setTitle("WiiuseJ Classic Controller Test GUI"); + setResizable(false); + getContentPane().setLayout(new javax.swing.BoxLayout(getContentPane(), javax.swing.BoxLayout.Y_AXIS)); + + shouldersPanel.setMaximumSize(new java.awt.Dimension(350, 16)); + shouldersPanel.setMinimumSize(new java.awt.Dimension(350, 16)); + shouldersPanel.setPreferredSize(new java.awt.Dimension(350, 16)); + shouldersPanel.setLayout(new javax.swing.BoxLayout(shouldersPanel, javax.swing.BoxLayout.LINE_AXIS)); + shouldersPanel.add(leftShoulderBar); + shouldersPanel.add(rightShoulderBar); + + getContentPane().add(shouldersPanel); + + classicControllerPanel.setMaximumSize(new java.awt.Dimension(350, 182)); + classicControllerPanel.setMinimumSize(new java.awt.Dimension(350, 182)); + + javax.swing.GroupLayout classicControllerPanelLayout = new javax.swing.GroupLayout(classicControllerPanel); + classicControllerPanel.setLayout(classicControllerPanelLayout); + classicControllerPanelLayout.setHorizontalGroup( + classicControllerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 350, Short.MAX_VALUE) + ); + classicControllerPanelLayout.setVerticalGroup( + classicControllerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 182, Short.MAX_VALUE) + ); + + getContentPane().add(classicControllerPanel); + + pack(); + }// //GEN-END:initComponents + public void onButtonsEvent(WiimoteButtonsEvent arg0) { + // nothing to do + } + + public void onIrEvent(IREvent arg0) { + // nothing to do + } + + public void onMotionSensingEvent(MotionSensingEvent arg0) { + // nothing to do + } + + public void onExpansionEvent(ExpansionEvent arg0) { + if (arg0 instanceof ClassicControllerEvent) { + ClassicControllerEvent classicController = (ClassicControllerEvent) arg0; + float leftShoulder = classicController.getLeftShoulder(); + float rightShoulder = classicController.getRightShoulder(); + leftShoulderBar.setValue(Math.round(leftShoulder * MAX_SHOULDER)); + rightShoulderBar.setValue(Math.round(rightShoulder * MAX_SHOULDER)); + } + } + + public void onStatusEvent(StatusEvent arg0) { + // nothing to do + } + + public void onDisconnectionEvent(DisconnectionEvent arg0) { + // nothing to do + } + + public void onNunchukInsertedEvent(NunchukInsertedEvent arg0) { + // nothing to do + } + + public void onNunchukRemovedEvent(NunchukRemovedEvent arg0) { + // nothing to do + } + + public void onGuitarHeroInsertedEvent(GuitarHeroInsertedEvent arg0) { + // nothing to do + } + + public void onGuitarHeroRemovedEvent(GuitarHeroRemovedEvent arg0) { + // nothing to do + } + + public void onClassicControllerInsertedEvent(ClassicControllerInsertedEvent arg0) { + // nothing to do + } + + public void onClassicControllerRemovedEvent(ClassicControllerRemovedEvent arg0) { + // nothing to do + } + + public static void main(String[] args) { + Wiimote[] wiimotes = WiiUseApiManager.getWiimotes(1, true); + ClassicControllerGuiTest gui = null; + if (wiimotes.length > 0) { + gui = new ClassicControllerGuiTest(wiimotes[0]); + } + gui.setDefaultCloseOperation(WiiuseJGuiTest.EXIT_ON_CLOSE); + gui.setVisible(true); + } + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JPanel classicControllerPanel; + private javax.swing.JProgressBar leftShoulderBar; + private javax.swing.JProgressBar rightShoulderBar; + private javax.swing.JPanel shouldersPanel; + // End of variables declaration//GEN-END:variables +} diff --git a/java/src/wiiusej/test/CloseGuiTestCleanly.java b/java/src/wiiusej/test/CloseGuiTestCleanly.java new file mode 100644 index 0000000..584f2d9 --- /dev/null +++ b/java/src/wiiusej/test/CloseGuiTestCleanly.java @@ -0,0 +1,58 @@ +/** + * This file is part of WiiuseJ. + * + * WiiuseJ is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * WiiuseJ is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with WiiuseJ. If not, see . + */ +package wiiusej.test; + +import java.awt.event.WindowEvent; +import java.awt.event.WindowListener; +import wiiusej.WiiUseApiManager; + +/** + * This class is used to close wiiusej cleanly. + * + * @author guiguito + */ +public class CloseGuiTestCleanly implements WindowListener { + + public void windowOpened(WindowEvent e) { + // nothing + } + + public void windowClosing(WindowEvent e) { + WiiUseApiManager.definitiveShutdown(); + } + + public void windowClosed(WindowEvent e) { + // nothing + } + + public void windowIconified(WindowEvent e) { + // nothing + } + + public void windowDeiconified(WindowEvent e) { + // nothing + } + + public void windowActivated(WindowEvent e) { + // nothing + } + + public void windowDeactivated(WindowEvent e) { + // nothing + } + +} diff --git a/java/src/wiiusej/test/GuitarHero3GuiTest.java b/java/src/wiiusej/test/GuitarHero3GuiTest.java new file mode 100644 index 0000000..b0f1dd4 --- /dev/null +++ b/java/src/wiiusej/test/GuitarHero3GuiTest.java @@ -0,0 +1,168 @@ +/* + * GuitarHeroGUITest.java + * + * Created on 12 juin 2008, 23:10 + */ +package wiiusej.test; + +import wiiusej.Wiimote; +import wiiusej.wiiusejevents.physicalevents.ExpansionEvent; +import wiiusej.wiiusejevents.physicalevents.GuitarHeroEvent; +import wiiusej.wiiusejevents.physicalevents.IREvent; +import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent; +import wiiusej.wiiusejevents.physicalevents.WiimoteButtonsEvent; +import wiiusej.wiiusejevents.utils.WiimoteListener; +import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.DisconnectionEvent; +import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.NunchukInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.NunchukRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.StatusEvent; + +/** + * This frame is used to display events from a Guitar Hero 3. + * @author guiguito + */ +public class GuitarHero3GuiTest extends javax.swing.JFrame implements WiimoteListener { + + private Wiimote wiimote; + private static int MAX_WHAMMY_BAR = 100; + + /** Creates new form GuitarHeroGUITest */ + public GuitarHero3GuiTest(Wiimote wiimote) { + initComponents(); + this.wiimote = wiimote; + whammyProgressBar.setMaximum(MAX_WHAMMY_BAR); + registerListeners(); + } + + private void registerListeners() { + wiimote.addWiiMoteEventListeners(this); + //register panel buttons + wiimote.addWiiMoteEventListeners(guitarHero3ButtonsEventPanel); + //register joystick panel + wiimote.addWiiMoteEventListeners(guitarHero3JoystickPanel); + } + + public void unRegisterListeners() { + wiimote.removeWiiMoteEventListeners(this); + wiimote.removeWiiMoteEventListeners(guitarHero3ButtonsEventPanel); + wiimote.removeWiiMoteEventListeners(guitarHero3JoystickPanel); + } + + /** This method is called from within the constructor to + * initialize the form. + * WARNING: Do NOT modify this code. The content of this method is + * always regenerated by the Form Editor. + */ + // //GEN-BEGIN:initComponents + private void initComponents() { + + buttonsEventPanel = new javax.swing.JPanel(); + guitarHero3ButtonsEventPanel = new wiiusej.utils.GuitarHero3ButtonsEventPanel(); + bottomPanel = new javax.swing.JPanel(); + guitarHero3JoystickPanel = new wiiusej.utils.GuitarHeroJoystickEventPanel(); + whammyProgressBar = new javax.swing.JProgressBar(); + + setTitle("WiiuseJ Guitar Hero 3 Test GUI"); + getContentPane().setLayout(new javax.swing.BoxLayout(getContentPane(), javax.swing.BoxLayout.Y_AXIS)); + + buttonsEventPanel.setBackground(new java.awt.Color(0, 0, 0)); + + javax.swing.GroupLayout buttonsEventPanelLayout = new javax.swing.GroupLayout(buttonsEventPanel); + buttonsEventPanel.setLayout(buttonsEventPanelLayout); + buttonsEventPanelLayout.setHorizontalGroup( + buttonsEventPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 526, Short.MAX_VALUE) + .addGroup(buttonsEventPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(buttonsEventPanelLayout.createSequentialGroup() + .addGap(0, 0, Short.MAX_VALUE) + .addComponent(guitarHero3ButtonsEventPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(0, 0, Short.MAX_VALUE))) + ); + buttonsEventPanelLayout.setVerticalGroup( + buttonsEventPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 96, Short.MAX_VALUE) + .addGroup(buttonsEventPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(buttonsEventPanelLayout.createSequentialGroup() + .addGap(0, 0, Short.MAX_VALUE) + .addComponent(guitarHero3ButtonsEventPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(0, 0, Short.MAX_VALUE))) + ); + + getContentPane().add(buttonsEventPanel); + + bottomPanel.setBackground(new java.awt.Color(0, 0, 0)); + bottomPanel.setLayout(new javax.swing.BoxLayout(bottomPanel, javax.swing.BoxLayout.X_AXIS)); + bottomPanel.add(guitarHero3JoystickPanel); + + whammyProgressBar.setBackground(new java.awt.Color(255, 255, 255)); + whammyProgressBar.setForeground(new java.awt.Color(255, 0, 255)); + bottomPanel.add(whammyProgressBar); + + getContentPane().add(bottomPanel); + + pack(); + }// //GEN-END:initComponents + public void onButtonsEvent(WiimoteButtonsEvent arg0) { + // nothing to do + } + + public void onIrEvent(IREvent arg0) { + // nothing to do + } + + public void onMotionSensingEvent(MotionSensingEvent arg0) { + // nothing to do + } + + public void onExpansionEvent(ExpansionEvent arg0) { + if (arg0 instanceof GuitarHeroEvent) { + GuitarHeroEvent guitar = (GuitarHeroEvent) arg0; + //move progress bar for whammy bar + whammyProgressBar.setValue(Math.round(MAX_WHAMMY_BAR*guitar.getWhammyBar())); + } + + } + + public void onStatusEvent(StatusEvent arg0) { + // nothing to do + } + + public void onDisconnectionEvent(DisconnectionEvent arg0) { + // nothing to do + } + + public void onNunchukInsertedEvent(NunchukInsertedEvent arg0) { + // nothing to do + } + + public void onNunchukRemovedEvent(NunchukRemovedEvent arg0) { + // nothing to do + } + + public void onGuitarHeroInsertedEvent(GuitarHeroInsertedEvent arg0) { + // nothing to do + } + + public void onGuitarHeroRemovedEvent(GuitarHeroRemovedEvent arg0) { + // nothing to do + } + + public void onClassicControllerInsertedEvent(ClassicControllerInsertedEvent arg0) { + // nothing to do + } + + public void onClassicControllerRemovedEvent(ClassicControllerRemovedEvent arg0) { + // nothing to do + } + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JPanel bottomPanel; + private javax.swing.JPanel buttonsEventPanel; + private wiiusej.utils.GuitarHero3ButtonsEventPanel guitarHero3ButtonsEventPanel; + private wiiusej.utils.GuitarHeroJoystickEventPanel guitarHero3JoystickPanel; + private javax.swing.JProgressBar whammyProgressBar; + // End of variables declaration//GEN-END:variables +} diff --git a/java/src/wiiusej/test/Main.java b/java/src/wiiusej/test/Main.java new file mode 100644 index 0000000..67ef279 --- /dev/null +++ b/java/src/wiiusej/test/Main.java @@ -0,0 +1,45 @@ +/** + * This file is part of WiiuseJ. + * + * WiiuseJ is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * WiiuseJ is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with WiiuseJ. If not, see . + */ +package wiiusej.test; + +import wiiusej.WiiUseApiManager; +import wiiusej.Wiimote; + +/** + * Main Class to launch WiiuseJ GUI Test. + * + * @author guiguito + */ +public class Main { + + /** + * @param args + * the command line arguments + */ + public static void main(String[] args) { + Wiimote[] wiimotes = WiiUseApiManager.getWiimotes(1, true); + WiiuseJGuiTest gui = null; + if (wiimotes.length > 0) { + gui = new WiiuseJGuiTest(wiimotes[0]); + } else { + gui = new WiiuseJGuiTest(); + } + gui.setDefaultCloseOperation(WiiuseJGuiTest.EXIT_ON_CLOSE); + gui.setVisible(true); + } + +} diff --git a/java/src/wiiusej/test/NunchukGuiTest.java b/java/src/wiiusej/test/NunchukGuiTest.java new file mode 100644 index 0000000..d7f284f --- /dev/null +++ b/java/src/wiiusej/test/NunchukGuiTest.java @@ -0,0 +1,450 @@ +/** + * This file is part of WiiuseJ. + * + * WiiuseJ is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * WiiuseJ is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with WiiuseJ. If not, see . + */ +package wiiusej.test; + +import wiiusej.Wiimote; +import wiiusej.utils.AccelerationExpansionEventPanel; +import wiiusej.utils.AccelerationPanel; +import wiiusej.utils.GForceExpansionEventPanel; +import wiiusej.utils.GForcePanel; +import wiiusej.utils.NunchukJoystickEventPanel; +import wiiusej.utils.OrientationExpansionEventPanel; +import wiiusej.utils.OrientationPanel; +import wiiusej.wiiusejevents.physicalevents.ExpansionEvent; +import wiiusej.wiiusejevents.physicalevents.IREvent; +import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent; +import wiiusej.wiiusejevents.physicalevents.NunchukButtonsEvent; +import wiiusej.wiiusejevents.physicalevents.NunchukEvent; +import wiiusej.wiiusejevents.physicalevents.WiimoteButtonsEvent; +import wiiusej.wiiusejevents.utils.WiimoteListener; +import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.DisconnectionEvent; +import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.NunchukInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.NunchukRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.StatusEvent; + +/** + * This frame is used to display events from a nunchuk. + * + * @author guiguito + */ +public class NunchukGuiTest extends javax.swing.JFrame implements + WiimoteListener { + + private Wiimote wiimote; + private boolean isThresholdsRequested = true; + + /** Creates new form NunchukGuiTest */ + public NunchukGuiTest(Wiimote wiimote) { + initComponents(); + this.wiimote = wiimote; + registerListeners(); + } + + private void registerListeners() { + wiimote.addWiiMoteEventListeners(this); + wiimote.addWiiMoteEventListeners((OrientationPanel) orientationPanel); + wiimote.addWiiMoteEventListeners((GForcePanel) gForcePanel); + wiimote + .addWiiMoteEventListeners((AccelerationPanel) rawAccelerationPanel); + wiimote + .addWiiMoteEventListeners((NunchukJoystickEventPanel) joystickEventsPanel); + } + + public void unRegisterListeners() { + wiimote + .removeWiiMoteEventListeners((OrientationPanel) orientationPanel); + wiimote.removeWiiMoteEventListeners((GForcePanel) gForcePanel); + wiimote + .removeWiiMoteEventListeners((AccelerationPanel) rawAccelerationPanel); + wiimote + .removeWiiMoteEventListeners((NunchukJoystickEventPanel) joystickEventsPanel); + wiimote.removeWiiMoteEventListeners(this); + } + + public void requestThresholdsUpdate() { + isThresholdsRequested = true; + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + // //GEN-BEGIN:initComponents + private void initComponents() { + + topPanels = new javax.swing.JPanel(); + joystickEventsPanel = new NunchukJoystickEventPanel(); + motionSensingEventsPanel = new javax.swing.JPanel(); + motionSensingEventsTabbedPanels = new javax.swing.JTabbedPane(); + rawAccelerationPanel = new AccelerationExpansionEventPanel(); + orientationPanel = new OrientationExpansionEventPanel(); + gForcePanel = new GForceExpansionEventPanel(); + setNunchukValuesPanel = new javax.swing.JPanel(); + nunchukButtonsEventPanel = new javax.swing.JPanel(); + cButton = new javax.swing.JButton(); + zButton = new javax.swing.JButton(); + nunchukOrientationPanel = new javax.swing.JPanel(); + nunchukOrientationTextField = new javax.swing.JTextField(); + nunchukOrientationButton = new javax.swing.JButton(); + nunchukAccelerationPanel = new javax.swing.JPanel(); + nunchukAccelerationTextField = new javax.swing.JTextField(); + nunchukAccelerationButton = new javax.swing.JButton(); + messagePanel = new javax.swing.JPanel(); + messageText = new javax.swing.JLabel(); + + setTitle("WiiuseJ Nunchuk Test GUI"); + setMinimumSize(new java.awt.Dimension(400, 400)); + getContentPane().setLayout( + new javax.swing.BoxLayout(getContentPane(), + javax.swing.BoxLayout.Y_AXIS)); + + topPanels.setMinimumSize(new java.awt.Dimension(400, 200)); + topPanels.setPreferredSize(new java.awt.Dimension(400, 200)); + topPanels.setLayout(new javax.swing.BoxLayout(topPanels, + javax.swing.BoxLayout.LINE_AXIS)); + + joystickEventsPanel.setBackground(new java.awt.Color(0, 0, 0)); + joystickEventsPanel.setBorder(javax.swing.BorderFactory + .createTitledBorder(new javax.swing.border.LineBorder( + new java.awt.Color(51, 153, 0), 2, true), + "Joystick View", + javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, + javax.swing.border.TitledBorder.DEFAULT_POSITION, + new java.awt.Font("Tahoma", 0, 11), new java.awt.Color( + 204, 102, 0))); + joystickEventsPanel.setToolTipText("JoystickEvent"); + joystickEventsPanel.setMinimumSize(new java.awt.Dimension(200, 200)); + + javax.swing.GroupLayout joystickEventsPanelLayout = new javax.swing.GroupLayout( + joystickEventsPanel); + joystickEventsPanel.setLayout(joystickEventsPanelLayout); + joystickEventsPanelLayout.setHorizontalGroup(joystickEventsPanelLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 601, Short.MAX_VALUE)); + joystickEventsPanelLayout.setVerticalGroup(joystickEventsPanelLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 174, Short.MAX_VALUE)); + + topPanels.add(joystickEventsPanel); + joystickEventsPanel.getAccessibleContext() + .setAccessibleName("Joystick"); + + motionSensingEventsPanel + .setMinimumSize(new java.awt.Dimension(200, 200)); + + rawAccelerationPanel.setToolTipText("Nunchuk MotionSensingEvent"); + + javax.swing.GroupLayout rawAccelerationPanelLayout = new javax.swing.GroupLayout( + rawAccelerationPanel); + rawAccelerationPanel.setLayout(rawAccelerationPanelLayout); + rawAccelerationPanelLayout + .setHorizontalGroup(rawAccelerationPanelLayout + .createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 597, Short.MAX_VALUE)); + rawAccelerationPanelLayout.setVerticalGroup(rawAccelerationPanelLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 175, Short.MAX_VALUE)); + + motionSensingEventsTabbedPanels.addTab("RawAcceleration", + rawAccelerationPanel); + + javax.swing.GroupLayout orientationPanelLayout = new javax.swing.GroupLayout( + orientationPanel); + orientationPanel.setLayout(orientationPanelLayout); + orientationPanelLayout.setHorizontalGroup(orientationPanelLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 597, Short.MAX_VALUE)); + orientationPanelLayout.setVerticalGroup(orientationPanelLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 175, Short.MAX_VALUE)); + + motionSensingEventsTabbedPanels.addTab("Orientation", orientationPanel); + + javax.swing.GroupLayout gForcePanelLayout = new javax.swing.GroupLayout( + gForcePanel); + gForcePanel.setLayout(gForcePanelLayout); + gForcePanelLayout.setHorizontalGroup(gForcePanelLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 597, Short.MAX_VALUE)); + gForcePanelLayout.setVerticalGroup(gForcePanelLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 175, Short.MAX_VALUE)); + + motionSensingEventsTabbedPanels.addTab("GForce", gForcePanel); + + javax.swing.GroupLayout motionSensingEventsPanelLayout = new javax.swing.GroupLayout( + motionSensingEventsPanel); + motionSensingEventsPanel.setLayout(motionSensingEventsPanelLayout); + motionSensingEventsPanelLayout + .setHorizontalGroup(motionSensingEventsPanelLayout + .createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(motionSensingEventsTabbedPanels, + javax.swing.GroupLayout.DEFAULT_SIZE, 602, + Short.MAX_VALUE)); + motionSensingEventsPanelLayout + .setVerticalGroup(motionSensingEventsPanelLayout + .createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(motionSensingEventsTabbedPanels, + javax.swing.GroupLayout.DEFAULT_SIZE, 200, + Short.MAX_VALUE)); + + topPanels.add(motionSensingEventsPanel); + + getContentPane().add(topPanels); + + setNunchukValuesPanel.setMinimumSize(new java.awt.Dimension(400, 200)); + setNunchukValuesPanel + .setPreferredSize(new java.awt.Dimension(400, 200)); + setNunchukValuesPanel.setLayout(new javax.swing.BoxLayout( + setNunchukValuesPanel, javax.swing.BoxLayout.Y_AXIS)); + + nunchukButtonsEventPanel.setToolTipText("Nunchuk ButtonsEvent"); + nunchukButtonsEventPanel + .setMinimumSize(new java.awt.Dimension(100, 100)); + nunchukButtonsEventPanel.setPreferredSize(new java.awt.Dimension(100, + 100)); + nunchukButtonsEventPanel.setLayout(new javax.swing.BoxLayout( + nunchukButtonsEventPanel, javax.swing.BoxLayout.LINE_AXIS)); + + cButton.setText("C"); + cButton.setMaximumSize(new java.awt.Dimension(50, 50)); + cButton.setMinimumSize(new java.awt.Dimension(50, 50)); + cButton.setPreferredSize(new java.awt.Dimension(50, 50)); + nunchukButtonsEventPanel.add(cButton); + + zButton.setText("Z"); + zButton.setMaximumSize(new java.awt.Dimension(50, 50)); + zButton.setMinimumSize(new java.awt.Dimension(50, 50)); + zButton.setPreferredSize(new java.awt.Dimension(50, 50)); + nunchukButtonsEventPanel.add(zButton); + + setNunchukValuesPanel.add(nunchukButtonsEventPanel); + + nunchukOrientationTextField.setPreferredSize(new java.awt.Dimension(60, + 20)); + nunchukOrientationPanel.add(nunchukOrientationTextField); + + nunchukOrientationButton.setText("Set Orientation Threshold"); + nunchukOrientationButton + .addMouseListener(new java.awt.event.MouseAdapter() { + public void mousePressed(java.awt.event.MouseEvent evt) { + nunchukOrientationButtonMousePressed(evt); + } + }); + nunchukOrientationPanel.add(nunchukOrientationButton); + + setNunchukValuesPanel.add(nunchukOrientationPanel); + + nunchukAccelerationTextField.setPreferredSize(new java.awt.Dimension( + 60, 20)); + nunchukAccelerationPanel.add(nunchukAccelerationTextField); + + nunchukAccelerationButton.setText("Set Acceleration Threshold"); + nunchukAccelerationButton + .addMouseListener(new java.awt.event.MouseAdapter() { + public void mousePressed(java.awt.event.MouseEvent evt) { + nunchukAccelerationButtonMousePressed(evt); + } + }); + nunchukAccelerationPanel.add(nunchukAccelerationButton); + + setNunchukValuesPanel.add(nunchukAccelerationPanel); + + messageText.setText("Message:"); + + javax.swing.GroupLayout messagePanelLayout = new javax.swing.GroupLayout( + messagePanel); + messagePanel.setLayout(messagePanelLayout); + messagePanelLayout + .setHorizontalGroup(messagePanelLayout + .createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 1216, Short.MAX_VALUE) + .addGroup( + messagePanelLayout + .createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING) + .addGroup( + messagePanelLayout + .createSequentialGroup() + .addGap(0, 0, + Short.MAX_VALUE) + .addComponent( + messageText) + .addGap(0, 0, + Short.MAX_VALUE)))); + messagePanelLayout + .setVerticalGroup(messagePanelLayout + .createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 34, Short.MAX_VALUE) + .addGroup( + messagePanelLayout + .createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING) + .addGroup( + messagePanelLayout + .createSequentialGroup() + .addGap(0, 0, + Short.MAX_VALUE) + .addComponent( + messageText) + .addGap(0, 0, + Short.MAX_VALUE)))); + + setNunchukValuesPanel.add(messagePanel); + + getContentPane().add(setNunchukValuesPanel); + + pack(); + }// //GEN-END:initComponents + + private void nunchukOrientationButtonMousePressed( + java.awt.event.MouseEvent evt) {// GEN-FIRST:event_nunchukOrientationButtonMousePressed + try { + float nb = Float.parseFloat(nunchukOrientationTextField.getText()); + wiimote.setNunchukOrientationThreshold(nb); + messageText.setText("Nunchuk orientation threshold set to " + nb); + } catch (NumberFormatException e) { + messageText + .setText("Number is not an integer, nunchuk orientation threshold not set !"); + } + }// GEN-LAST:event_nunchukOrientationButtonMousePressed + + private void nunchukAccelerationButtonMousePressed( + java.awt.event.MouseEvent evt) {// GEN-FIRST:event_nunchukAccelerationButtonMousePressed + try { + int nb = Integer.parseInt(nunchukAccelerationTextField.getText()); + wiimote.setNunchukAccelerationThreshold(nb); + messageText.setText("Nunchuk acceleration threshold set to " + nb); + } catch (NumberFormatException e) { + messageText + .setText("Number is not an integer, nunchuk acceleration threshold not set !"); + } + }// GEN-LAST:event_nunchukAccelerationButtonMousePressed + + public void onButtonsEvent(WiimoteButtonsEvent arg0) { + // nothing to do + } + + public void onIrEvent(IREvent arg0) { + // nothing to do + } + + public void onMotionSensingEvent(MotionSensingEvent arg0) { + // nothing to do + } + + public void onExpansionEvent(ExpansionEvent arg0) { + if (arg0 instanceof NunchukEvent) { + NunchukEvent nunchuk = (NunchukEvent) arg0; + NunchukButtonsEvent buttons = nunchuk.getButtonsEvent(); + + //C button + if (buttons.isButtonCJustPressed()) { + cButton.setEnabled(false); + }else if (buttons.isButtonCJustReleased()) { + cButton.setEnabled(true); + } + + //Z button + if(buttons.isButtonZJustPressed()) { + zButton.setEnabled(false); + }else if (buttons.isButtonZJustReleased()) { + zButton.setEnabled(true); + } + + + if (isThresholdsRequested) { + MotionSensingEvent evt = nunchuk.getNunchukMotionSensingEvent(); + nunchukAccelerationTextField.setText(evt + .getAccelerationThreshold() + + ""); + nunchukOrientationTextField.setText(evt + .getOrientationThreshold() + + ""); + isThresholdsRequested = false; + } + } + } + + public void onStatusEvent(StatusEvent arg0) { + // nothing to do + } + + public void onDisconnectionEvent(DisconnectionEvent arg0) { + // nothing + } + + public void onNunchukInsertedEvent(NunchukInsertedEvent arg0) { + // nothing + } + + public void onNunchukRemovedEvent(NunchukRemovedEvent arg0) { + // nothing + } + + public void onGuitarHeroInsertedEvent(GuitarHeroInsertedEvent arg0) { + // nothing + } + + public void onGuitarHeroRemovedEvent(GuitarHeroRemovedEvent arg0) { + // nothing + } + + public void onClassicControllerInsertedEvent( + ClassicControllerInsertedEvent arg0) { + // nothing + } + + public void onClassicControllerRemovedEvent( + ClassicControllerRemovedEvent arg0) { + // nothing + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton cButton; + private javax.swing.JPanel gForcePanel; + private javax.swing.JPanel joystickEventsPanel; + private javax.swing.JPanel messagePanel; + private javax.swing.JLabel messageText; + private javax.swing.JPanel motionSensingEventsPanel; + private javax.swing.JTabbedPane motionSensingEventsTabbedPanels; + private javax.swing.JButton nunchukAccelerationButton; + private javax.swing.JPanel nunchukAccelerationPanel; + private javax.swing.JTextField nunchukAccelerationTextField; + private javax.swing.JPanel nunchukButtonsEventPanel; + private javax.swing.JButton nunchukOrientationButton; + private javax.swing.JPanel nunchukOrientationPanel; + private javax.swing.JTextField nunchukOrientationTextField; + private javax.swing.JPanel orientationPanel; + private javax.swing.JPanel rawAccelerationPanel; + private javax.swing.JPanel setNunchukValuesPanel; + private javax.swing.JPanel topPanels; + private javax.swing.JButton zButton; + // End of variables declaration//GEN-END:variables +} diff --git a/java/src/wiiusej/test/Tests.java b/java/src/wiiusej/test/Tests.java new file mode 100644 index 0000000..fcd4ef0 --- /dev/null +++ b/java/src/wiiusej/test/Tests.java @@ -0,0 +1,389 @@ +/** + * This file is part of WiiuseJ. + * + * WiiuseJ is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * WiiuseJ is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with WiiuseJ. If not, see . + */ +package wiiusej.test; + +import java.awt.AWTException; +import java.awt.Robot; +import java.awt.event.InputEvent; + +import wiiusej.WiiUseApiManager; +import wiiusej.Wiimote; +import wiiusej.values.IRSource; +import wiiusej.wiiusejevents.physicalevents.ExpansionEvent; +import wiiusej.wiiusejevents.physicalevents.IREvent; +import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent; +import wiiusej.wiiusejevents.physicalevents.WiimoteButtonsEvent; +import wiiusej.wiiusejevents.utils.WiimoteListener; +import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.DisconnectionEvent; +import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.NunchukInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.NunchukRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.StatusEvent; + +/** + * This class used to test WiiuseJ in text mode. + * + * @author guiguito + */ +public class Tests implements WiimoteListener { + + Robot robot; + + private static int DISPLAY_EACH_VALUE = 1; + private static int DUMP = 2; + private static int MOVE_MOUSE = 3; + private static int TEST_LEDS = 5; + + private Wiimote wiimote; + + int dump = DISPLAY_EACH_VALUE; + + public Tests(Wiimote wim) { + wiimote = wim; + wiimote.addWiiMoteEventListeners(this); + try { + robot = new Robot(); + } catch (AWTException e) { + e.printStackTrace(); + } + } + + public void onButtonsEvent(WiimoteButtonsEvent e) { + if (dump == DISPLAY_EACH_VALUE) { + // System.out.println("*********** WIIMOTE ID : "+ + // e.getWiimoteId() + " **************"); + /* button ONE */ + if (e.isButtonOneJustPressed()) { + System.out.println("button one pressed"); + } + if (e.isButtonOneHeld()) { + System.out.println("button one held"); + } + if (e.isButtonOneJustReleased()) { + System.out.println("button one released"); + } + + /* button TWO */ + if (e.isButtonTwoJustPressed()) { + System.out.println("button two pressed"); + } + if (e.isButtonTwoHeld()) { + System.out.println("button two held"); + } + if (e.isButtonTwoJustReleased()) { + System.out.println("button two released"); + } + + /* button A */ + if (e.isButtonAJustPressed()) { + System.out.println("button A pressed"); + } + if (e.isButtonAHeld()) { + System.out.println("button A held"); + } + if (e.isButtonAJustReleased()) { + System.out.println("button A released"); + } + + /* button B */ + if (e.isButtonBJustPressed()) { + System.out.println("button B pressed"); + } + if (e.isButtonBHeld()) { + System.out.println("button B held"); + } + if (e.isButtonBJustReleased()) { + System.out.println("button B released"); + } + + /* button LEFT */ + if (e.isButtonLeftJustPressed()) { + System.out.println("button Left pressed"); + } + if (e.isButtonLeftHeld()) { + System.out.println("button Left held"); + } + if (e.isButtonLeftJustReleased()) { + System.out.println("button Left released"); + } + + /* button RIGHT */ + if (e.isButtonRightJustPressed()) { + System.out.println("button Right pressed"); + } + if (e.isButtonRightHeld()) { + System.out.println("button Right held"); + } + if (e.isButtonRightJustReleased()) { + System.out.println("button Right released"); + } + + /* button UP */ + if (e.isButtonUpJustPressed()) { + System.out.println("button UP pressed"); + } + if (e.isButtonUpHeld()) { + System.out.println("button UP held"); + } + if (e.isButtonUpJustReleased()) { + System.out.println("button UP released"); + } + + /* button DOWN */ + if (e.isButtonDownJustPressed()) { + System.out.println("button DOWN pressed"); + } + if (e.isButtonDownHeld()) { + System.out.println("button DOWN held"); + } + if (e.isButtonDownJustReleased()) { + System.out.println("button DOWN released"); + } + + /* button MINUS */ + if (e.isButtonMinusJustPressed()) { + System.out.println("button MINUS pressed"); + } + if (e.isButtonMinusHeld()) { + System.out.println("button MINUS held"); + } + if (e.isButtonMinusJustReleased()) { + System.out.println("button MINUS released"); + } + + /* button PLUS */ + if (e.isButtonPlusJustPressed()) { + System.out.println("button PLUS pressed"); + } + if (e.isButtonPlusHeld()) { + System.out.println("button PLUS held"); + } + if (e.isButtonPlusJustReleased()) { + System.out.println("button PLUS released"); + } + + /* button HOME */ + if (e.isButtonHomeJustPressed()) { + System.out.println("button HOME pressed"); + } + if (e.isButtonHomeHeld()) { + System.out.println("button HOME held"); + } + if (e.isButtonHomeJustReleased()) { + System.out.println("button HOME released"); + } + + /* get status */ + if (e.isButtonUpJustPressed()) { + wiimote.getStatus(); + } + + /* Activate rumble */ + if (e.isButtonOneJustPressed()) { + System.out.println("Rumble Activated"); + wiimote.activateRumble(); + } + if (e.isButtonTwoJustPressed()) { + System.out.println("Rumble Deactivated"); + wiimote.deactivateRumble(); + } + + /* Activate IR Tracking */ + if (e.isButtonAJustPressed()) { + System.out.println("IR Activated"); + wiimote.activateIRTRacking(); + } + if (e.isButtonBJustPressed()) { + System.out.println("IR Deactivated"); + wiimote.deactivateIRTRacking(); + } + + /* Activate Motion sensing */ + if (e.isButtonPlusJustPressed()) { + System.out.println("Motion sensing Activated"); + wiimote.activateMotionSensing(); + } + if (e.isButtonMinusJustPressed()) { + System.out.println("Motion sensing Deactivated"); + wiimote.deactivateMotionSensing(); + } + + /* leave test */ + if (e.isButtonHomeJustPressed()) { + System.out.println("LEAVING TEST"); + wiimote.disconnect(); + WiiUseApiManager.definitiveShutdown(); + } + + } else if (dump == DUMP) { + System.out.println(e); + /* Activate all */ + if (e.isButtonAJustPressed()) { + System.out.println("IR, rumble and motion sensing Activated"); + wiimote.activateIRTRacking(); + wiimote.activateMotionSensing(); + wiimote.activateRumble(); + } + if (e.isButtonBJustPressed()) { + System.out.println("IR, rumble and motion sensing Deactivated"); + wiimote.deactivateIRTRacking(); + wiimote.deactivateMotionSensing(); + wiimote.deactivateRumble(); + } + + /* leave test */ + if (e.isButtonHomeJustPressed()) { + System.out.println("LEAVING TEST"); + wiimote.disconnect(); + } + } else if (dump == MOVE_MOUSE) { + /* Activate IR Tracking */ + if (e.isButtonOneJustPressed()) { + System.out.println("IR Activated"); + wiimote.activateIRTRacking(); + } + if (e.isButtonTwoJustPressed()) { + System.out.println("IR Deactivated"); + wiimote.deactivateIRTRacking(); + } + + /* button A */ + if (e.isButtonAJustPressed()) { + robot.mousePress(InputEvent.BUTTON1_MASK); + } + if (e.isButtonAJustReleased()) { + robot.mouseRelease(InputEvent.BUTTON1_MASK); + } + + /* button B */ + if (e.isButtonBJustPressed()) { + robot.mousePress(InputEvent.BUTTON2_MASK); + } + if (e.isButtonBJustReleased()) { + robot.mouseRelease(InputEvent.BUTTON2_MASK); + } + + /* leave test */ + if (e.isButtonHomeJustPressed()) { + System.out.println("LEAVING TEST"); + wiimote.disconnect(); + } + } else if (dump == TEST_LEDS) { + wiimote.activateMotionSensing(); + if (e.isButtonUpJustPressed()) { + wiimote.setLeds(true, false, false, false); + } + if (e.isButtonDownJustPressed()) { + wiimote.setLeds(false, true, false, false); + } + if (e.isButtonLeftJustPressed()) { + wiimote.setLeds(false, false, true, false); + } + if (e.isButtonRightJustPressed()) { + wiimote.setLeds(false, false, false, true); + } + + /* leave test */ + if (e.isButtonHomeJustPressed()) { + System.out.println("LEAVING TEST"); + wiimote.disconnect(); + } + } + + } + + public void onIrEvent(IREvent e) { + if (dump == MOVE_MOUSE) { + IRSource[] list = e.getIRPoints(); + if (list.length > 0) { + int x1 = (int) list[0].getX(); + int y1 = (int) list[0].getY(); + + int mousex = (int) Math.round(((double) x1 / 1024.0) * 1280.0); + int mousey = (int) Math.round(((double) y1 / 768.0) * 1024.0); + robot.mouseMove(mousex, mousey); + } + } else { + System.out.println(e); + } + } + + public void onMotionSensingEvent(MotionSensingEvent e) { + /* display motion sensing */ + System.out.println(e); + } + + public void onExpansionEvent(ExpansionEvent e) { + System.out.println(e); + } + + public void onStatusEvent(StatusEvent e) { + // Display status variables + System.out.println(e); + } + + public void onDisconnectionEvent(DisconnectionEvent e) { + System.out.println(" wiimote " + e.getWiimoteId() + + "has been disconnected !!"); + } + + public void onNunchukInsertedEvent(NunchukInsertedEvent e) { + System.out.println(e); + } + + public void onNunchukRemovedEvent(NunchukRemovedEvent e) { + System.out.println(e); + } + + public void onGuitarHeroInsertedEvent(GuitarHeroInsertedEvent e) { + System.out.println(e); + } + + public void onGuitarHeroRemovedEvent(GuitarHeroRemovedEvent e) { + System.out.println(e); + } + + public void onClassicControllerInsertedEvent( + ClassicControllerInsertedEvent e) { + System.out.println(e); + } + + public void onClassicControllerRemovedEvent(ClassicControllerRemovedEvent e) { + System.out.println(e); + } + + /** + * @param args + */ + public static void main(String[] args) { + Wiimote[] wiimotes = WiiUseApiManager.getWiimotes(1, true); + if (wiimotes.length > 0) { + System.out.println(wiimotes[0]); + new Tests(wiimotes[0]); + } else { + System.out.println("No wiimotes found !!!"); + } + + // java.util.Timer timer = new java.util.Timer(); + // timer.scheduleAtFixedRate(new LedsTask(), 0, 100); + + } + +} diff --git a/java/src/wiiusej/test/WiiuseJGuiTest.java b/java/src/wiiusej/test/WiiuseJGuiTest.java new file mode 100644 index 0000000..54dc777 --- /dev/null +++ b/java/src/wiiusej/test/WiiuseJGuiTest.java @@ -0,0 +1,1379 @@ +/** + * This file is part of WiiuseJ. + * + * WiiuseJ is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * WiiuseJ is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with WiiuseJ. If not, see . + */ +package wiiusej.test; + +import java.awt.AWTException; +import java.awt.Robot; +import java.awt.event.InputEvent; +import java.awt.event.WindowEvent; +import java.awt.event.WindowListener; +import java.util.logging.Level; +import java.util.logging.Logger; + +import javax.swing.JFrame; +import wiiusej.WiiUseApiManager; +import wiiusej.Wiimote; +import wiiusej.utils.AccelerationPanel; +import wiiusej.utils.AccelerationWiimoteEventPanel; +import wiiusej.utils.ButtonsEventPanel; +import wiiusej.utils.GForcePanel; +import wiiusej.utils.IRPanel; +import wiiusej.utils.OrientationPanel; +import wiiusej.utils.OrientationWiimoteEventPanel; +import wiiusej.wiiusejevents.physicalevents.ExpansionEvent; +import wiiusej.wiiusejevents.physicalevents.IREvent; +import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent; +import wiiusej.wiiusejevents.physicalevents.WiimoteButtonsEvent; +import wiiusej.wiiusejevents.utils.WiimoteListener; +import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.DisconnectionEvent; +import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.NunchukInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.NunchukRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.StatusEvent; + +/** + * Gui class to test WiiuseJ. + * + * @author guiguito + */ +public class WiiuseJGuiTest extends javax.swing.JFrame implements + WiimoteListener { + + private Wiimote wiimote; + private Robot robot = null; + private boolean statusMotionRequested = false; + private boolean statusIRRequested = false; + private JFrame expansionFrame = null; + private boolean isFirstStatusGot = false; + private WindowListener buttonSetter = new WindowListener() { + + public void windowOpened(WindowEvent e) { + // nothing + } + + public void windowClosing(WindowEvent e) { + // nothing + } + + public void windowClosed(WindowEvent e) { + // nothing + } + + public void windowIconified(WindowEvent e) { + // nothing + } + + public void windowDeiconified(WindowEvent e) { + // nothing + } + + public void windowActivated(WindowEvent e) { + showExpansionWiimoteButton.setEnabled(false); + if (expansionFrame instanceof NunchukGuiTest){ + showExpansionWiimoteButton.setText("Hide Nunchuk"); + }else if(expansionFrame instanceof GuitarHero3GuiTest){ + showExpansionWiimoteButton.setText("Hide Guitar"); + }else if(expansionFrame instanceof ClassicControllerGuiTest){ + showExpansionWiimoteButton.setText("Hide Classic Controller"); + } + } + + public void windowDeactivated(WindowEvent e) { + showExpansionWiimoteButton.setEnabled(true); + if (expansionFrame instanceof NunchukGuiTest){ + showExpansionWiimoteButton.setText("Show Nunchuk"); + }else if(expansionFrame instanceof GuitarHero3GuiTest){ + showExpansionWiimoteButton.setText("Show Guitar"); + }else if(expansionFrame instanceof ClassicControllerGuiTest){ + showExpansionWiimoteButton.setText("Show Classic controller"); + } + } + }; + + /** + * default constructor + */ + public WiiuseJGuiTest() { + initComponents(); + this.addWindowListener(new CloseGuiTestCleanly()); + } + + /** + * Creates new form WiiuseJGuiTest + */ + public WiiuseJGuiTest(Wiimote wiimote) { + initComponents(); + this.addWindowListener(new CloseGuiTestCleanly()); + if (wiimote != null) { + this.wiimote = wiimote; + registerListeners(); + initWiimote(); + isFirstStatusGot = false; + getStatusButtonMousePressed(null); + } + } + + /** + * Clear all views + */ + private void clearViews() { + ((IRPanel) irViewPanel).clearView(); + ((ButtonsEventPanel) buttonsPanel).clearView(); + ((OrientationPanel) motionSensingPanel).clearView(); + ((GForcePanel) gForcePanel).clearView(); + ((AccelerationPanel) accelerationPanel).clearView(); + } + + /** + * Unregister all listeners. + */ + private void unregisterListeners() { + wiimote.removeWiiMoteEventListeners((IRPanel) irViewPanel); + wiimote.removeWiiMoteEventListeners((ButtonsEventPanel) buttonsPanel); + wiimote + .removeWiiMoteEventListeners((OrientationPanel) motionSensingPanel); + wiimote.removeWiiMoteEventListeners((GForcePanel) gForcePanel); + wiimote + .removeWiiMoteEventListeners((AccelerationPanel) accelerationPanel); + wiimote.removeWiiMoteEventListeners(this); + } + + private void initWiimote() { + wiimote.deactivateContinuous(); + wiimote.deactivateSmoothing(); + wiimote.setScreenAspectRatio169(); + wiimote.setSensorBarBelowScreen(); + } + + /** + * Register all listeners + */ + private void registerListeners() { + wiimote.addWiiMoteEventListeners((IRPanel) irViewPanel); + wiimote.addWiiMoteEventListeners((ButtonsEventPanel) buttonsPanel); + wiimote.addWiiMoteEventListeners((OrientationPanel) motionSensingPanel); + wiimote.addWiiMoteEventListeners((GForcePanel) gForcePanel); + wiimote.addWiiMoteEventListeners((AccelerationPanel) accelerationPanel); + wiimote.addWiiMoteEventListeners(this); + + } + + public void onButtonsEvent(WiimoteButtonsEvent arg0) { + if (robot != null) { + if (arg0.isButtonAPressed()) { + robot.mousePress(InputEvent.BUTTON1_MASK); + + } + if (arg0.isButtonBPressed()) { + robot.mousePress(InputEvent.BUTTON2_MASK); + + } + if (arg0.isButtonOnePressed()) { + robot.mousePress(InputEvent.BUTTON3_MASK); + + } + if (arg0.isButtonAJustReleased()) { + robot.mouseRelease(InputEvent.BUTTON1_MASK); + + } + if (arg0.isButtonBJustReleased()) { + robot.mouseRelease(InputEvent.BUTTON2_MASK); + + } + if (arg0.isButtonOneJustReleased()) { + robot.mouseRelease(InputEvent.BUTTON3_MASK); + + } + if (arg0.isButtonUpPressed()) {// mouse wheel up + robot.mouseWheel(-1); + } + if (arg0.isButtonDownPressed()) {// mouse wheel down + robot.mouseWheel(1); + } + + if (arg0.isButtonTwoPressed()) {// stop mouse control + mouseIRControlButtonMousePressed(null); + } + } + } + + public void onIrEvent(IREvent arg0) { + if (robot != null) {// if mouse control activated + robot.mouseMove(arg0.getX(), arg0.getY()); + } + if (statusIRRequested) { + xResolutionTextField.setText("" + arg0.getXVRes()); + yResolutionTextField.setText("" + arg0.getYVRes()); + statusIRRequested = false; + } + } + + public void onMotionSensingEvent(MotionSensingEvent arg0) { + if (statusMotionRequested) {// Status requested + accelerationThresholdTextField.setText("" + + arg0.getAccelerationThreshold()); + orientationThresholdTextField.setText("" + + arg0.getOrientationThreshold()); + alphaSmoothingTextField.setText("" + arg0.getAlphaSmoothing()); + statusMotionRequested = false; + } + } + + public void onExpansionEvent(ExpansionEvent e) { + // nothing yet + } + + public void onStatusEvent(StatusEvent arg0) { + if (!isFirstStatusGot) { + if (arg0.isNunchukConnected()) { + showExpansionWiimoteButton.setEnabled(true); + showExpansionWiimoteButton.setText("Show Nunchuk"); + expansionFrame = new NunchukGuiTest(wiimote); + expansionFrame + .setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); + expansionFrame.addWindowListener(buttonSetter); + isFirstStatusGot = true; + }else if(arg0.isClassicControllerConnected()){ + showExpansionWiimoteButton.setEnabled(true); + showExpansionWiimoteButton.setText("Show Classic Controller"); + expansionFrame = new ClassicControllerGuiTest(wiimote); + expansionFrame + .setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); + expansionFrame.addWindowListener(buttonSetter); + isFirstStatusGot = true; + } + else if(arg0.isGuitarHeroConnected()){ + showExpansionWiimoteButton.setEnabled(true); + showExpansionWiimoteButton.setText("Show Guitar Hero 3 Controller"); + expansionFrame = new GuitarHero3GuiTest(wiimote); + expansionFrame + .setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); + expansionFrame.addWindowListener(buttonSetter); + isFirstStatusGot = true; + } + } + messageText.setText("Status received !"); + batteryLevelText.setText(arg0.getBatteryLevel() + " %"); + led1Button.setEnabled(arg0.isLed1Set()); + led2Button.setEnabled(arg0.isLed2Set()); + led3Button.setEnabled(arg0.isLed3Set()); + led4Button.setEnabled(arg0.isLed4Set()); + if (arg0.isNunchukConnected()) { + ((NunchukGuiTest) expansionFrame).requestThresholdsUpdate(); + } + // attachments + int eventType = arg0.getEventType(); + if (eventType == StatusEvent.WIIUSE_CLASSIC_CTRL_INSERTED) { + expansionText.setText("Classic control connected."); + } else if (eventType == StatusEvent.WIIUSE_CLASSIC_CTRL_REMOVED) { + expansionText.setText("Classic control removed."); + } else if (eventType == StatusEvent.WIIUSE_NUNCHUK_INSERTED) { + expansionText.setText("Nunchuk connected."); + } else if (eventType == StatusEvent.WIIUSE_NUNCHUK_REMOVED) { + expansionText.setText("Nunchuk removed."); + } else if (eventType == StatusEvent.WIIUSE_GUITAR_HERO_3_CTRL_INSERTED) { + expansionText.setText("Guitar Hero 3 control connected."); + } else if (eventType == StatusEvent.WIIUSE_GUITAR_HERO_3_CTRL_REMOVED) { + expansionText.setText("Guitar Hero 3 control removed."); + } + } + + public void onDisconnectionEvent(DisconnectionEvent arg0) { + messageText.setText("Wiimote Disconnected !"); + unregisterListeners(); + clearViews(); + isFirstStatusGot = false; + } + + public void onNunchukInsertedEvent(NunchukInsertedEvent e) { + messageText.setText("Nunchuk connected !"); + expansionText.setText("Expansion connected : Nunchuk."); + showExpansionWiimoteButton.setEnabled(true); + showExpansionWiimoteButton.setText("Show nunchuk"); + expansionFrame = new NunchukGuiTest(wiimote); + expansionFrame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); + expansionFrame.addWindowListener(buttonSetter); + } + + public void onNunchukRemovedEvent(NunchukRemovedEvent e) { + messageText.setText("Nunchuk disconnected !"); + expansionText.setText("No expansion connected."); + showExpansionWiimoteButton.setEnabled(false); + showExpansionWiimoteButton.setText("No expansion"); + if (expansionFrame != null) { + if (expansionFrame instanceof NunchukGuiTest) { + ((NunchukGuiTest) expansionFrame).unRegisterListeners(); + } + expansionFrame.setEnabled(false); + expansionFrame.dispose(); + expansionFrame = null; + } + } + + public void onGuitarHeroInsertedEvent(GuitarHeroInsertedEvent arg0) { + messageText.setText("Guitar Hero 3 connected !"); + expansionText.setText("Expansion connected : Guitar Hero 3."); + showExpansionWiimoteButton.setEnabled(true); + showExpansionWiimoteButton.setText("Show Guitar Hero 3"); + expansionFrame = new GuitarHero3GuiTest(wiimote); + expansionFrame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); + expansionFrame.addWindowListener(buttonSetter); + } + + public void onGuitarHeroRemovedEvent(GuitarHeroRemovedEvent arg0) { + messageText.setText("Guitar Hero 3 disconnected !"); + expansionText.setText("No expansion connected."); + showExpansionWiimoteButton.setEnabled(false); + showExpansionWiimoteButton.setText("No expansion"); + if (expansionFrame != null) { + if (expansionFrame instanceof GuitarHero3GuiTest) { + ((GuitarHero3GuiTest) expansionFrame).unRegisterListeners(); + } + expansionFrame.setEnabled(false); + expansionFrame.dispose(); + expansionFrame = null; + } + } + + public void onClassicControllerInsertedEvent( + ClassicControllerInsertedEvent arg0) { + messageText.setText("Classic controller connected !"); + expansionText.setText("Expansion connected : Classic Controller."); + showExpansionWiimoteButton.setEnabled(true); + showExpansionWiimoteButton.setText("Show Classic Controller"); + expansionFrame = new ClassicControllerGuiTest(wiimote); + expansionFrame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); + expansionFrame.addWindowListener(buttonSetter); + } + + public void onClassicControllerRemovedEvent( + ClassicControllerRemovedEvent arg0) { + messageText.setText("Classic controller disconnected !"); + expansionText.setText("No expansion connected."); + showExpansionWiimoteButton.setEnabled(false); + showExpansionWiimoteButton.setText("No expansion"); + if (expansionFrame != null) { + if (expansionFrame instanceof ClassicControllerGuiTest) { + ((ClassicControllerGuiTest) expansionFrame).unRegisterListeners(); + } + expansionFrame.setEnabled(false); + expansionFrame.dispose(); + expansionFrame = null; + } + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + // //GEN-BEGIN:initComponents + private void initComponents() { + + leftPanel = new javax.swing.JPanel(); + irViewPanel = new IRPanel(); + jTabbedPane1 = new javax.swing.JTabbedPane(); + accelerationPanel = new AccelerationWiimoteEventPanel(); + motionSensingPanel = new OrientationWiimoteEventPanel(); + gForcePanel = new wiiusej.utils.GForceWiimoteEventPanel(); + rightPanel = new javax.swing.JPanel(); + fixedWiimotePanel = new javax.swing.JPanel(); + buttonsPanel = new ButtonsEventPanel(); + controlsPanel = new javax.swing.JPanel(); + activateRumbleIRPanel = new javax.swing.JPanel(); + toggleRumbleButton = new javax.swing.JButton(); + toggleIRTrackingButton = new javax.swing.JButton(); + activateMotionSensingPanel = new javax.swing.JPanel(); + toggleMotionSensingTrackingButton = new javax.swing.JButton(); + activateSmoothingContinuousPanel = new javax.swing.JPanel(); + toggleSmoothingButton = new javax.swing.JButton(); + toggleContinuousButton = new javax.swing.JButton(); + setLedsPanel = new javax.swing.JPanel(); + led1Button = new javax.swing.JButton(); + led2Button = new javax.swing.JButton(); + led3Button = new javax.swing.JButton(); + led4Button = new javax.swing.JButton(); + setLedsButton = new javax.swing.JButton(); + setAlphaSmoothingPanel = new javax.swing.JPanel(); + alphaSmoothingTextField = new javax.swing.JTextField(); + alphaSmoothingButton = new javax.swing.JButton(); + setOrientationThresholdPanel = new javax.swing.JPanel(); + orientationThresholdTextField = new javax.swing.JTextField(); + orientationThresholdButton = new javax.swing.JButton(); + setAccelerationThresholdPanel = new javax.swing.JPanel(); + accelerationThresholdTextField = new javax.swing.JTextField(); + accelerationThresholdButton = new javax.swing.JButton(); + getStatusPanel = new javax.swing.JPanel(); + getStatusButton = new javax.swing.JButton(); + batteryText = new javax.swing.JLabel(); + batteryLevelText = new javax.swing.JLabel(); + setIrSensitivyPanel = new javax.swing.JPanel(); + setIrSensitivySpinner = new javax.swing.JSpinner(); + setIrSensitivyButton = new javax.swing.JButton(); + setTimeoutButton = new javax.swing.JButton(); + setTimeoutPanel = new javax.swing.JPanel(); + normalTimeoutSpinner = new javax.swing.JSpinner(); + normalTimeoutText = new javax.swing.JLabel(); + expansionHandshakeTimeoutSpinner = new javax.swing.JSpinner(); + expansionHandshakeTimeoutText = new javax.swing.JLabel(); + setIRConfPanel = new javax.swing.JPanel(); + toggleSensorBarPositionButton = new javax.swing.JButton(); + toggleScreenAspectRatioButton = new javax.swing.JButton(); + setVirtualResolutionPanel = new javax.swing.JPanel(); + xLabel = new javax.swing.JLabel(); + xResolutionTextField = new javax.swing.JTextField(); + yLabel = new javax.swing.JLabel(); + yResolutionTextField = new javax.swing.JTextField(); + setVirtualResolutionButton = new javax.swing.JButton(); + startMouseControlPanel = new javax.swing.JPanel(); + mouseIRControlButton = new javax.swing.JButton(); + exPansionPanel = new javax.swing.JPanel(); + expansionText = new javax.swing.JLabel(); + expansionButtonPanel = new javax.swing.JPanel(); + showExpansionWiimoteButton = new javax.swing.JButton(); + showExpansionWiimoteButton.setEnabled(false); + messagesPanel = new javax.swing.JPanel(); + reconnectWiimotesButton = new javax.swing.JButton(); + messageLabelText = new javax.swing.JLabel(); + messageText = new javax.swing.JLabel(); + + setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); + setTitle("WiiuseJ Test GUI"); + setName("WiiuseJ Test GUI"); // NOI18N + + leftPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + + irViewPanel.setBackground(new java.awt.Color(0, 0, 0)); + irViewPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 153, 153), 2, true), "IR View", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 11), new java.awt.Color(255, 0, 51))); + irViewPanel.setToolTipText("IREvent"); + + javax.swing.GroupLayout irViewPanelLayout = new javax.swing.GroupLayout(irViewPanel); + irViewPanel.setLayout(irViewPanelLayout); + irViewPanelLayout.setHorizontalGroup( + irViewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 272, Short.MAX_VALUE) + ); + irViewPanelLayout.setVerticalGroup( + irViewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 299, Short.MAX_VALUE) + ); + + accelerationPanel.setToolTipText("MotionSensingEvent"); + + javax.swing.GroupLayout accelerationPanelLayout = new javax.swing.GroupLayout(accelerationPanel); + accelerationPanel.setLayout(accelerationPanelLayout); + accelerationPanelLayout.setHorizontalGroup( + accelerationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 279, Short.MAX_VALUE) + ); + accelerationPanelLayout.setVerticalGroup( + accelerationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 213, Short.MAX_VALUE) + ); + + jTabbedPane1.addTab("Acceleration", accelerationPanel); + + javax.swing.GroupLayout motionSensingPanelLayout = new javax.swing.GroupLayout(motionSensingPanel); + motionSensingPanel.setLayout(motionSensingPanelLayout); + motionSensingPanelLayout.setHorizontalGroup( + motionSensingPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 279, Short.MAX_VALUE) + ); + motionSensingPanelLayout.setVerticalGroup( + motionSensingPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 213, Short.MAX_VALUE) + ); + + jTabbedPane1.addTab("Orientation", motionSensingPanel); + + javax.swing.GroupLayout gForcePanelLayout = new javax.swing.GroupLayout(gForcePanel); + gForcePanel.setLayout(gForcePanelLayout); + gForcePanelLayout.setHorizontalGroup( + gForcePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 279, Short.MAX_VALUE) + ); + gForcePanelLayout.setVerticalGroup( + gForcePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 213, Short.MAX_VALUE) + ); + + jTabbedPane1.addTab("GForce", gForcePanel); + + javax.swing.GroupLayout leftPanelLayout = new javax.swing.GroupLayout(leftPanel); + leftPanel.setLayout(leftPanelLayout); + leftPanelLayout.setHorizontalGroup( + leftPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(irViewPanel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 284, Short.MAX_VALUE) + ); + leftPanelLayout.setVerticalGroup( + leftPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, leftPanelLayout.createSequentialGroup() + .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 238, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(irViewPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + jTabbedPane1.getAccessibleContext().setAccessibleName("Orientation"); + + rightPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + rightPanel.setLayout(new javax.swing.BoxLayout(rightPanel, javax.swing.BoxLayout.LINE_AXIS)); + + fixedWiimotePanel.setMaximumSize(new java.awt.Dimension(120, 32767)); + fixedWiimotePanel.setMinimumSize(new java.awt.Dimension(120, 100)); + fixedWiimotePanel.setPreferredSize(new java.awt.Dimension(120, 100)); + fixedWiimotePanel.setRequestFocusEnabled(false); + fixedWiimotePanel.setLayout(null); + + buttonsPanel.setMaximumSize(new java.awt.Dimension(120, 484)); + buttonsPanel.setMinimumSize(new java.awt.Dimension(120, 484)); + buttonsPanel.setOpaque(false); + buttonsPanel.setPreferredSize(new java.awt.Dimension(120, 484)); + + javax.swing.GroupLayout buttonsPanelLayout = new javax.swing.GroupLayout(buttonsPanel); + buttonsPanel.setLayout(buttonsPanelLayout); + buttonsPanelLayout.setHorizontalGroup( + buttonsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 120, Short.MAX_VALUE) + ); + buttonsPanelLayout.setVerticalGroup( + buttonsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 484, Short.MAX_VALUE) + ); + + fixedWiimotePanel.add(buttonsPanel); + buttonsPanel.setBounds(0, 0, 120, 484); + + rightPanel.add(fixedWiimotePanel); + + controlsPanel.setMinimumSize(new java.awt.Dimension(100, 264)); + controlsPanel.setPreferredSize(new java.awt.Dimension(190, 264)); + controlsPanel.setLayout(new java.awt.GridLayout(16, 1)); + + toggleRumbleButton.setText("Activate Rumble"); + toggleRumbleButton.addMouseListener(new java.awt.event.MouseAdapter() { + public void mousePressed(java.awt.event.MouseEvent evt) { + toggleRumbleButtonMousePressed(evt); + } + }); + activateRumbleIRPanel.add(toggleRumbleButton); + + toggleIRTrackingButton.setText("Activate IR Tracking"); + toggleIRTrackingButton.addMouseListener(new java.awt.event.MouseAdapter() { + public void mousePressed(java.awt.event.MouseEvent evt) { + toggleIRTrackingButtonMousePressed(evt); + } + }); + activateRumbleIRPanel.add(toggleIRTrackingButton); + + controlsPanel.add(activateRumbleIRPanel); + + toggleMotionSensingTrackingButton.setText("Activate motion sensing Tracking"); + toggleMotionSensingTrackingButton.addMouseListener(new java.awt.event.MouseAdapter() { + public void mousePressed(java.awt.event.MouseEvent evt) { + toggleMotionSensingTrackingButtonMousePressed(evt); + } + }); + activateMotionSensingPanel.add(toggleMotionSensingTrackingButton); + + controlsPanel.add(activateMotionSensingPanel); + + toggleSmoothingButton.setText("Activate Smoothing"); + toggleSmoothingButton.addMouseListener(new java.awt.event.MouseAdapter() { + public void mousePressed(java.awt.event.MouseEvent evt) { + toggleSmoothingButtonMousePressed(evt); + } + }); + activateSmoothingContinuousPanel.add(toggleSmoothingButton); + + toggleContinuousButton.setText("Activate Continuous"); + toggleContinuousButton.addMouseListener(new java.awt.event.MouseAdapter() { + public void mousePressed(java.awt.event.MouseEvent evt) { + toggleContinuousButtonMousePressed(evt); + } + }); + activateSmoothingContinuousPanel.add(toggleContinuousButton); + + controlsPanel.add(activateSmoothingContinuousPanel); + + led1Button.setText("Led1"); + led1Button.addMouseListener(new java.awt.event.MouseAdapter() { + public void mousePressed(java.awt.event.MouseEvent evt) { + led1ButtonMousePressed(evt); + } + }); + setLedsPanel.add(led1Button); + + led2Button.setText("Led2"); + led2Button.addMouseListener(new java.awt.event.MouseAdapter() { + public void mousePressed(java.awt.event.MouseEvent evt) { + led2ButtonMousePressed(evt); + } + }); + setLedsPanel.add(led2Button); + + led3Button.setText("Led3"); + led3Button.addMouseListener(new java.awt.event.MouseAdapter() { + public void mousePressed(java.awt.event.MouseEvent evt) { + led3ButtonMousePressed(evt); + } + }); + setLedsPanel.add(led3Button); + + led4Button.setText("Led4"); + led4Button.addMouseListener(new java.awt.event.MouseAdapter() { + public void mousePressed(java.awt.event.MouseEvent evt) { + led4ButtonMousePressed(evt); + } + }); + setLedsPanel.add(led4Button); + + setLedsButton.setText("Set leds"); + setLedsButton.addMouseListener(new java.awt.event.MouseAdapter() { + public void mousePressed(java.awt.event.MouseEvent evt) { + setLedsButtonMousePressed(evt); + } + }); + setLedsPanel.add(setLedsButton); + + controlsPanel.add(setLedsPanel); + + alphaSmoothingTextField.setMinimumSize(new java.awt.Dimension(100, 20)); + alphaSmoothingTextField.setPreferredSize(new java.awt.Dimension(100, 20)); + setAlphaSmoothingPanel.add(alphaSmoothingTextField); + + alphaSmoothingButton.setText("Set alpha smoothing"); + alphaSmoothingButton.addMouseListener(new java.awt.event.MouseAdapter() { + public void mousePressed(java.awt.event.MouseEvent evt) { + alphaSmoothingButtonMousePressed(evt); + } + }); + setAlphaSmoothingPanel.add(alphaSmoothingButton); + + controlsPanel.add(setAlphaSmoothingPanel); + + orientationThresholdTextField.setMinimumSize(new java.awt.Dimension(100, 20)); + orientationThresholdTextField.setPreferredSize(new java.awt.Dimension(100, 20)); + setOrientationThresholdPanel.add(orientationThresholdTextField); + + orientationThresholdButton.setText("Set orientation threshold"); + orientationThresholdButton.addMouseListener(new java.awt.event.MouseAdapter() { + public void mousePressed(java.awt.event.MouseEvent evt) { + orientationThresholdButtonMousePressed(evt); + } + }); + setOrientationThresholdPanel.add(orientationThresholdButton); + + controlsPanel.add(setOrientationThresholdPanel); + + accelerationThresholdTextField.setPreferredSize(new java.awt.Dimension(100, 20)); + setAccelerationThresholdPanel.add(accelerationThresholdTextField); + + accelerationThresholdButton.setText("Set acceleration threshold"); + accelerationThresholdButton.addMouseListener(new java.awt.event.MouseAdapter() { + public void mousePressed(java.awt.event.MouseEvent evt) { + accelerationThresholdButtonMousePressed(evt); + } + }); + setAccelerationThresholdPanel.add(accelerationThresholdButton); + + controlsPanel.add(setAccelerationThresholdPanel); + + getStatusButton.setText("Get status"); + getStatusButton.addMouseListener(new java.awt.event.MouseAdapter() { + public void mousePressed(java.awt.event.MouseEvent evt) { + getStatusButtonMousePressed(evt); + } + }); + getStatusPanel.add(getStatusButton); + + batteryText.setFont(new java.awt.Font("Tahoma", 0, 14)); + batteryText.setText("Battery level :"); + getStatusPanel.add(batteryText); + + batteryLevelText.setFont(new java.awt.Font("Arial", 0, 14)); + batteryLevelText.setText(" %"); + getStatusPanel.add(batteryLevelText); + + controlsPanel.add(getStatusPanel); + + setIrSensitivySpinner.setPreferredSize(new java.awt.Dimension(50, 18)); + setIrSensitivySpinner.addChangeListener(new javax.swing.event.ChangeListener() { + public void stateChanged(javax.swing.event.ChangeEvent evt) { + setIrSensitivySpinnerStateChanged(evt); + } + }); + setIrSensitivyPanel.add(setIrSensitivySpinner); + + setIrSensitivyButton.setText("SetIrSensivity"); + setIrSensitivyButton.addMouseListener(new java.awt.event.MouseAdapter() { + public void mousePressed(java.awt.event.MouseEvent evt) { + setIrSensitivyButtonMousePressed(evt); + } + }); + setIrSensitivyPanel.add(setIrSensitivyButton); + + setTimeoutButton.setText("Set timeouts in ms"); + setTimeoutButton.addMouseListener(new java.awt.event.MouseAdapter() { + public void mousePressed(java.awt.event.MouseEvent evt) { + setTimeoutButtonMousePressed(evt); + } + }); + setIrSensitivyPanel.add(setTimeoutButton); + + controlsPanel.add(setIrSensitivyPanel); + + normalTimeoutSpinner.setPreferredSize(new java.awt.Dimension(40, 18)); + normalTimeoutSpinner.addChangeListener(new javax.swing.event.ChangeListener() { + public void stateChanged(javax.swing.event.ChangeEvent evt) { + normalTimeoutSpinnerStateChanged(evt); + } + }); + setTimeoutPanel.add(normalTimeoutSpinner); + + normalTimeoutText.setText("Normal timeout"); + setTimeoutPanel.add(normalTimeoutText); + + expansionHandshakeTimeoutSpinner.setPreferredSize(new java.awt.Dimension(40, 18)); + expansionHandshakeTimeoutSpinner.addChangeListener(new javax.swing.event.ChangeListener() { + public void stateChanged(javax.swing.event.ChangeEvent evt) { + expansionHandshakeTimeoutSpinnerStateChanged(evt); + } + }); + setTimeoutPanel.add(expansionHandshakeTimeoutSpinner); + + expansionHandshakeTimeoutText.setText("Expansion handshake timeout"); + setTimeoutPanel.add(expansionHandshakeTimeoutText); + + controlsPanel.add(setTimeoutPanel); + + toggleSensorBarPositionButton.setText("Set sensor bar above"); + toggleSensorBarPositionButton.addMouseListener(new java.awt.event.MouseAdapter() { + public void mousePressed(java.awt.event.MouseEvent evt) { + toggleSensorBarPositionButtonMousePressed(evt); + } + }); + setIRConfPanel.add(toggleSensorBarPositionButton); + + toggleScreenAspectRatioButton.setText("Set screen aspect ratio 4/3"); + toggleScreenAspectRatioButton.addMouseListener(new java.awt.event.MouseAdapter() { + public void mousePressed(java.awt.event.MouseEvent evt) { + toggleScreenAspectRatioButtonMousePressed(evt); + } + }); + setIRConfPanel.add(toggleScreenAspectRatioButton); + + controlsPanel.add(setIRConfPanel); + + xLabel.setText("X"); + setVirtualResolutionPanel.add(xLabel); + + xResolutionTextField.setMinimumSize(new java.awt.Dimension(40, 20)); + xResolutionTextField.setPreferredSize(new java.awt.Dimension(40, 20)); + setVirtualResolutionPanel.add(xResolutionTextField); + + yLabel.setText("Y"); + setVirtualResolutionPanel.add(yLabel); + + yResolutionTextField.setFocusTraversalPolicyProvider(true); + yResolutionTextField.setMinimumSize(new java.awt.Dimension(40, 20)); + yResolutionTextField.setPreferredSize(new java.awt.Dimension(40, 20)); + setVirtualResolutionPanel.add(yResolutionTextField); + + setVirtualResolutionButton.setText("Set virtual resolution"); + setVirtualResolutionButton.addMouseListener(new java.awt.event.MouseAdapter() { + public void mousePressed(java.awt.event.MouseEvent evt) { + setVirtualResolutionButtonMousePressed(evt); + } + }); + setVirtualResolutionPanel.add(setVirtualResolutionButton); + + controlsPanel.add(setVirtualResolutionPanel); + + mouseIRControlButton.setText("Start infrared mouse control"); + mouseIRControlButton.addMouseListener(new java.awt.event.MouseAdapter() { + public void mousePressed(java.awt.event.MouseEvent evt) { + mouseIRControlButtonMousePressed(evt); + } + }); + startMouseControlPanel.add(mouseIRControlButton); + + controlsPanel.add(startMouseControlPanel); + + expansionText.setText("No expansion connected."); + exPansionPanel.add(expansionText); + + controlsPanel.add(exPansionPanel); + + showExpansionWiimoteButton.setText("No expansion connected"); + showExpansionWiimoteButton.addMouseListener(new java.awt.event.MouseAdapter() { + public void mousePressed(java.awt.event.MouseEvent evt) { + showExpansionWiimoteButtonMousePressed(evt); + } + }); + expansionButtonPanel.add(showExpansionWiimoteButton); + + controlsPanel.add(expansionButtonPanel); + + reconnectWiimotesButton.setText("Reconnect wiimote"); + reconnectWiimotesButton.addMouseListener(new java.awt.event.MouseAdapter() { + public void mousePressed(java.awt.event.MouseEvent evt) { + reconnectWiimotesButtonMousePressed(evt); + } + }); + messagesPanel.add(reconnectWiimotesButton); + + messageLabelText.setFont(new java.awt.Font("Tahoma", 0, 14)); + messageLabelText.setText("Message : "); + messagesPanel.add(messageLabelText); + + messageText.setFont(new java.awt.Font("Arial", 0, 14)); + messageText.setText("None"); + messagesPanel.add(messageText); + + controlsPanel.add(messagesPanel); + + rightPanel.add(controlsPanel); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addComponent(leftPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(rightPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 498, Short.MAX_VALUE)) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(leftPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(rightPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 573, Short.MAX_VALUE) + ); + + java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); + setBounds((screenSize.width-800)/2, (screenSize.height-600)/2, 800, 600); + }// //GEN-END:initComponents + + private void toggleRumbleButtonMousePressed(java.awt.event.MouseEvent evt) {// GEN-FIRST:event_toggleRumbleButtonMousePressed + if (toggleRumbleButton.isEnabled()) { + wiimote.activateRumble(); + toggleRumbleButton.setEnabled(false); + toggleRumbleButton.setText("Deactivate Rumble"); + messageText.setText("Rumble activated"); + } else { + wiimote.deactivateRumble(); + toggleRumbleButton.setEnabled(true); + toggleRumbleButton.setText("Activate Rumble"); + messageText.setText("Rumble deactivated"); + } + }// GEN-LAST:event_toggleRumbleButtonMousePressed + + private void toggleIRTrackingButtonMousePressed( + java.awt.event.MouseEvent evt) {// GEN-FIRST:event_toggleIRTrackingButtonMousePressed + if (toggleIRTrackingButton.isEnabled()) { + wiimote.activateIRTRacking(); + toggleIRTrackingButton.setEnabled(false); + toggleIRTrackingButton.setText("Deactivate IR Tracking"); + messageText.setText("IR Tracking activated"); + } else { + wiimote.deactivateIRTRacking(); + toggleIRTrackingButton.setEnabled(true); + toggleIRTrackingButton.setText("Activate IR Tracking"); + ((IRPanel) irViewPanel).onDisconnectionEvent(null); + messageText.setText("IR Tracking deactivated"); + } + }// GEN-LAST:event_toggleIRTrackingButtonMousePressed + + private void toggleMotionSensingTrackingButtonMousePressed( + java.awt.event.MouseEvent evt) {// GEN-FIRST:event_toggleMotionSensingTrackingButtonMousePressed + if (toggleMotionSensingTrackingButton.isEnabled()) { + wiimote.activateMotionSensing(); + toggleMotionSensingTrackingButton.setEnabled(false); + toggleMotionSensingTrackingButton + .setText("Deactivate Motion Sensing"); + messageText.setText("Motion Sensing activated"); + } else { + wiimote.deactivateMotionSensing(); + toggleMotionSensingTrackingButton.setEnabled(true); + toggleMotionSensingTrackingButton + .setText("Activate Motion Sensing"); + ((OrientationPanel) motionSensingPanel).onDisconnectionEvent(null); + ((GForcePanel) gForcePanel).onDisconnectionEvent(null); + messageText.setText("Motion Sensing deactivated"); + } + }// GEN-LAST:event_toggleMotionSensingTrackingButtonMousePressed + + private void toggleSmoothingButtonMousePressed(java.awt.event.MouseEvent evt) {// GEN-FIRST:event_toggleSmoothingButtonMousePressed + if (toggleSmoothingButton.isEnabled()) { + wiimote.activateSmoothing(); + toggleSmoothingButton.setEnabled(false); + toggleSmoothingButton.setText("Deactivate Alpha Smoothing"); + messageText.setText("Alpha Smoothing activated"); + } else { + wiimote.deactivateSmoothing(); + toggleSmoothingButton.setEnabled(true); + toggleSmoothingButton.setText("Activate Alpha Smoothing"); + messageText.setText("Alpha Smoothing deactivated"); + } + }// GEN-LAST:event_toggleSmoothingButtonMousePressed + + private void toggleContinuousButtonMousePressed( + java.awt.event.MouseEvent evt) {// GEN-FIRST:event_toggleContinuousButtonMousePressed + if (toggleContinuousButton.isEnabled()) { + wiimote.activateContinuous(); + toggleContinuousButton.setEnabled(false); + toggleContinuousButton.setText("Deactivate Continuous"); + messageText.setText("Continuous activated"); + } else { + wiimote.deactivateContinuous(); + toggleContinuousButton.setEnabled(true); + toggleContinuousButton.setText("Activate Continuous"); + messageText.setText("Continuous deactivated"); + } + }// GEN-LAST:event_toggleContinuousButtonMousePressed + + private void led1ButtonMousePressed(java.awt.event.MouseEvent evt) {// GEN-FIRST:event_led1ButtonMousePressed + if (led1Button.isEnabled()) { + led1Button.setEnabled(false); + } else { + led1Button.setEnabled(true); + } + }// GEN-LAST:event_led1ButtonMousePressed + + private void led2ButtonMousePressed(java.awt.event.MouseEvent evt) {// GEN-FIRST:event_led2ButtonMousePressed + if (led2Button.isEnabled()) { + led2Button.setEnabled(false); + } else { + led2Button.setEnabled(true); + } + }// GEN-LAST:event_led2ButtonMousePressed + + private void led3ButtonMousePressed(java.awt.event.MouseEvent evt) {// GEN-FIRST:event_led3ButtonMousePressed + if (led3Button.isEnabled()) { + led3Button.setEnabled(false); + } else { + led3Button.setEnabled(true); + } + }// GEN-LAST:event_led3ButtonMousePressed + + private void led4ButtonMousePressed(java.awt.event.MouseEvent evt) {// GEN-FIRST:event_led4ButtonMousePressed + if (led4Button.isEnabled()) { + led4Button.setEnabled(false); + } else { + led4Button.setEnabled(true); + } + }// GEN-LAST:event_led4ButtonMousePressed + + private void setLedsButtonMousePressed(java.awt.event.MouseEvent evt) {// GEN-FIRST:event_setLedsButtonMousePressed + wiimote.setLeds(led1Button.isEnabled(), led2Button.isEnabled(), + led3Button.isEnabled(), led4Button.isEnabled()); + messageText.setText("Leds set"); + }// GEN-LAST:event_setLedsButtonMousePressed + + private void alphaSmoothingButtonMousePressed(java.awt.event.MouseEvent evt) {// GEN-FIRST:event_alphaSmoothingButtonMousePressed + try { + float nb = Float.parseFloat(alphaSmoothingTextField.getText()); + wiimote.setAlphaSmoothingValue(nb); + messageText.setText("Alpha smoothing set to " + nb); + } catch (NumberFormatException e) { + messageText + .setText("Number is not a float, alpha smoothing not set !"); + } + }// GEN-LAST:event_alphaSmoothingButtonMousePressed + + private void orientationThresholdButtonMousePressed( + java.awt.event.MouseEvent evt) {// GEN-FIRST:event_orientationThresholdButtonMousePressed + try { + float nb = Float + .parseFloat(orientationThresholdTextField.getText()); + wiimote.setOrientationThreshold(nb); + messageText.setText("Orientation threshold set to " + nb); + } catch (NumberFormatException e) { + messageText + .setText("Number is not a float, orientation threshold not set !"); + } + }// GEN-LAST:event_orientationThresholdButtonMousePressed + + private void accelerationThresholdButtonMousePressed( + java.awt.event.MouseEvent evt) {// GEN-FIRST:event_accelerationThresholdButtonMousePressed + try { + int nb = Integer.parseInt(accelerationThresholdTextField.getText()); + wiimote.setAccelerationThreshold(nb); + messageText.setText("Acceleration threshold set to " + nb); + } catch (NumberFormatException e) { + messageText + .setText("Number is not an integer, acceleration threshold not set !"); + } + }// GEN-LAST:event_accelerationThresholdButtonMousePressed + + private void getStatusButtonMousePressed(java.awt.event.MouseEvent evt) {// GEN-FIRST:event_getStatusButtonMousePressed + wiimote.getStatus(); + statusMotionRequested = true; + statusIRRequested = true; + if (expansionFrame instanceof NunchukGuiTest) { + ((NunchukGuiTest) expansionFrame).requestThresholdsUpdate(); + } + }// GEN-LAST:event_getStatusButtonMousePressed + + private void toggleSensorBarPositionButtonMousePressed( + java.awt.event.MouseEvent evt) {// GEN-FIRST:event_toggleSensorBarPositionButtonMousePressed + if (toggleSensorBarPositionButton.isEnabled()) { + wiimote.setSensorBarBelowScreen(); + toggleSensorBarPositionButton.setEnabled(false); + toggleSensorBarPositionButton.setText("Set sensor bar below"); + messageText.setText("Sensor bar set above"); + } else { + wiimote.setSensorBarAboveScreen(); + toggleSensorBarPositionButton.setEnabled(true); + toggleSensorBarPositionButton.setText("Set sensor bar above"); + messageText.setText("Sensor bar set below"); + } + }// GEN-LAST:event_toggleSensorBarPositionButtonMousePressed + + private void toggleScreenAspectRatioButtonMousePressed( + java.awt.event.MouseEvent evt) {// GEN-FIRST:event_toggleScreenAspectRatioButtonMousePressed + if (toggleScreenAspectRatioButton.isEnabled()) { + wiimote.setScreenAspectRatio43(); + toggleScreenAspectRatioButton.setEnabled(false); + toggleScreenAspectRatioButton + .setText("Set screen aspect ratio 16/9"); + messageText.setText("creen aspect ratio to 4/3"); + } else { + wiimote.setScreenAspectRatio169(); + toggleScreenAspectRatioButton.setEnabled(true); + toggleScreenAspectRatioButton + .setText("Set screen aspect ratio 4/3"); + messageText.setText("Screen aspect ratio to 16/9"); + } + }// GEN-LAST:event_toggleScreenAspectRatioButtonMousePressed + + private void setVirtualResolutionButtonMousePressed( + java.awt.event.MouseEvent evt) {// GEN-FIRST:event_setVirtualResolutionButtonMousePressed + try { + int xres = Integer.parseInt(xResolutionTextField.getText()); + int yres = Integer.parseInt(yResolutionTextField.getText()); + wiimote.setVirtualResolution(xres, yres); + messageText.setText("Virtual resolution set to " + xres + "X" + + yres); + } catch (NumberFormatException e) { + messageText + .setText("A number in the virtual resolution is not an integer. Virtual resolution not set!"); + } + }// GEN-LAST:event_setVirtualResolutionButtonMousePressed + + private void mouseIRControlButtonMousePressed(java.awt.event.MouseEvent evt) {// GEN-FIRST:event_mouseIRControlButtonMousePressed + if (mouseIRControlButton.isEnabled()) { + try { + mouseIRControlButton.setEnabled(false); + mouseIRControlButton.setText("Stop infrared mouse control"); + robot = new Robot(); + messageText.setText("Infrared mouse control started"); + } catch (AWTException ex) { + Logger.getLogger(WiiuseJGuiTest.class.getName()).log( + Level.SEVERE, null, ex); + } + } else { + mouseIRControlButton.setEnabled(true); + mouseIRControlButton.setText("Start infrared mouse control"); + robot = null; + messageText.setText("Infrared mouse control stopped"); + } + }// GEN-LAST:event_mouseIRControlButtonMousePressed + + private void normalTimeoutSpinnerStateChanged( + javax.swing.event.ChangeEvent evt) {// GEN-FIRST:event_normalTimeoutSpinnerStateChanged + String value = normalTimeoutSpinner.getValue().toString(); + boolean isInt = true; + int valueInt = 0; + try { + valueInt = Integer.parseInt(value); + } catch (NumberFormatException e) { + isInt = false; + messageText.setText("Wrong value for normal timeout."); + } + if (isInt) { + if (valueInt > 1000) { + normalTimeoutSpinner.setValue("1000"); + } else if (valueInt < 0) { + normalTimeoutSpinner.setValue("0"); + } + } + }// GEN-LAST:event_normalTimeoutSpinnerStateChanged + + private void expansionHandshakeTimeoutSpinnerStateChanged( + javax.swing.event.ChangeEvent evt) {// GEN-FIRST:event_expansionHandshakeTimeoutSpinnerStateChanged + String value = expansionHandshakeTimeoutSpinner.getValue().toString(); + boolean isInt = true; + int valueInt = 0; + try { + valueInt = Integer.parseInt(value); + } catch (NumberFormatException e) { + isInt = false; + messageText.setText("Wrong value for expansion handshake timeout."); + } + if (isInt) { + if (valueInt > 1000) { + expansionHandshakeTimeoutSpinner.setValue("1000"); + } else if (valueInt < 0) { + expansionHandshakeTimeoutSpinner.setValue("0"); + } + } + }// GEN-LAST:event_expansionHandshakeTimeoutSpinnerStateChanged + + private void setIrSensitivySpinnerStateChanged( + javax.swing.event.ChangeEvent evt) {// GEN-FIRST:event_setIrSensitivySpinnerStateChanged + String value = setIrSensitivySpinner.getValue().toString(); + boolean isInt = true; + int valueInt = 0; + try { + valueInt = Integer.parseInt(value); + } catch (NumberFormatException e) { + isInt = false; + messageText.setText("Wrong value for IR senstivity."); + } + if (isInt) { + if (valueInt > 5) { + setIrSensitivySpinner.setValue("1000"); + } else if (valueInt < 0) { + setIrSensitivySpinner.setValue("0"); + } + } + }// GEN-LAST:event_setIrSensitivySpinnerStateChanged + + private void setIrSensitivyButtonMousePressed(java.awt.event.MouseEvent evt) {// GEN-FIRST:event_setIrSensitivyButtonMousePressed + String value = setIrSensitivySpinner.getValue().toString(); + boolean isInt = true; + int valueInt = 0; + try { + valueInt = Integer.parseInt(value); + } catch (NumberFormatException e) { + isInt = false; + messageText + .setText("Wrong value for IR sensitivity. It must be an int !"); + } + if (isInt) { + if (valueInt >= 1 && valueInt <= 5) { + wiimote.setIrSensitivity(valueInt); + messageText.setText("IR senstivity set to: " + valueInt + "."); + } else { + messageText + .setText("Wrong value for IR senstivity. It muset be between 1 and 5 !"); + } + } + }// GEN-LAST:event_setIrSensitivyButtonMousePressed + + private void setTimeoutButtonMousePressed(java.awt.event.MouseEvent evt) {// GEN-FIRST:event_setTimeoutButtonMousePressed + // get normal timeout + String value = normalTimeoutSpinner.getValue().toString(); + boolean isInt = true; + short valueInt = 0; + try { + valueInt = Short.parseShort(value); + } catch (NumberFormatException e) { + isInt = false; + messageText + .setText("Wrong value for normal timeout. It must be an int !"); + } + // get expansion handshake timeout + String value2 = expansionHandshakeTimeoutSpinner.getValue().toString(); + boolean isInt2 = true; + short valueInt2 = 0; + try { + valueInt2 = Short.parseShort(value2); + } catch (NumberFormatException e) { + isInt2 = false; + messageText + .setText("Wrong value for expansion handshake timeout. It must be an int !"); + } + if (isInt && isInt2) { + if (valueInt > 0 && valueInt2 > 0) { + wiimote.setTimeout(valueInt, valueInt2); + messageText.setText("Normal timeout set to: " + valueInt + + " and expansion handshake timeout set to: " + + valueInt2 + "!"); + } else { + messageText + .setText("Wrong value for one of the timeout value. It must be an integer > 0 !"); + } + } + }// GEN-LAST:event_setTimeoutButtonMousePressed + + private void reconnectWiimotesButtonMousePressed( + java.awt.event.MouseEvent evt) {// GEN-FIRST:event_reconnectWiimotesButtonMousePressed + // stop manager + WiiUseApiManager.shutdown(); + + // unregister previous wiimote + if (wiimote != null) { + onDisconnectionEvent(null); + } + + // Reset Gui + // remove frame for expansion + if (expansionFrame != null) { + if (expansionFrame instanceof NunchukGuiTest) { + ((NunchukGuiTest) expansionFrame).unRegisterListeners(); + }else if (expansionFrame instanceof ClassicControllerGuiTest) { + ((ClassicControllerGuiTest) expansionFrame).unRegisterListeners(); + } + expansionFrame.setEnabled(false); + expansionFrame.dispose(); + expansionFrame = null; + } + + // setup buttons In first state + toggleRumbleButton.setText("Activate Rumble"); + toggleRumbleButton.setEnabled(true); + toggleMotionSensingTrackingButton + .setText("Activate motion sensing Tracking"); + toggleMotionSensingTrackingButton.setEnabled(true); + toggleIRTrackingButton.setText("Activate IR Tracking"); + toggleIRTrackingButton.setEnabled(true); + toggleContinuousButton.setText("Activate Continuous"); + toggleContinuousButton.setEnabled(true); + toggleScreenAspectRatioButton.setText("Set screen aspect ratio 4/3"); + toggleScreenAspectRatioButton.setEnabled(true); + toggleSensorBarPositionButton.setText("Set sensor bar above"); + toggleSensorBarPositionButton.setEnabled(true); + toggleSmoothingButton.setText("Activate Smoothing"); + toggleSmoothingButton.setEnabled(true); + mouseIRControlButton.setText("Start infrared mouse control"); + mouseIRControlButton.setEnabled(true); + + // get wiimote + Wiimote[] listWiimote = WiiUseApiManager.getWiimotes(1, true); + if (listWiimote != null && listWiimote.length > 0) { + wiimote = listWiimote[0]; + + // registers listeners + registerListeners(); + initWiimote(); + + isFirstStatusGot = false; + getStatusButtonMousePressed(null); + } + }// GEN-LAST:event_reconnectWiimotesButtonMousePressed + + private void showExpansionWiimoteButtonMousePressed( + java.awt.event.MouseEvent evt) {// GEN-FIRST:event_showExpansionWiimoteButtonMousePressed + if (expansionFrame != null) { + if (showExpansionWiimoteButton.isEnabled()) {// expansion frame + // not shown + // show it + expansionFrame.setEnabled(true); + expansionFrame.setVisible(true); + showExpansionWiimoteButton.setEnabled(false); + if (expansionFrame instanceof NunchukGuiTest){ + showExpansionWiimoteButton.setText("Hide Nunchuk"); + messageText.setText("Nunchuk displayed !"); + }else if(expansionFrame instanceof GuitarHero3GuiTest){ + showExpansionWiimoteButton.setText("Hide Guitar"); + messageText.setText("Guitar displayed !"); + }else if(expansionFrame instanceof ClassicControllerGuiTest){ + showExpansionWiimoteButton.setText("Hide Classic controller"); + messageText.setText("Classic controller displayed !"); + } + } else {// already being shown + expansionFrame.setEnabled(false); + expansionFrame.setVisible(false); + showExpansionWiimoteButton.setEnabled(true); + if (expansionFrame instanceof NunchukGuiTest){ + showExpansionWiimoteButton.setText("Show Nunchuk"); + messageText.setText("Nunchuk hidden !"); + }else if(expansionFrame instanceof GuitarHero3GuiTest){ + showExpansionWiimoteButton.setText("Show Guitar"); + messageText.setText("Guitar hidden !"); + }else if(expansionFrame instanceof ClassicControllerGuiTest){ + showExpansionWiimoteButton.setText("Show Classic controller"); + messageText.setText("Classic controller hidden !"); + } + } + } + }// GEN-LAST:event_showExpansionWiimoteButtonMousePressed + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JPanel accelerationPanel; + private javax.swing.JButton accelerationThresholdButton; + private javax.swing.JTextField accelerationThresholdTextField; + private javax.swing.JPanel activateMotionSensingPanel; + private javax.swing.JPanel activateRumbleIRPanel; + private javax.swing.JPanel activateSmoothingContinuousPanel; + private javax.swing.JButton alphaSmoothingButton; + private javax.swing.JTextField alphaSmoothingTextField; + private javax.swing.JLabel batteryLevelText; + private javax.swing.JLabel batteryText; + private javax.swing.JPanel buttonsPanel; + private javax.swing.JPanel controlsPanel; + private javax.swing.JPanel exPansionPanel; + private javax.swing.JPanel expansionButtonPanel; + private javax.swing.JSpinner expansionHandshakeTimeoutSpinner; + private javax.swing.JLabel expansionHandshakeTimeoutText; + private javax.swing.JLabel expansionText; + private javax.swing.JPanel fixedWiimotePanel; + private javax.swing.JPanel gForcePanel; + private javax.swing.JButton getStatusButton; + private javax.swing.JPanel getStatusPanel; + private javax.swing.JPanel irViewPanel; + private javax.swing.JTabbedPane jTabbedPane1; + private javax.swing.JButton led1Button; + private javax.swing.JButton led2Button; + private javax.swing.JButton led3Button; + private javax.swing.JButton led4Button; + private javax.swing.JPanel leftPanel; + private javax.swing.JLabel messageLabelText; + private javax.swing.JLabel messageText; + private javax.swing.JPanel messagesPanel; + private javax.swing.JPanel motionSensingPanel; + private javax.swing.JButton mouseIRControlButton; + private javax.swing.JSpinner normalTimeoutSpinner; + private javax.swing.JLabel normalTimeoutText; + private javax.swing.JButton orientationThresholdButton; + private javax.swing.JTextField orientationThresholdTextField; + private javax.swing.JButton reconnectWiimotesButton; + private javax.swing.JPanel rightPanel; + private javax.swing.JPanel setAccelerationThresholdPanel; + private javax.swing.JPanel setAlphaSmoothingPanel; + private javax.swing.JPanel setIRConfPanel; + private javax.swing.JButton setIrSensitivyButton; + private javax.swing.JPanel setIrSensitivyPanel; + private javax.swing.JSpinner setIrSensitivySpinner; + private javax.swing.JButton setLedsButton; + private javax.swing.JPanel setLedsPanel; + private javax.swing.JPanel setOrientationThresholdPanel; + private javax.swing.JButton setTimeoutButton; + private javax.swing.JPanel setTimeoutPanel; + private javax.swing.JButton setVirtualResolutionButton; + private javax.swing.JPanel setVirtualResolutionPanel; + private javax.swing.JButton showExpansionWiimoteButton; + private javax.swing.JPanel startMouseControlPanel; + private javax.swing.JButton toggleContinuousButton; + private javax.swing.JButton toggleIRTrackingButton; + private javax.swing.JButton toggleMotionSensingTrackingButton; + private javax.swing.JButton toggleRumbleButton; + private javax.swing.JButton toggleScreenAspectRatioButton; + private javax.swing.JButton toggleSensorBarPositionButton; + private javax.swing.JButton toggleSmoothingButton; + private javax.swing.JLabel xLabel; + private javax.swing.JTextField xResolutionTextField; + private javax.swing.JLabel yLabel; + private javax.swing.JTextField yResolutionTextField; + // End of variables declaration//GEN-END:variables +} diff --git a/java/src/wiiusej/utils/AccelerationExpansionEventPanel.java b/java/src/wiiusej/utils/AccelerationExpansionEventPanel.java new file mode 100644 index 0000000..cb3021f --- /dev/null +++ b/java/src/wiiusej/utils/AccelerationExpansionEventPanel.java @@ -0,0 +1,39 @@ +/** + * This file is part of WiiuseJ. + * + * WiiuseJ is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * WiiuseJ is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with WiiuseJ. If not, see . + */ +package wiiusej.utils; + +import wiiusej.values.RawAcceleration; +import wiiusej.wiiusejevents.GenericEvent; +import wiiusej.wiiusejevents.physicalevents.NunchukEvent; + +/** + * Panel to display Acceleration in a MotionSensingEvent from an expansion. + * + * @author guiguito + */ +public class AccelerationExpansionEventPanel extends AccelerationPanel { + + @Override + public RawAcceleration getRawAccelerationValue(GenericEvent e) { + if (e instanceof NunchukEvent) { + return ((NunchukEvent) e).getNunchukMotionSensingEvent() + .getRawAcceleration(); + } + return null; + } + +} diff --git a/java/src/wiiusej/utils/AccelerationPanel.java b/java/src/wiiusej/utils/AccelerationPanel.java new file mode 100644 index 0000000..15f1551 --- /dev/null +++ b/java/src/wiiusej/utils/AccelerationPanel.java @@ -0,0 +1,303 @@ +/** + * This file is part of WiiuseJ. + * + * WiiuseJ is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * WiiuseJ is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with WiiuseJ. If not, see . + */ +package wiiusej.utils; + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Image; +import java.awt.RenderingHints; +import java.awt.geom.AffineTransform; +import java.util.ArrayList; + +import wiiusej.values.RawAcceleration; +import wiiusej.wiiusejevents.GenericEvent; +import wiiusej.wiiusejevents.physicalevents.ExpansionEvent; +import wiiusej.wiiusejevents.physicalevents.IREvent; +import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent; +import wiiusej.wiiusejevents.physicalevents.WiimoteButtonsEvent; +import wiiusej.wiiusejevents.utils.WiimoteListener; +import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.DisconnectionEvent; +import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.NunchukInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.NunchukRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.StatusEvent; + +/** + * This panel is used to watch raw acceleration values from a + * MotionSensingEvent. + * + * @author guiguito + */ +public abstract class AccelerationPanel extends javax.swing.JPanel implements + WiimoteListener { + + private Image mImage;// image for double buffering + private Color xColor = Color.RED; + private Color yColor = Color.GREEN; + private Color zColor = Color.BLUE; + private Color backgroundColor = Color.WHITE; + private Color lineColor = Color.BLACK; + private ArrayList values = new ArrayList(); + + /** Creates new form AccelerationPanel */ + public AccelerationPanel() { + initComponents(); + } + + /** + * Constructor used to choose the colors used by the AccelerationPanel. + * + * @param bgColor + * background color. + * @param xColor + * x color. + * @param yColor + * y color. + * @param zColor + * z color. + * @param lColor + * line color. + */ + public AccelerationPanel(Color bgColor, Color xColor, Color yColor, + Color zColor, Color lColor) { + backgroundColor = bgColor; + this.xColor = xColor; + this.yColor = yColor; + this.zColor = zColor; + lineColor = lColor; + initComponents(); + } + + @Override + public void paintComponent(Graphics g) { + super.paintComponent(g); + Dimension d = getSize(); + checkOffScreenImage(); + Graphics offG = mImage.getGraphics(); + offG.setColor(backgroundColor); + offG.fillRect(0, 0, d.width, d.height); + Graphics2D g2 = (Graphics2D) mImage.getGraphics(); + g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_ON); + + // draw medium line + int yLine = getHeight() - 25; + + g2.setPaint(lineColor); + g2.drawLine(0, yLine, getWidth(), yLine); + + RawAcceleration[] valuesArray = values.toArray(new RawAcceleration[0]); + + double unit = yLine / 255.0; + int previousX = 0; + int previousY = 0; + int previousZ = 0; + // draw curves + for (int i = 0; i < valuesArray.length && i < getWidth(); i++) { + RawAcceleration acceleration = valuesArray[i]; + // draw X + g2.setPaint(xColor); + int yDelta = (int) Math.round(unit * acceleration.getX()); + int y = -1 * yDelta + yLine; + g2.drawLine(i - 1, previousX, i, y); + g2.setTransform(new AffineTransform()); + previousX = y; + // draw Y + g2.setPaint(yColor); + yDelta = (int) Math.round(unit * acceleration.getY()); + y = -1 * yDelta + yLine; + g2.drawLine(i - 1, previousY, i, y); + g2.setTransform(new AffineTransform()); + previousY = y; + // draw Z + g2.setPaint(zColor); + yDelta = (int) Math.round(unit * acceleration.getZ()); + y = -1 * yDelta + yLine; + g2.drawLine(i - 1, previousZ, i, y); + g2.setTransform(new AffineTransform()); + previousZ = y; + } + + // draw legend + g2.setPaint(xColor); + g2.drawLine(5, getHeight() - 10, 25, getHeight() - 10); + g2.setPaint(yColor); + g2.drawLine(60, getHeight() - 10, 80, getHeight() - 10); + g2.setPaint(zColor); + g2.drawLine(120, getHeight() - 10, 140, getHeight() - 10); + + g2.setPaint(lineColor); + g2.drawString("X", 30, getHeight() - 5); + g2.drawString("Y", 85, getHeight() - 5); + g2.drawString("Z", 145, getHeight() - 5); + g2.drawString("0", 2, yLine - 5); + g2.drawString("255", 2, 15); + // put offscreen image on the screen + g.drawImage(mImage, 0, 0, null); + } + + /** + * check if the mImage variable has been initialized. If it's not the case + * it initializes it with the dimensions of the panel. mImage is for double + * buffering. + */ + private void checkOffScreenImage() { + Dimension d = getSize(); + if (mImage == null || mImage.getWidth(null) != d.width + || mImage.getHeight(null) != d.height) { + mImage = createImage(d.width, d.height); + } + } + + public void onButtonsEvent(WiimoteButtonsEvent arg0) { + // nothing + } + + public void onIrEvent(IREvent arg0) { + // nothing + } + + public void onMotionSensingEvent(MotionSensingEvent arg0) { + draw(arg0); + } + + public void onExpansionEvent(ExpansionEvent arg0) { + draw(arg0); + } + + public void onStatusEvent(StatusEvent arg0) { + // nothing + } + + public void onDisconnectionEvent(DisconnectionEvent arg0) { + // Clear points. + values.clear(); + repaint(); + } + + public void onNunchukInsertedEvent(NunchukInsertedEvent arg0) { + // nothing + } + + public void onNunchukRemovedEvent(NunchukRemovedEvent arg0) { + // nothing + } + + public void onGuitarHeroInsertedEvent(GuitarHeroInsertedEvent arg0) { + // nothing + } + + public void onGuitarHeroRemovedEvent(GuitarHeroRemovedEvent arg0) { + // nothing + } + + public void onClassicControllerInsertedEvent( + ClassicControllerInsertedEvent arg0) { + // nothing + } + + public void onClassicControllerRemovedEvent( + ClassicControllerRemovedEvent arg0) { + // nothing + } + + private void draw(GenericEvent arg0) { + if (values.size() >= getWidth()) { + // if there are as many values as pixels in the width + // clear points + values.clear(); + } + RawAcceleration rawAcceleration = getRawAccelerationValue(arg0); + if (rawAcceleration != null) + values.add(rawAcceleration); + repaint(); + } + + public abstract RawAcceleration getRawAccelerationValue(GenericEvent e); + + public Color getBackgroundColor() { + return backgroundColor; + } + + public Color getLineColor() { + return lineColor; + } + + public Color getXColor() { + return xColor; + } + + public Color getYColor() { + return yColor; + } + + public Color getZColor() { + return zColor; + } + + public void setBackgroundColor(Color backgroundColor) { + this.backgroundColor = backgroundColor; + } + + public void setLineColor(Color lineColor) { + this.lineColor = lineColor; + } + + public void setXColor(Color xColor) { + this.xColor = xColor; + } + + public void setYColor(Color yColor) { + this.yColor = yColor; + } + + public void setZColor(Color zColor) { + this.zColor = zColor; + } + + public void clearView() { + values.clear(); + repaint(); + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + // //GEN-BEGIN:initComponents + private void initComponents() { + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup(layout.createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 400, + Short.MAX_VALUE)); + layout.setVerticalGroup(layout.createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 300, + Short.MAX_VALUE)); + }// //GEN-END:initComponents + + // Variables declaration - do not modify//GEN-BEGIN:variables + // End of variables declaration//GEN-END:variables +} diff --git a/java/src/wiiusej/utils/AccelerationWiimoteEventPanel.java b/java/src/wiiusej/utils/AccelerationWiimoteEventPanel.java new file mode 100644 index 0000000..4e716de --- /dev/null +++ b/java/src/wiiusej/utils/AccelerationWiimoteEventPanel.java @@ -0,0 +1,37 @@ +/** + * This file is part of WiiuseJ. + * + * WiiuseJ is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * WiiuseJ is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with WiiuseJ. If not, see . + */ +package wiiusej.utils; + +import wiiusej.values.RawAcceleration; +import wiiusej.wiiusejevents.GenericEvent; +import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent; + +/** + * Panel to display Acceleration in a MotionSensingEvent from a wiimote. + * @author guiguito + */ +public class AccelerationWiimoteEventPanel extends AccelerationPanel { + + @Override + public RawAcceleration getRawAccelerationValue(GenericEvent e) { + if (e instanceof MotionSensingEvent) { + return ((MotionSensingEvent) e).getRawAcceleration(); + } + return null; + } + +} diff --git a/java/src/wiiusej/utils/ButtonsEventPanel.java b/java/src/wiiusej/utils/ButtonsEventPanel.java new file mode 100644 index 0000000..97f9b19 --- /dev/null +++ b/java/src/wiiusej/utils/ButtonsEventPanel.java @@ -0,0 +1,382 @@ +/** + * This file is part of WiiuseJ. + * + * WiiuseJ is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * WiiuseJ is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with WiiuseJ. If not, see . + */ +package wiiusej.utils; + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Image; +import java.awt.RenderingHints; +import java.awt.Shape; +import java.awt.Toolkit; +import java.awt.geom.AffineTransform; + +import wiiusej.wiiusejevents.physicalevents.ExpansionEvent; +import wiiusej.wiiusejevents.physicalevents.IREvent; +import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent; +import wiiusej.wiiusejevents.physicalevents.WiimoteButtonsEvent; +import wiiusej.wiiusejevents.utils.WiimoteListener; +import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.DisconnectionEvent; +import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.NunchukInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.NunchukRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.StatusEvent; + +/** + * This panel is used to see what buttons are pressed on the wiimote. It + * displays the result of last ButtonsEvent. + * + * @author guiguito + */ +public class ButtonsEventPanel extends javax.swing.JPanel implements + WiimoteListener { + + private Image mImage;// image for double buffering + private Image wiimoteImage;// image for double buffering + private WiimoteButtonsEvent buttons; + private Color pressedColor = Color.RED; + private Color heldColor = Color.ORANGE; + private Color releasedColor = Color.YELLOW; + private Shape shape = new java.awt.geom.Ellipse2D.Double(0, 0, 13, 13); + + /** + * Default constructor. Red : button just pressed. Orange : button held. + * Yellow : button just released. + */ + public ButtonsEventPanel() { + Toolkit toolkit = java.awt.Toolkit.getDefaultToolkit(); + java.net.URL url = ButtonsEventPanel.class + .getResource("/img/wiimote.png"); + wiimoteImage = toolkit.createImage(url); + initComponents(); + } + + /** + * Constructor used to set colors and shape used. + * + * @param pressColor + * color of a button just pressed. + * @param hColor + * color of a button held. + * @param relColor + * color of a button just released. + * @param sh + * shape draw on the buttons. + */ + public ButtonsEventPanel(Color pressColor, Color hColor, Color relColor, + Shape sh) { + pressedColor = pressColor; + heldColor = hColor; + releasedColor = relColor; + shape = sh; + Toolkit toolkit = java.awt.Toolkit.getDefaultToolkit(); + wiimoteImage = toolkit.createImage("img\\wiimote.png"); + initComponents(); + } + + @Override + public void paintComponent(Graphics g) { + super.paintComponent(g); + Dimension d = getSize(); + checkOffScreenImage(); + Graphics offG = mImage.getGraphics(); + // offG.setColor(backgroundColor); + offG.fillRect(0, 0, d.width, d.height); + Graphics2D g2 = (Graphics2D) mImage.getGraphics(); + g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_ON); + + // draw buttons pushed + g2.drawImage(wiimoteImage, 0, 0, this); + g2.setTransform(new AffineTransform()); + + if (buttons != null) { + /* button ONE */ + if (buttons.isButtonOneJustPressed()) { + drawFunction(g2, pressedColor, 53, 353); + } + if (buttons.isButtonOneHeld()) { + drawFunction(g2, heldColor, 53, 353); + } + if (buttons.isButtonOneJustReleased()) { + drawFunction(g2, releasedColor, 53, 353); + } + + /* button TWO */ + if (buttons.isButtonTwoJustPressed()) { + drawFunction(g2, pressedColor, 53, 395); + } + if (buttons.isButtonTwoHeld()) { + drawFunction(g2, heldColor, 53, 395); + } + if (buttons.isButtonTwoJustReleased()) { + drawFunction(g2, releasedColor, 53, 395); + } + + /* button A */ + if (buttons.isButtonAJustPressed()) { + drawFunction(g2, pressedColor, 53, 150); + } + if (buttons.isButtonAHeld()) { + drawFunction(g2, heldColor, 53, 150); + } + if (buttons.isButtonAJustReleased()) { + drawFunction(g2, releasedColor, 53, 150); + } + + /* button B */ + if (buttons.isButtonBJustPressed()) { + drawFunction(g2, pressedColor, 16, 149); + } + if (buttons.isButtonBHeld()) { + drawFunction(g2, heldColor, 16, 149); + } + if (buttons.isButtonBJustReleased()) { + drawFunction(g2, releasedColor, 16, 149); + } + + /* button LEFT */ + if (buttons.isButtonLeftJustPressed()) { + drawFunction(g2, pressedColor, 33, 77); + } + if (buttons.isButtonLeftHeld()) { + drawFunction(g2, heldColor, 33, 77); + } + if (buttons.isButtonLeftJustReleased()) { + drawFunction(g2, releasedColor, 33, 77); + } + + /* button RIGHT */ + if (buttons.isButtonRightJustPressed()) { + drawFunction(g2, pressedColor, 73, 77); + } + if (buttons.isButtonRightHeld()) { + drawFunction(g2, heldColor, 73, 77); + } + if (buttons.isButtonRightJustReleased()) { + drawFunction(g2, releasedColor, 73, 77); + } + + /* button UP */ + if (buttons.isButtonUpJustPressed()) { + drawFunction(g2, pressedColor, 54, 60); + } + if (buttons.isButtonUpHeld()) { + drawFunction(g2, heldColor, 54, 60); + } + if (buttons.isButtonUpJustReleased()) { + drawFunction(g2, releasedColor, 54, 60); + } + + /* button DOWN */ + if (buttons.isButtonDownJustPressed()) { + drawFunction(g2, pressedColor, 54, 97); + } + if (buttons.isButtonDownHeld()) { + drawFunction(g2, heldColor, 54, 97); + } + if (buttons.isButtonDownJustReleased()) { + drawFunction(g2, releasedColor, 54, 97); + } + + /* button MINUS */ + if (buttons.isButtonMinusJustPressed()) { + drawFunction(g2, pressedColor, 20, 230); + } + if (buttons.isButtonMinusHeld()) { + drawFunction(g2, heldColor, 20, 230); + } + if (buttons.isButtonMinusJustReleased()) { + drawFunction(g2, releasedColor, 20, 230); + } + + /* button PLUS */ + if (buttons.isButtonPlusJustPressed()) { + drawFunction(g2, pressedColor, 86, 230); + } + if (buttons.isButtonPlusHeld()) { + drawFunction(g2, heldColor, 86, 230); + } + if (buttons.isButtonPlusJustReleased()) { + drawFunction(g2, releasedColor, 86, 230); + } + + /* button HOME */ + if (buttons.isButtonHomeJustPressed()) { + drawFunction(g2, pressedColor, 53, 230); + } + if (buttons.isButtonHomeHeld()) { + drawFunction(g2, heldColor, 53, 230); + } + if (buttons.isButtonHomeJustReleased()) { + drawFunction(g2, releasedColor, 53, 230); + } + + buttons = null; + } + + // put offscreen image on the screen + g.drawImage(mImage, 0, 0, null); + } + + /** + * Function used to factorize code. + * + * @param g2 + * where to draw a shape. + * @param col + * color to use. + * @param x + * x coordinates. + * @param y + * y coordinates. + */ + private void drawFunction(Graphics2D g2, Color col, int x, int y) { + g2.setPaint(col); + g2.translate(x, y); + g2.draw(shape); + g2.fill(shape); + g2.setTransform(new AffineTransform()); + } + + /** + * check if the mImage variable has been initialized. If it's not the case + * it initializes it with the dimensions of the panel. mImage is for double + * buffering. + */ + private void checkOffScreenImage() { + Dimension d = getSize(); + if (mImage == null || mImage.getWidth(null) != d.width + || mImage.getHeight(null) != d.height) { + mImage = createImage(d.width, d.height); + } + } + + public void onButtonsEvent(WiimoteButtonsEvent arg0) { + setSize(wiimoteImage.getWidth(this), wiimoteImage.getHeight(this)); + buttons = arg0; + repaint(); + } + + public void onIrEvent(IREvent arg0) { + // nothing + } + + public void onMotionSensingEvent(MotionSensingEvent arg0) { + // nothing + } + + public void onExpansionEvent(ExpansionEvent e) { + // nothing + } + + public void onStatusEvent(StatusEvent arg0) { + // nothing + } + + public void onDisconnectionEvent(DisconnectionEvent arg0) { + clearView(); + } + + public void onNunchukInsertedEvent(NunchukInsertedEvent e) { + // nothing + } + + public void onNunchukRemovedEvent(NunchukRemovedEvent e) { + // nothing + } + + public void onGuitarHeroInsertedEvent(GuitarHeroInsertedEvent arg0) { + // nothing + } + + public void onGuitarHeroRemovedEvent(GuitarHeroRemovedEvent arg0) { + // nothing + } + + public void onClassicControllerInsertedEvent( + ClassicControllerInsertedEvent arg0) { + // nothing + } + + public void onClassicControllerRemovedEvent( + ClassicControllerRemovedEvent arg0) { + // nothing + } + + public Color getHeldColor() { + return heldColor; + } + + public Color getPressedColor() { + return pressedColor; + } + + public Color getReleasedColor() { + return releasedColor; + } + + public Shape getShape() { + return shape; + } + + public void setHeldColor(Color heldColor) { + this.heldColor = heldColor; + } + + public void setPressedColor(Color pressedColor) { + this.pressedColor = pressedColor; + } + + public void setReleasedColor(Color releasedColor) { + this.releasedColor = releasedColor; + } + + public void setShape(Shape shape) { + this.shape = shape; + } + + public void clearView() { + buttons = null; + repaint(); + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + // //GEN-BEGIN:initComponents + private void initComponents() { + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup(layout.createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 400, + Short.MAX_VALUE)); + layout.setVerticalGroup(layout.createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 300, + Short.MAX_VALUE)); + }// //GEN-END:initComponents + // Variables declaration - do not modify//GEN-BEGIN:variables + // End of variables declaration//GEN-END:variables +} diff --git a/java/src/wiiusej/utils/ClassicControllerButtonsEventPanel.java b/java/src/wiiusej/utils/ClassicControllerButtonsEventPanel.java new file mode 100644 index 0000000..9bec5a9 --- /dev/null +++ b/java/src/wiiusej/utils/ClassicControllerButtonsEventPanel.java @@ -0,0 +1,500 @@ +/** + * This file is part of WiiuseJ. + * + * WiiuseJ is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * WiiuseJ is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with WiiuseJ. If not, see . + */ +package wiiusej.utils; + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Image; +import java.awt.RenderingHints; +import java.awt.Shape; +import java.awt.Toolkit; +import java.awt.geom.AffineTransform; +import wiiusej.wiiusejevents.physicalevents.ClassicControllerButtonsEvent; +import wiiusej.wiiusejevents.physicalevents.ClassicControllerEvent; +import wiiusej.wiiusejevents.physicalevents.ExpansionEvent; +import wiiusej.wiiusejevents.physicalevents.IREvent; +import wiiusej.wiiusejevents.physicalevents.JoystickEvent; +import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent; +import wiiusej.wiiusejevents.physicalevents.WiimoteButtonsEvent; +import wiiusej.wiiusejevents.utils.WiimoteListener; +import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.DisconnectionEvent; +import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.NunchukInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.NunchukRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.StatusEvent; + +/** + * This panel is used to display what happens on the classic controller. + * + * @author guiguito + */ +public class ClassicControllerButtonsEventPanel extends javax.swing.JPanel implements WiimoteListener { + + private Image mImage;// image for double buffering + private Image wiimoteImage;// image for double buffering + private ClassicControllerEvent event; + private Color pressedColor = Color.RED; + private Color heldColor = Color.ORANGE; + private Color releasedColor = Color.YELLOW; + private Color joystickColor = Color.PINK; + private Color shoulderColor = Color.BLUE; + private Shape shapeJoystick = new java.awt.geom.Ellipse2D.Double(0, 0, 15, 15); + private Shape shapeButton = new java.awt.geom.Ellipse2D.Double(0, 0, 20, 20); + private static int xAmplitude = 20; + private static int yAmplitude = 20; + + /** + * Default constructor. Red : button just pressed. Orange : button held. + * Yellow : button just released. + */ + public ClassicControllerButtonsEventPanel() { + Toolkit toolkit = java.awt.Toolkit.getDefaultToolkit(); + java.net.URL url = ButtonsEventPanel.class.getResource("/img/classiccontroller.png"); + wiimoteImage = toolkit.createImage(url); + initComponents(); + } + + /** + * Constructor used to set colors and shape used. + * + * @param pressColor + * color of a button just pressed. + * @param hColor + * color of a button held. + * @param relColor + * color of a button just released. + * @param jsColor + * color of the joysticks. + * @param shouldColor + * color of the shoulders. + * @param js + * shape drawn on the joysticks. + * @param sh + * shape drawn on the buttons. + */ + public ClassicControllerButtonsEventPanel(Color pressColor, Color hColor, Color relColor, + Color jsColor, Color shouldColor, Shape js, Shape sh) { + pressedColor = pressColor; + heldColor = hColor; + releasedColor = relColor; + shapeButton = sh; + shapeJoystick = js; + joystickColor = jsColor; + shoulderColor = shouldColor; + Toolkit toolkit = java.awt.Toolkit.getDefaultToolkit(); + wiimoteImage = toolkit.createImage("img\\wiimote.png"); + initComponents(); + } + + /** This method is called from within the constructor to + * initialize the form. + * WARNING: Do NOT modify this code. The content of this method is + * always regenerated by the Form Editor. + */ + // //GEN-BEGIN:initComponents + private void initComponents() { + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 400, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 300, Short.MAX_VALUE) + ); + }// //GEN-END:initComponents + @Override + public void paintComponent(Graphics g) { + super.paintComponent(g); + Dimension d = getSize(); + checkOffScreenImage(); + Graphics offG = mImage.getGraphics(); + // offG.setColor(backgroundColor); + offG.fillRect(0, 0, d.width, d.height); + Graphics2D g2 = (Graphics2D) mImage.getGraphics(); + g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_ON); + + //draw classic controller + g2.drawImage(wiimoteImage, 0, 0, this); + g2.setTransform(new AffineTransform()); + + if (event != null) { + // draw buttons pushed + ClassicControllerButtonsEvent buttons = event.getButtonsEvent(); + + /* button A */ + if (buttons.isButtonAJustPressed()) { + drawFunction(g2, pressedColor, 304, 76, shapeButton); + } + if (buttons.isButtonAHeld()) { + drawFunction(g2, heldColor, 304, 76, shapeButton); + } + if (buttons.isButtonAJustReleased()) { + drawFunction(g2, releasedColor, 304, 76, shapeButton); + } + + /* button B */ + if (buttons.isButtonBJustPressed()) { + drawFunction(g2, pressedColor, 269, 98, shapeButton); + } + if (buttons.isButtonBHeld()) { + drawFunction(g2, heldColor, 269, 98, shapeButton); + } + if (buttons.isButtonBJustReleased()) { + drawFunction(g2, releasedColor, 269, 98, shapeButton); + } + + /* button Down */ + if (buttons.isButtonDownJustPressed()) { + drawFunction(g2, pressedColor, 60, 97, shapeButton); + } + if (buttons.isButtonDownHeld()) { + drawFunction(g2, heldColor, 60, 97, shapeButton); + } + if (buttons.isButtonDownJustReleased()) { + drawFunction(g2, releasedColor, 60, 97, shapeButton); + } + + /* button FullLeft */ + if (buttons.isButtonFullLeftJustPressed()) { + drawFunction(g2, pressedColor, 55, 4, shapeButton); + } + if (buttons.isButtonFullLeftHeld()) { + drawFunction(g2, heldColor, 55, 4, shapeButton); + } + if (buttons.isButtonFullLeftJustReleased()) { + drawFunction(g2, releasedColor, 55, 4, shapeButton); + } + + /* button FullRight */ + if (buttons.isButtonFullRightJustPressed()) { + drawFunction(g2, pressedColor, 276, 4, shapeButton); + } + if (buttons.isButtonFullRightHeld()) { + drawFunction(g2, heldColor, 276, 4, shapeButton); + } + if (buttons.isButtonFullRightJustReleased()) { + drawFunction(g2, releasedColor, 276, 4, shapeButton); + } + + /* button Home */ + if (buttons.isButtonHomeJustPressed()) { + drawFunction(g2, pressedColor, 166, 76, shapeButton); + } + if (buttons.isButtonHomeHeld()) { + drawFunction(g2, heldColor, 166, 76, shapeButton); + } + if (buttons.isButtonHomeJustReleased()) { + drawFunction(g2, releasedColor, 166, 76, shapeButton); + } + + /* button Left */ + if (buttons.isButtonLeftJustPressed()) { + drawFunction(g2, pressedColor, 34, 75, shapeButton); + } + if (buttons.isButtonLeftHeld()) { + drawFunction(g2, heldColor, 34, 75, shapeButton); + } + if (buttons.isButtonLeftJustReleased()) { + drawFunction(g2, releasedColor, 34, 75, shapeButton); + } + + /* button Minus */ + if (buttons.isButtonMinusJustPressed()) { + drawFunction(g2, pressedColor, 140, 76, shapeButton); + } + if (buttons.isButtonMinusHeld()) { + drawFunction(g2, heldColor, 140, 76, shapeButton); + } + if (buttons.isButtonMinusJustReleased()) { + drawFunction(g2, releasedColor, 140, 76, shapeButton); + } + + /* button Plus */ + if (buttons.isButtonPlusJustPressed()) { + drawFunction(g2, pressedColor, 191, 76, shapeButton); + } + if (buttons.isButtonPlusHeld()) { + drawFunction(g2, heldColor, 191, 76, shapeButton); + } + if (buttons.isButtonPlusJustReleased()) { + drawFunction(g2, releasedColor, 191, 76, shapeButton); + } + + /* button Right */ + if (buttons.isButtonRightJustPressed()) { + drawFunction(g2, pressedColor, 86, 75, shapeButton); + } + if (buttons.isButtonRightHeld()) { + drawFunction(g2, heldColor, 86, 75, shapeButton); + } + if (buttons.isButtonRightJustReleased()) { + drawFunction(g2, releasedColor, 86, 353, shapeButton); + } + + /* button Up */ + if (buttons.isButtonUpJustPressed()) { + drawFunction(g2, pressedColor, 60, 50, shapeButton); + } + if (buttons.isButtonUpHeld()) { + drawFunction(g2, heldColor, 60, 50, shapeButton); + } + if (buttons.isButtonUpJustReleased()) { + drawFunction(g2, releasedColor, 60, 50, shapeButton); + } + + /* button X */ + if (buttons.isButtonXJustPressed()) { + drawFunction(g2, pressedColor, 271, 53, shapeButton); + } + if (buttons.isButtonXHeld()) { + drawFunction(g2, heldColor, 271, 53, shapeButton); + } + if (buttons.isButtonXJustReleased()) { + drawFunction(g2, releasedColor, 271, 53, shapeButton); + } + + /* button Y */ + if (buttons.isButtonYJustPressed()) { + drawFunction(g2, pressedColor, 237, 76, shapeButton); + } + if (buttons.isButtonYHeld()) { + drawFunction(g2, heldColor, 237, 76, shapeButton); + } + if (buttons.isButtonYJustReleased()) { + drawFunction(g2, releasedColor, 237, 76, shapeButton); + } + + /* button ZL */ + if (buttons.isButtonZLJustPressed()) { + drawFunction(g2, pressedColor, 123, 4, shapeButton); + } + if (buttons.isButtonZLHeld()) { + drawFunction(g2, heldColor, 123, 4, shapeButton); + } + if (buttons.isButtonZLJustReleased()) { + drawFunction(g2, releasedColor, 123, 4, shapeButton); + } + + /* button ZR */ + if (buttons.isButtonZRJustPressed()) { + drawFunction(g2, pressedColor, 208, 4, shapeButton); + } + if (buttons.isButtonZRHeld()) { + drawFunction(g2, heldColor, 208, 4, shapeButton); + } + if (buttons.isButtonZRJustReleased()) { + drawFunction(g2, releasedColor, 208, 4, shapeButton); + } + + //joysticks + int halfWidth = (int) Math.round(shapeJoystick.getBounds().getWidth() / 2); + int halfHeight = (int) Math.round(shapeJoystick.getBounds().getHeight() / 2); + + // left joystick + JoystickEvent jl = event.getClassicControllerLeftJoystickEvent(); + int xCenter1 = 121; + int yCenter1 = 125; + + double xAng1 = Math.sin(jl.getAngle() * Math.PI / 180.0) * jl.getMagnitude(); + double yAng1 = Math.cos(jl.getAngle() * Math.PI / 180.0) * jl.getMagnitude(); + + int xShift1 = (int) Math.round(xAng1 * xAmplitude); + int yShift1 = (int) Math.round(yAng1 * yAmplitude); + int x1 = xCenter1 + xShift1 - halfWidth; + int y1 = yCenter1 - yShift1 - halfHeight; + // draw shape + drawFunction(g2, joystickColor, x1, y1, shapeJoystick); + + //Right joystick + JoystickEvent jr = event.getClassicControllerRightJoystickEvent(); + int xCenter2 = 213; + int yCenter2 = 125; + + double xAng2 = Math.sin(jr.getAngle() * Math.PI / 180.0) * jr.getMagnitude(); + double yAng2 = Math.cos(jr.getAngle() * Math.PI / 180.0) * jr.getMagnitude(); + + int xShift2 = (int) Math.round(xAng2 * xAmplitude); + int yShift2 = (int) Math.round(yAng2 * yAmplitude); + int x2 = xCenter2 + xShift2 - halfWidth; + int y2 = yCenter2 - yShift2 - halfHeight; + // draw shape + drawFunction(g2, joystickColor, x2, y2, shapeJoystick); + + event = null; + } + + // put offscreen image on the screen + g.drawImage(mImage, 0, 0, null); + } + + /** + * Function used to factorize code. + * + * @param g2 + * where to draw a shape. + * @param col + * color to use. + * @param x + * x coordinates. + * @param y + * y coordinates. + * @param sh + * shape to draw. + */ + private void drawFunction(Graphics2D g2, Color col, int x, int y, Shape sh) { + g2.setPaint(col); + g2.translate(x, y); + g2.draw(sh); + g2.fill(sh); + g2.setTransform(new AffineTransform()); + } + + /** + * check if the mImage variable has been initialized. If it's not the case + * it initializes it with the dimensions of the panel. mImage is for double + * buffering. + */ + private void checkOffScreenImage() { + Dimension d = getSize(); + if (mImage == null || mImage.getWidth(null) != d.width || mImage.getHeight(null) != d.height) { + mImage = createImage(d.width, d.height); + } + } + + public void onButtonsEvent(WiimoteButtonsEvent arg0) { + //do nothing + } + + public void onIrEvent(IREvent arg0) { + //do nothing + } + + public void onMotionSensingEvent(MotionSensingEvent arg0) { + //do nothing + } + + public void onExpansionEvent(ExpansionEvent arg0) { + if (arg0 instanceof ClassicControllerEvent) { + event = (ClassicControllerEvent) arg0; + } + repaint(); + } + + public void onStatusEvent(StatusEvent arg0) { + //do nothing + } + + public void onDisconnectionEvent(DisconnectionEvent arg0) { + //do nothing + } + + public void onNunchukInsertedEvent(NunchukInsertedEvent arg0) { + //do nothing + } + + public void onNunchukRemovedEvent(NunchukRemovedEvent arg0) { + //do nothing + } + + public void onGuitarHeroInsertedEvent(GuitarHeroInsertedEvent arg0) { + //do nothing + } + + public void onGuitarHeroRemovedEvent(GuitarHeroRemovedEvent arg0) { + //do nothing + } + + public void onClassicControllerInsertedEvent(ClassicControllerInsertedEvent arg0) { + //do nothing + } + + public void onClassicControllerRemovedEvent(ClassicControllerRemovedEvent arg0) { + clearView(); + } + + public Color getHeldColor() { + return heldColor; + } + + public Color getJoystickColor() { + return joystickColor; + } + + public Color getPressedColor() { + return pressedColor; + } + + public Color getReleasedColor() { + return releasedColor; + } + + public Color getShoulderColor() { + return shoulderColor; + } + + public Shape getShapeButton() { + return shapeButton; + } + + public Shape getShapeJoystick() { + return shapeJoystick; + } + + public void setHeldColor(Color heldColor) { + this.heldColor = heldColor; + } + + public void setJoystickColor(Color joystickColor) { + this.joystickColor = joystickColor; + } + + public void setPressedColor(Color pressedColor) { + this.pressedColor = pressedColor; + } + + public void setReleasedColor(Color releasedColor) { + this.releasedColor = releasedColor; + } + + public void setShoulderColor(Color shoulderColor) { + this.shoulderColor = shoulderColor; + } + + public void setShapeButton(Shape shapeButton) { + this.shapeButton = shapeButton; + } + + public void setShapeJoystick(Shape shapeJoystick) { + this.shapeJoystick = shapeJoystick; + } + + public void clearView() { + event = null; + repaint(); + } + // Variables declaration - do not modify//GEN-BEGIN:variables + // End of variables declaration//GEN-END:variables +} diff --git a/java/src/wiiusej/utils/GForceExpansionEventPanel.java b/java/src/wiiusej/utils/GForceExpansionEventPanel.java new file mode 100644 index 0000000..d5852b0 --- /dev/null +++ b/java/src/wiiusej/utils/GForceExpansionEventPanel.java @@ -0,0 +1,38 @@ +/** + * This file is part of WiiuseJ. + * + * WiiuseJ is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * WiiuseJ is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with WiiuseJ. If not, see . + */ +package wiiusej.utils; + +import wiiusej.values.GForce; +import wiiusej.wiiusejevents.GenericEvent; +import wiiusej.wiiusejevents.physicalevents.NunchukEvent; + +/** + * Panel to display GForce in a MotionSensingEvent from an expansion. + * + * @author guiguito + */ +public class GForceExpansionEventPanel extends GForcePanel{ + + @Override + public GForce getGForceValue(GenericEvent e) { + if (e instanceof NunchukEvent){ + return ((NunchukEvent)e).getNunchukMotionSensingEvent().getGforce(); + } + return null; + } + +} diff --git a/java/src/wiiusej/utils/GForcePanel.java b/java/src/wiiusej/utils/GForcePanel.java new file mode 100644 index 0000000..dc57b30 --- /dev/null +++ b/java/src/wiiusej/utils/GForcePanel.java @@ -0,0 +1,304 @@ +/** + * This file is part of WiiuseJ. + * + * WiiuseJ is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * WiiuseJ is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with WiiuseJ. If not, see . + */ +package wiiusej.utils; + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Image; +import java.awt.RenderingHints; +import java.awt.geom.AffineTransform; +import java.util.ArrayList; + +import wiiusej.values.GForce; +import wiiusej.wiiusejevents.GenericEvent; +import wiiusej.wiiusejevents.physicalevents.ExpansionEvent; +import wiiusej.wiiusejevents.physicalevents.IREvent; +import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent; +import wiiusej.wiiusejevents.physicalevents.WiimoteButtonsEvent; +import wiiusej.wiiusejevents.utils.WiimoteListener; +import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.DisconnectionEvent; +import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.NunchukInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.NunchukRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.StatusEvent; + +/** + * This panel is used to watch gravity force values from a MotionSensingEvent. + * + * @author guiguito + */ +public abstract class GForcePanel extends javax.swing.JPanel implements + WiimoteListener { + + private Image mImage;// image for double buffering + private Color xColor = Color.RED; + private Color yColor = Color.GREEN; + private Color zColor = Color.BLUE; + private Color backgroundColor = Color.WHITE; + private Color lineColor = Color.BLACK; + private ArrayList values = new ArrayList(); + + /** + * Default constructor of the AccelerationPanel. + */ + public GForcePanel() { + initComponents(); + } + + /** + * Constructor used to choose the colors used by the AccelerationPanel. + * + * @param bgColor + * background color. + * @param xxColor + * color of the acceleration on X axis. + * @param yyColor + * color of the acceleration on Y axis. + * @param zzColor + * color of the acceleration on Z axis. + * @param lColor + * line color. + */ + public GForcePanel(Color bgColor, Color xxColor, Color yyColor, + Color zzColor, Color lColor) { + backgroundColor = bgColor; + xColor = xxColor; + yColor = yyColor; + zColor = zzColor; + lineColor = lColor; + initComponents(); + } + + @Override + public void paintComponent(Graphics g) { + super.paintComponent(g); + Dimension d = getSize(); + checkOffScreenImage(); + Graphics offG = mImage.getGraphics(); + offG.setColor(backgroundColor); + offG.fillRect(0, 0, d.width, d.height); + Graphics2D g2 = (Graphics2D) mImage.getGraphics(); + g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_ON); + + // draw medium line + double yMiddleFloat = getHeight() / 2.0; + int yMiddle = (int) Math.round(yMiddleFloat); + + g2.setPaint(lineColor); + g2.drawLine(0, yMiddle, getWidth(), yMiddle); + + GForce[] valuesArray = values.toArray(new GForce[0]); + double unit = yMiddleFloat / 5.0; + int previousX = 0; + int previousY = 0; + int previousZ = 0; + // draw curves + for (int i = 0; i < valuesArray.length && i < getWidth(); i++) { + GForce gforce = valuesArray[i]; + // draw X + g2.setPaint(xColor); + int yDelta = (int) Math.round(unit * gforce.getX()); + int y = -1 * yDelta + yMiddle; + g2.drawLine(i - 1, previousX, i, y); + g2.setTransform(new AffineTransform()); + previousX = y; + // draw Y + g2.setPaint(yColor); + yDelta = (int) Math.round(unit * gforce.getY()); + y = -1 * yDelta + yMiddle; + g2.drawLine(i - 1, previousY, i, y); + g2.setTransform(new AffineTransform()); + previousY = y; + // draw Z + g2.setPaint(zColor); + yDelta = (int) Math.round(unit * gforce.getZ()); + y = -1 * yDelta + yMiddle; + g2.drawLine(i - 1, previousZ, i, y); + g2.setTransform(new AffineTransform()); + previousZ = y; + } + + // draw legend + g2.setPaint(xColor); + g2.drawLine(5, getHeight() - 10, 25, getHeight() - 10); + g2.setPaint(yColor); + g2.drawLine(60, getHeight() - 10, 80, getHeight() - 10); + g2.setPaint(zColor); + g2.drawLine(120, getHeight() - 10, 140, getHeight() - 10); + + g2.setPaint(lineColor); + g2.drawString("X", 30, getHeight() - 5); + g2.drawString("Y", 85, getHeight() - 5); + g2.drawString("Z", 145, getHeight() - 5); + g2.drawString("0", 2, yMiddle - 5); + g2.drawString("5", 2, 10); + g2.drawString("-5", 2, getHeight() - 15); + // put offscreen image on the screen + g.drawImage(mImage, 0, 0, null); + } + + /** + * check if the mImage variable has been initialized. If it's not the case + * it initializes it with the dimensions of the panel. mImage is for double + * buffering. + */ + private void checkOffScreenImage() { + Dimension d = getSize(); + if (mImage == null || mImage.getWidth(null) != d.width + || mImage.getHeight(null) != d.height) { + mImage = createImage(d.width, d.height); + } + } + + public void onButtonsEvent(WiimoteButtonsEvent arg0) { + // nothing + } + + public void onIrEvent(IREvent arg0) { + // nothing + } + + public void onMotionSensingEvent(MotionSensingEvent arg0) { + draw(arg0); + } + + public void onExpansionEvent(ExpansionEvent arg0) { + draw(arg0); + } + + public void onStatusEvent(StatusEvent arg0) { + // nothing + } + + public void onDisconnectionEvent(DisconnectionEvent arg0) { + // Clear points. + values.clear(); + repaint(); + } + + public void onNunchukInsertedEvent(NunchukInsertedEvent arg0) { + // nothing + } + + public void onNunchukRemovedEvent(NunchukRemovedEvent arg0) { + // nothing + } + + public void onGuitarHeroInsertedEvent(GuitarHeroInsertedEvent arg0) { + // nothing + } + + public void onGuitarHeroRemovedEvent(GuitarHeroRemovedEvent arg0) { + // nothing + } + + public void onClassicControllerInsertedEvent( + ClassicControllerInsertedEvent arg0) { + // nothing + } + + public void onClassicControllerRemovedEvent( + ClassicControllerRemovedEvent arg0) { + // nothing + } + + private void draw(GenericEvent arg0) { + if (values.size() >= getWidth()) { + // if there are as many values as pixels in the width + // clear points + values.clear(); + } + GForce gforce = getGForceValue(arg0); + if (gforce != null) + values.add(gforce); + repaint(); + } + + public abstract GForce getGForceValue(GenericEvent e); + + public Color getBackgroundColor() { + return backgroundColor; + } + + public Color getLineColor() { + return lineColor; + } + + public Color getXColor() { + return xColor; + } + + public Color getYColor() { + return yColor; + } + + public Color getZColor() { + return zColor; + } + + public void setBackgroundColor(Color backgroundColor) { + this.backgroundColor = backgroundColor; + } + + public void setLineColor(Color lineColor) { + this.lineColor = lineColor; + } + + public void setXColor(Color xColor) { + this.xColor = xColor; + } + + public void setYColor(Color yColor) { + this.yColor = yColor; + } + + public void setZColor(Color zColor) { + this.zColor = zColor; + } + + public void clearView() { + values.clear(); + repaint(); + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + // //GEN-BEGIN:initComponents + private void initComponents() { + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup(layout.createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 400, + Short.MAX_VALUE)); + layout.setVerticalGroup(layout.createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 300, + Short.MAX_VALUE)); + }// //GEN-END:initComponents + // Variables declaration - do not modify//GEN-BEGIN:variables + // End of variables declaration//GEN-END:variables +} diff --git a/java/src/wiiusej/utils/GForceWiimoteEventPanel.java b/java/src/wiiusej/utils/GForceWiimoteEventPanel.java new file mode 100644 index 0000000..1ae710e --- /dev/null +++ b/java/src/wiiusej/utils/GForceWiimoteEventPanel.java @@ -0,0 +1,37 @@ +/** + * This file is part of WiiuseJ. + * + * WiiuseJ is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * WiiuseJ is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with WiiuseJ. If not, see . + */ +package wiiusej.utils; + +import wiiusej.values.GForce; +import wiiusej.wiiusejevents.GenericEvent; +import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent; + +/** + * Panel to display GForce in a MotionSensingEvent from a wiimote. + * + * @author guiguito + */ +public class GForceWiimoteEventPanel extends GForcePanel { + + @Override + public GForce getGForceValue(GenericEvent e) { + if (e instanceof MotionSensingEvent) { + return ((MotionSensingEvent) e).getGforce(); + } + return null; + } +} diff --git a/java/src/wiiusej/utils/GuitarHero3ButtonsEventPanel.java b/java/src/wiiusej/utils/GuitarHero3ButtonsEventPanel.java new file mode 100644 index 0000000..fe03337 --- /dev/null +++ b/java/src/wiiusej/utils/GuitarHero3ButtonsEventPanel.java @@ -0,0 +1,274 @@ +/** + * This file is part of WiiuseJ. + * + * WiiuseJ is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * WiiuseJ is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with WiiuseJ. If not, see . + */ +package wiiusej.utils; + +import wiiusej.wiiusejevents.physicalevents.ExpansionEvent; +import wiiusej.wiiusejevents.physicalevents.GuitarHeroButtonsEvent; +import wiiusej.wiiusejevents.physicalevents.GuitarHeroEvent; +import wiiusej.wiiusejevents.physicalevents.IREvent; +import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent; +import wiiusej.wiiusejevents.physicalevents.WiimoteButtonsEvent; +import wiiusej.wiiusejevents.utils.WiimoteListener; +import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.DisconnectionEvent; +import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.NunchukInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.NunchukRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.StatusEvent; + +/** + * This panel is used to display what happens on the buttons of the + * Guitar Hero 3 controller. + * @author guiguito + */ +public class GuitarHero3ButtonsEventPanel extends javax.swing.JPanel implements WiimoteListener { + + /** Creates new form GuitarHero3ButtonsEventPanel */ + public GuitarHero3ButtonsEventPanel() { + initComponents(); + } + + /** This method is called from within the constructor to + * initialize the form. + * WARNING: Do NOT modify this code. The content of this method is + * always regenerated by the Form Editor. + */ + // //GEN-BEGIN:initComponents + private void initComponents() { + + leftPanel = new javax.swing.JPanel(); + plusButton = new javax.swing.JToggleButton(); + minusButton = new javax.swing.JToggleButton(); + strumPanel = new javax.swing.JPanel(); + strumUpButton = new javax.swing.JToggleButton(); + strumDownButton = new javax.swing.JToggleButton(); + RightPanel = new javax.swing.JPanel(); + coloredButtonsPanel = new javax.swing.JPanel(); + orangeButton = new javax.swing.JToggleButton(); + blueButton = new javax.swing.JToggleButton(); + yellowButton = new javax.swing.JToggleButton(); + redButton = new javax.swing.JToggleButton(); + greenButton = new javax.swing.JToggleButton(); + + setBackground(new java.awt.Color(0, 0, 0)); + setLayout(new javax.swing.BoxLayout(this, javax.swing.BoxLayout.X_AXIS)); + + leftPanel.setBackground(new java.awt.Color(0, 0, 0)); + leftPanel.setLayout(new javax.swing.BoxLayout(leftPanel, javax.swing.BoxLayout.LINE_AXIS)); + + plusButton.setBackground(new java.awt.Color(255, 255, 255)); + plusButton.setFont(new java.awt.Font("Arial", 1, 24)); + plusButton.setText("+"); + leftPanel.add(plusButton); + + minusButton.setBackground(new java.awt.Color(255, 255, 255)); + minusButton.setFont(new java.awt.Font("Arial", 1, 24)); + minusButton.setText("-"); + leftPanel.add(minusButton); + + strumPanel.setBackground(new java.awt.Color(0, 0, 0)); + strumPanel.setLayout(new javax.swing.BoxLayout(strumPanel, javax.swing.BoxLayout.Y_AXIS)); + + strumUpButton.setBackground(new java.awt.Color(255, 255, 255)); + strumUpButton.setFont(new java.awt.Font("Arial", 1, 24)); + strumUpButton.setText("Strum UP"); + strumPanel.add(strumUpButton); + + strumDownButton.setBackground(new java.awt.Color(255, 255, 255)); + strumDownButton.setFont(new java.awt.Font("Arial", 1, 24)); + strumDownButton.setText("Strum DOWN"); + strumPanel.add(strumDownButton); + + leftPanel.add(strumPanel); + + add(leftPanel); + + RightPanel.setBackground(new java.awt.Color(0, 0, 0)); + RightPanel.setLayout(new javax.swing.BoxLayout(RightPanel, javax.swing.BoxLayout.LINE_AXIS)); + + coloredButtonsPanel.setLayout(new javax.swing.BoxLayout(coloredButtonsPanel, javax.swing.BoxLayout.LINE_AXIS)); + + orangeButton.setBackground(new java.awt.Color(255, 153, 0)); + orangeButton.setFont(new java.awt.Font("Arial", 1, 24)); + orangeButton.setText("O"); + coloredButtonsPanel.add(orangeButton); + + blueButton.setBackground(new java.awt.Color(0, 0, 204)); + blueButton.setFont(new java.awt.Font("Arial", 1, 24)); + blueButton.setText("O"); + coloredButtonsPanel.add(blueButton); + + yellowButton.setBackground(new java.awt.Color(255, 255, 0)); + yellowButton.setFont(new java.awt.Font("Arial", 1, 24)); + yellowButton.setText("O"); + coloredButtonsPanel.add(yellowButton); + + redButton.setBackground(new java.awt.Color(255, 0, 0)); + redButton.setFont(new java.awt.Font("Arial", 1, 24)); + redButton.setText("O"); + coloredButtonsPanel.add(redButton); + + greenButton.setBackground(new java.awt.Color(51, 255, 0)); + greenButton.setFont(new java.awt.Font("Arial", 1, 24)); + greenButton.setText("O"); + coloredButtonsPanel.add(greenButton); + + RightPanel.add(coloredButtonsPanel); + + add(RightPanel); + }// //GEN-END:initComponents + public void onButtonsEvent(WiimoteButtonsEvent arg0) { + //do nothing + } + + public void onIrEvent(IREvent arg0) { + //do nothing + } + + public void onMotionSensingEvent(MotionSensingEvent arg0) { + //do nothing + } + + public void onExpansionEvent(ExpansionEvent arg0) { + if (arg0 instanceof GuitarHeroEvent) { + GuitarHeroEvent guitar = (GuitarHeroEvent) arg0; + GuitarHeroButtonsEvent buttons = guitar.getButtonsEvent(); + + //orange button + if (buttons.isButtonOrangeJustPressed()) { + orangeButton.setSelected(true); + orangeButton.setText("X"); + } else if (buttons.isButtonOrangeJustReleased()) { + orangeButton.setSelected(false); + orangeButton.setText("O"); + } + + //blue button + if (buttons.isButtonBlueJustPressed()) { + blueButton.setSelected(true); + blueButton.setText("X"); + } else if (buttons.isButtonBlueJustReleased()) { + blueButton.setSelected(false); + blueButton.setText("O"); + } + + //Yellow button + if (buttons.isButtonYellowJustPressed()) { + yellowButton.setSelected(true); + yellowButton.setText("X"); + } else if (buttons.isButtonYellowJustReleased()) { + yellowButton.setSelected(false); + yellowButton.setText("O"); + } + + //Red button + if (buttons.isButtonRedJustPressed()) { + redButton.setSelected(true); + redButton.setText("X"); + } else if (buttons.isButtonRedJustReleased()) { + redButton.setSelected(false); + redButton.setText("O"); + } + + //Green button + if (buttons.isButtonGreenJustPressed()) { + greenButton.setSelected(true); + greenButton.setText("X"); + } else if (buttons.isButtonGreenJustReleased()) { + greenButton.setSelected(false); + greenButton.setText("O"); + } + + //Plus button + if (buttons.isButtonPlusJustPressed()) { + plusButton.setSelected(true); + } else if (buttons.isButtonPlusJustReleased()) { + plusButton.setSelected(false); + } + + //Minus button + if (buttons.isButtonMinusJustPressed()) { + minusButton.setSelected(true); + } else if (buttons.isButtonMinusJustReleased()) { + minusButton.setSelected(false); + } + + //Strum up button + if (buttons.isButtonStrumUpJustPressed()) { + strumUpButton.setSelected(true); + } else if (buttons.isButtonStrumUpJustReleased()) { + strumUpButton.setSelected(false); + } + + //Strum down button + if (buttons.isButtonStrumDownJustPressed()) { + strumDownButton.setSelected(true); + } else if (buttons.isButtonStrumDownJustReleased()) { + strumDownButton.setSelected(false); + } + } + } + + public void onStatusEvent(StatusEvent arg0) { + //do nothing + } + + public void onDisconnectionEvent(DisconnectionEvent arg0) { + //do nothing + } + + public void onNunchukInsertedEvent(NunchukInsertedEvent arg0) { + //do nothing + } + + public void onNunchukRemovedEvent(NunchukRemovedEvent arg0) { + //do nothing + } + + public void onGuitarHeroInsertedEvent(GuitarHeroInsertedEvent arg0) { + //do nothing + } + + public void onGuitarHeroRemovedEvent(GuitarHeroRemovedEvent arg0) { + //do nothing + } + + public void onClassicControllerInsertedEvent(ClassicControllerInsertedEvent arg0) { + //do nothing + } + + public void onClassicControllerRemovedEvent(ClassicControllerRemovedEvent arg0) { + //do nothing + } + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JPanel RightPanel; + private javax.swing.JToggleButton blueButton; + private javax.swing.JPanel coloredButtonsPanel; + private javax.swing.JToggleButton greenButton; + private javax.swing.JPanel leftPanel; + private javax.swing.JToggleButton minusButton; + private javax.swing.JToggleButton orangeButton; + private javax.swing.JToggleButton plusButton; + private javax.swing.JToggleButton redButton; + private javax.swing.JToggleButton strumDownButton; + private javax.swing.JPanel strumPanel; + private javax.swing.JToggleButton strumUpButton; + private javax.swing.JToggleButton yellowButton; + // End of variables declaration//GEN-END:variables +} diff --git a/java/src/wiiusej/utils/GuitarHeroJoystickEventPanel.java b/java/src/wiiusej/utils/GuitarHeroJoystickEventPanel.java new file mode 100644 index 0000000..6fd906f --- /dev/null +++ b/java/src/wiiusej/utils/GuitarHeroJoystickEventPanel.java @@ -0,0 +1,39 @@ +/** + * This file is part of WiiuseJ. + * + * WiiuseJ is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * WiiuseJ is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * + * You should have received a copy of the GNU General Public License + * along with WiiuseJ. If not, see . + */ +package wiiusej.utils; + +import wiiusej.wiiusejevents.physicalevents.ExpansionEvent; +import wiiusej.wiiusejevents.physicalevents.GuitarHeroEvent; +import wiiusej.wiiusejevents.physicalevents.JoystickEvent; + +/** + * Panel to display Guitar Hero 3 controller joystick events. + * + * @author guiguito + */ +public class GuitarHeroJoystickEventPanel extends JoystickEventPanel{ + + @Override + public JoystickEvent getJoystickEvent(ExpansionEvent e) { + if (e instanceof GuitarHeroEvent){ + return ((GuitarHeroEvent)e).getGuitarHeroJoystickEvent(); + } + return null; + } + +} diff --git a/java/src/wiiusej/utils/IRPanel.java b/java/src/wiiusej/utils/IRPanel.java new file mode 100644 index 0000000..9d4cf79 --- /dev/null +++ b/java/src/wiiusej/utils/IRPanel.java @@ -0,0 +1,275 @@ +/** + * This file is part of WiiuseJ. + * + * WiiuseJ is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * WiiuseJ is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with WiiuseJ. If not, see . + */ +package wiiusej.utils; + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Image; +import java.awt.RenderingHints; +import java.awt.Shape; +import java.awt.geom.AffineTransform; + +import wiiusej.wiiusejevents.physicalevents.ExpansionEvent; +import wiiusej.wiiusejevents.physicalevents.IREvent; +import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent; +import wiiusej.wiiusejevents.physicalevents.WiimoteButtonsEvent; +import wiiusej.wiiusejevents.utils.WiimoteListener; +import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.DisconnectionEvent; +import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.NunchukInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.NunchukRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.StatusEvent; + +/** + * This panel is used to see what the IR camera of the wiimote sees. + * + * @author guiguito + */ +public class IRPanel extends javax.swing.JPanel implements WiimoteListener { + + private static int MAX_NB_POINTS = 4; + private Color color = Color.YELLOW; + private Color backgroundColor = Color.BLACK; + private Color borderColor = Color.BLUE; + private Shape shape; + private Image mImage;// image for double buffering + private int[] xCoordinates; + private int[] yCoordinates; + private int nbPoints = -1; + + /** + * Default constructor for IR Panel. Background color : black. IR sources + * color : yellow. Border color of IR sources : blue. Shape of the IR + * sources : circle with a diameter of 10. + */ + public IRPanel() { + shape = new java.awt.geom.Ellipse2D.Double(0, 0, 10, 10); + initArrays(); + initComponents(); + } + + /** + * Constructor used to parameterize the IR panel. + * + * @param bgColor + * color. + * @param ptColor + * IR sources color. + * @param bdColor + * border color of IR sources. + * @param sh + * Shape of the IR sources. + */ + public IRPanel(Color bgColor, Color ptColor, Color bdColor, Shape sh) { + backgroundColor = bgColor; + color = ptColor; + borderColor = bdColor; + shape = sh; + initArrays(); + initComponents(); + } + + private void initArrays() { + xCoordinates = new int[MAX_NB_POINTS]; + yCoordinates = new int[MAX_NB_POINTS]; + for (int i = 0; i < MAX_NB_POINTS; i++) { + xCoordinates[i] = -1; + yCoordinates[i] = -1; + } + } + + @Override + public void paintComponent(Graphics g) { + super.paintComponent(g); + Dimension d = getSize(); + checkOffScreenImage(); + Graphics offG = mImage.getGraphics(); + offG.setColor(backgroundColor); + offG.fillRect(0, 0, d.width, d.height); + Graphics2D g2 = (Graphics2D) mImage.getGraphics(); + g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_ON); + + // draw points + int i = 0; + while (i < nbPoints) { + double x = xCoordinates[i]; + double y = yCoordinates[i]; + + long xx = getWidth() - Math.round((double) getWidth() * x / 1024.0); + long yy = getHeight() + - Math.round((double) getHeight() * y / 768.0); + g2.translate(xx, yy); + + g2.setPaint(borderColor); + g2.draw(shape); + g2.setPaint(color); + g2.fill(shape); + + g2.setTransform(new AffineTransform()); + i++; + } + // put offscreen image on the screen + g.drawImage(mImage, 0, 0, null); + } + + /** + * check if the mImage variable has been initialized. If it's not the case + * it initializes it with the dimensions of the panel. mImage is for double + * buffering. + */ + private void checkOffScreenImage() { + Dimension d = getSize(); + if (mImage == null || mImage.getWidth(null) != d.width + || mImage.getHeight(null) != d.height) { + mImage = createImage(d.width, d.height); + } + } + + public void onButtonsEvent(WiimoteButtonsEvent arg0) { + // nothing + repaint(); + } + + public void onIrEvent(IREvent arg0) { + // transfer points + wiiusej.values.IRSource[] points = arg0.getIRPoints(); + nbPoints = points.length; + for (int i = 0; i < points.length; i++) { + xCoordinates[i] = (int) points[i].getRx(); + yCoordinates[i] = (int) points[i].getRy(); + } + for (int i = points.length; i < MAX_NB_POINTS; i++) { + xCoordinates[i] = -1; + yCoordinates[i] = -1; + } + + // redraw panel + repaint(); + } + + public void onMotionSensingEvent(MotionSensingEvent arg0) { + // nothing + } + + public void onExpansionEvent(ExpansionEvent e) { + // nothing + } + + public void onStatusEvent(StatusEvent arg0) { + // nothing + } + + public void onDisconnectionEvent(DisconnectionEvent arg0) { + // clear previous points + for (int i = 0; i < MAX_NB_POINTS; i++) { + xCoordinates[i] = -1; + yCoordinates[i] = -1; + } + // redraw panel + repaint(); + } + + public void onNunchukInsertedEvent(NunchukInsertedEvent e) { + // nothing + } + + public void onNunchukRemovedEvent(NunchukRemovedEvent e) { + // nothing + } + + public void onGuitarHeroInsertedEvent(GuitarHeroInsertedEvent arg0) { + // nothing + } + + public void onGuitarHeroRemovedEvent(GuitarHeroRemovedEvent arg0) { + // nothing + } + + public void onClassicControllerInsertedEvent( + ClassicControllerInsertedEvent arg0) { + // nothing + } + + public void onClassicControllerRemovedEvent( + ClassicControllerRemovedEvent arg0) { + // nothing + } + + public Color getBackgroundColor() { + return backgroundColor; + } + + public Color getBorderColor() { + return borderColor; + } + + public Color getColor() { + return color; + } + + public Shape getShape() { + return shape; + } + + public void setBackgroundColor(Color backgroundColor) { + this.backgroundColor = backgroundColor; + } + + public void setBorderColor(Color borderColor) { + this.borderColor = borderColor; + } + + public void setColor(Color color) { + this.color = color; + } + + public void setShape(Shape shape) { + this.shape = shape; + } + + public void clearView() { + initArrays(); + repaint(); + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + // //GEN-BEGIN:initComponents + private void initComponents() { + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup(layout.createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 400, + Short.MAX_VALUE)); + layout.setVerticalGroup(layout.createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 300, + Short.MAX_VALUE)); + }// //GEN-END:initComponents + // Variables declaration - do not modify//GEN-BEGIN:variables + // End of variables declaration//GEN-END:variables +} diff --git a/java/src/wiiusej/utils/JoystickEventPanel.java b/java/src/wiiusej/utils/JoystickEventPanel.java new file mode 100644 index 0000000..2883216 --- /dev/null +++ b/java/src/wiiusej/utils/JoystickEventPanel.java @@ -0,0 +1,248 @@ +/** + * This file is part of WiiuseJ. + * + * WiiuseJ is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * WiiuseJ is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with WiiuseJ. If not, see . + */ +package wiiusej.utils; + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Image; +import java.awt.RenderingHints; +import java.awt.Shape; +import java.awt.geom.AffineTransform; +import wiiusej.wiiusejevents.physicalevents.ExpansionEvent; +import wiiusej.wiiusejevents.physicalevents.IREvent; +import wiiusej.wiiusejevents.physicalevents.JoystickEvent; +import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent; +import wiiusej.wiiusejevents.physicalevents.WiimoteButtonsEvent; +import wiiusej.wiiusejevents.utils.WiimoteListener; +import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.DisconnectionEvent; +import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.NunchukInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.NunchukRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.StatusEvent; + +/** + * Panel to display joystick events. + * + * @author guiguito + */ +public abstract class JoystickEventPanel extends javax.swing.JPanel implements + WiimoteListener { + + private Image mImage;// image for double buffering + private Color backgroundColor = Color.BLACK; + private Color borderColor = Color.RED; + private Color pointColor = Color.RED; + private Shape shape = new java.awt.geom.Ellipse2D.Double(0, 0, 30, 30); + private JoystickEvent lastJoystickEvent = null; + + /** Creates new form JoystickPanel */ + public JoystickEventPanel() { + initComponents(); + } + + /** + * Constructor used to choose the colors used by the JoystickPanel. + * + * @param bgColor + * background color. + * @param pColor + * point color. + * @param bdColor + * border color for the shape. + * @param sh + * shape of what is drawn. + */ + public JoystickEventPanel(Color bgColor, Color pColor, Color bdColor, + Shape sh) { + backgroundColor = bgColor; + pointColor = pColor; + shape = sh; + borderColor = bdColor; + initComponents(); + } + + @Override + public void paintComponent(Graphics g) { + super.paintComponent(g); + Dimension d = getSize(); + checkOffScreenImage(); + Graphics offG = mImage.getGraphics(); + offG.setColor(backgroundColor); + offG.fillRect(0, 0, d.width, d.height); + Graphics2D g2 = (Graphics2D) mImage.getGraphics(); + g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_ON); + g2.setTransform(new AffineTransform()); + + // compute center + int xCenter = (int) Math.round(d.getWidth() / 2.0); + int yCenter = (int) Math.round(d.getHeight() / 2.0); + + // compute coordinates + if (lastJoystickEvent != null) { + double xAng = Math.sin(lastJoystickEvent.getAngle() * Math.PI + / 180.0) + * lastJoystickEvent.getMagnitude(); + double yAng = Math.cos(lastJoystickEvent.getAngle() * Math.PI + / 180.0) + * lastJoystickEvent.getMagnitude(); + int halfWidth = (int) Math.round(shape.getBounds().getWidth() / 2); + int halHeight = (int) Math.round(shape.getBounds().getHeight() / 2); + int xAmplitude = (int) Math.round(xCenter - shape.getBounds().getWidth()); + int yAmplitude = (int) Math.round(xCenter - shape.getBounds().getHeight()); + int xShift = (int) Math.round(xAng * xAmplitude); + int yShift = (int) Math.round(yAng * yAmplitude); + int x = xCenter + xShift - halfWidth; + int y = yCenter - yShift - halHeight; + // shape + g2.translate(x, y); + g2.setPaint(borderColor); + g2.draw(shape); + g2.setPaint(pointColor); + g2.fill(shape); + } + // put offscreen image on the screen + g.drawImage(mImage, 0, 0, null); + } + + /** + * check if the mImage variable has been initialized. If it's not the case + * it initializes it with the dimensions of the panel. mImage is for double + * buffering. + */ + private void checkOffScreenImage() { + Dimension d = getSize(); + if (mImage == null || mImage.getWidth(null) != d.width + || mImage.getHeight(null) != d.height) { + mImage = createImage(d.width, d.height); + } + } + + public void onButtonsEvent(WiimoteButtonsEvent arg0) { + // nothing + } + + public void onIrEvent(IREvent arg0) { + // nothing + } + + public void onMotionSensingEvent(MotionSensingEvent arg0) { + // nothing + } + + public void onExpansionEvent(ExpansionEvent arg0) { + JoystickEvent joy = getJoystickEvent(arg0); + if (joy != null) { + lastJoystickEvent = joy; + } + repaint(); + } + + public void onStatusEvent(StatusEvent arg0) { + // nothing + } + + public void onDisconnectionEvent(DisconnectionEvent arg0) { + // nothing + } + + public void onNunchukInsertedEvent(NunchukInsertedEvent arg0) { + // nothing + } + + public void onNunchukRemovedEvent(NunchukRemovedEvent arg0) { + // nothing + } + + public void onGuitarHeroInsertedEvent(GuitarHeroInsertedEvent arg0) { + // nothing + } + + public void onGuitarHeroRemovedEvent(GuitarHeroRemovedEvent arg0) { + // nothing + } + + public void onClassicControllerInsertedEvent( + ClassicControllerInsertedEvent arg0) { + // nothing + } + + public void onClassicControllerRemovedEvent( + ClassicControllerRemovedEvent arg0) { + // nothing + } + + public Color getBackgroundColor() { + return backgroundColor; + } + + public Color getPointColor() { + return pointColor; + } + + public Color getBorderColor() { + return borderColor; + } + + public Shape getShape() { + return shape; + } + + public void setBackgroundColor(Color backgroundColor) { + this.backgroundColor = backgroundColor; + } + + public void setPointColor(Color pointColor) { + this.pointColor = pointColor; + } + + public void setBorderColor(Color borderColor) { + this.borderColor = borderColor; + } + + public void setShape(Shape shape) { + this.shape = shape; + } + + public abstract JoystickEvent getJoystickEvent(ExpansionEvent e); + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + // //GEN-BEGIN:initComponents + private void initComponents() { + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup(layout.createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 400, + Short.MAX_VALUE)); + layout.setVerticalGroup(layout.createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 300, + Short.MAX_VALUE)); + }// //GEN-END:initComponents + // Variables declaration - do not modify//GEN-BEGIN:variables + // End of variables declaration//GEN-END:variables +} diff --git a/java/src/wiiusej/utils/NunchukJoystickEventPanel.java b/java/src/wiiusej/utils/NunchukJoystickEventPanel.java new file mode 100644 index 0000000..9d088bc --- /dev/null +++ b/java/src/wiiusej/utils/NunchukJoystickEventPanel.java @@ -0,0 +1,38 @@ +/** + * This file is part of WiiuseJ. + * + * WiiuseJ is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * WiiuseJ is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * + * You should have received a copy of the GNU General Public License + * along with WiiuseJ. If not, see . + */ +package wiiusej.utils; + +import wiiusej.wiiusejevents.physicalevents.ExpansionEvent; +import wiiusej.wiiusejevents.physicalevents.JoystickEvent; +import wiiusej.wiiusejevents.physicalevents.NunchukEvent; + +/** + * Panel to display nunchuk joystick events. + * + * @author guiguito + */ +public class NunchukJoystickEventPanel extends JoystickEventPanel { + + @Override + public JoystickEvent getJoystickEvent(ExpansionEvent e) { + if (e instanceof NunchukEvent) { + return ((NunchukEvent) e).getNunchukJoystickEvent(); + } + return null; + } +} diff --git a/java/src/wiiusej/utils/OrientationExpansionEventPanel.java b/java/src/wiiusej/utils/OrientationExpansionEventPanel.java new file mode 100644 index 0000000..f5e3856 --- /dev/null +++ b/java/src/wiiusej/utils/OrientationExpansionEventPanel.java @@ -0,0 +1,38 @@ +/** + * This file is part of WiiuseJ. + * + * WiiuseJ is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * WiiuseJ is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with WiiuseJ. If not, see . + */ +package wiiusej.utils; + +import wiiusej.values.Orientation; +import wiiusej.wiiusejevents.GenericEvent; +import wiiusej.wiiusejevents.physicalevents.NunchukEvent; + +/** + * Panel to display Orientation in a MotionSensingEvent from an expansion. + * + * @author guiguito + */ +public class OrientationExpansionEventPanel extends OrientationPanel { + + @Override + public Orientation getOrientationValue(GenericEvent e) { + if (e instanceof NunchukEvent) { + return ((NunchukEvent) e).getNunchukMotionSensingEvent() + .getOrientation(); + } + return null; + } +} diff --git a/java/src/wiiusej/utils/OrientationPanel.java b/java/src/wiiusej/utils/OrientationPanel.java new file mode 100644 index 0000000..839fdfd --- /dev/null +++ b/java/src/wiiusej/utils/OrientationPanel.java @@ -0,0 +1,305 @@ +/** + * This file is part of WiiuseJ. + * + * WiiuseJ is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * WiiuseJ is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with WiiuseJ. If not, see . + */ +package wiiusej.utils; + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Image; +import java.awt.RenderingHints; +import java.awt.geom.AffineTransform; +import java.util.ArrayList; + +import wiiusej.values.Orientation; +import wiiusej.wiiusejevents.GenericEvent; +import wiiusej.wiiusejevents.physicalevents.ExpansionEvent; +import wiiusej.wiiusejevents.physicalevents.IREvent; +import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent; +import wiiusej.wiiusejevents.physicalevents.WiimoteButtonsEvent; +import wiiusej.wiiusejevents.utils.WiimoteListener; +import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.DisconnectionEvent; +import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.NunchukInsertedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.NunchukRemovedEvent; +import wiiusej.wiiusejevents.wiiuseapievents.StatusEvent; + +/** + * This panel is used to watch orientation values from a MotionSensingEvent. + * + * @author guiguito + */ +public abstract class OrientationPanel extends javax.swing.JPanel implements + WiimoteListener { + + private Image mImage;// image for double buffering + private Color rollColor = Color.RED; + private Color pitchColor = Color.GREEN; + private Color yawColor = Color.BLUE; + private Color backgroundColor = Color.WHITE; + private Color lineColor = Color.BLACK; + private ArrayList values = new ArrayList(); + + /** + * Default constructor. Background color : White. Roll color : Red. Pitch + * color : Green. Yaw color : Blue. + */ + public OrientationPanel() { + initComponents(); + } + + /** + * Constructor used to choose the colors used by the OrientationPanel. + * + * @param bgColor + * background color. + * @param rColor + * roll color. + * @param pColor + * pitch color. + * @param yColor + * yaw color. + * @param lColor + * line color. + */ + public OrientationPanel(Color bgColor, Color rColor, Color pColor, + Color yColor, Color lColor) { + backgroundColor = bgColor; + rollColor = rColor; + pitchColor = pColor; + yawColor = yColor; + lineColor = lColor; + initComponents(); + } + + @Override + public void paintComponent(Graphics g) { + super.paintComponent(g); + Dimension d = getSize(); + checkOffScreenImage(); + Graphics offG = mImage.getGraphics(); + offG.setColor(backgroundColor); + offG.fillRect(0, 0, d.width, d.height); + Graphics2D g2 = (Graphics2D) mImage.getGraphics(); + g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_ON); + + // draw medium line + double yMiddleFloat = getHeight() / 2.0; + int yMiddle = (int) Math.round(yMiddleFloat); + + g2.setPaint(lineColor); + g2.drawLine(0, yMiddle, getWidth(), yMiddle); + + Orientation[] valuesArray = values.toArray(new Orientation[0]); + double unit = yMiddleFloat / 180.0; + int previousRoll = 0; + int previousPitch = 0; + int previousYaw = 0; + // draw curves + for (int i = 0; i < valuesArray.length && i < getWidth(); i++) { + Orientation orientation = valuesArray[i]; + // draw roll + g2.setPaint(rollColor); + int yDelta = (int) Math.round(unit * orientation.getRoll()); + int y = -1 * yDelta + yMiddle; + g2.drawLine(i - 1, previousRoll, i, y); + g2.setTransform(new AffineTransform()); + previousRoll = y; + // draw pitch + g2.setPaint(pitchColor); + yDelta = (int) Math.round(unit * orientation.getPitch()); + y = -1 * yDelta + yMiddle; + g2.drawLine(i - 1, previousPitch, i, y); + g2.setTransform(new AffineTransform()); + previousPitch = y; + // draw yaw + g2.setPaint(yawColor); + yDelta = (int) Math.round(unit * orientation.getYaw()); + y = -1 * yDelta + yMiddle; + g2.drawLine(i - 1, previousYaw, i, y); + g2.setTransform(new AffineTransform()); + previousYaw = y; + } + + // draw legend + g2.setPaint(rollColor); + g2.drawLine(5, getHeight() - 10, 25, getHeight() - 10); + g2.setPaint(pitchColor); + g2.drawLine(60, getHeight() - 10, 80, getHeight() - 10); + g2.setPaint(yawColor); + g2.drawLine(120, getHeight() - 10, 140, getHeight() - 10); + + g2.setPaint(lineColor); + g2.drawString("Roll", 30, getHeight() - 5); + g2.drawString("Pitch", 85, getHeight() - 5); + g2.drawString("Yaw", 145, getHeight() - 5); + g2.drawString("0", 2, yMiddle - 5); + g2.drawString("180", 2, 10); + g2.drawString("-180", 2, getHeight() - 15); + // put offscreen image on the screen + g.drawImage(mImage, 0, 0, null); + } + + /** + * check if the mImage variable has been initialized. If it's not the case + * it initializes it with the dimensions of the panel. mImage is for double + * buffering. + */ + private void checkOffScreenImage() { + Dimension d = getSize(); + if (mImage == null || mImage.getWidth(null) != d.width + || mImage.getHeight(null) != d.height) { + mImage = createImage(d.width, d.height); + } + } + + public void onButtonsEvent(WiimoteButtonsEvent arg0) { + // nothing + } + + public void onIrEvent(IREvent arg0) { + // nothing + } + + public void onMotionSensingEvent(MotionSensingEvent arg0) { + draw(arg0); + } + + public void onExpansionEvent(ExpansionEvent arg0) { + draw(arg0); + } + + public void onStatusEvent(StatusEvent arg0) { + // nothing + } + + public void onDisconnectionEvent(DisconnectionEvent arg0) { + // Clear points. + values.clear(); + repaint(); + } + + public void onNunchukInsertedEvent(NunchukInsertedEvent arg0) { + // nothing + } + + public void onNunchukRemovedEvent(NunchukRemovedEvent arg0) { + // nothing + } + + public void onGuitarHeroInsertedEvent(GuitarHeroInsertedEvent arg0) { + // nothing + } + + public void onGuitarHeroRemovedEvent(GuitarHeroRemovedEvent arg0) { + // nothing + } + + public void onClassicControllerInsertedEvent( + ClassicControllerInsertedEvent arg0) { + // nothing + } + + public void onClassicControllerRemovedEvent( + ClassicControllerRemovedEvent arg0) { + // nothing + } + + private void draw(GenericEvent arg0) { + if (values.size() >= getWidth()) { + // if there are as many values as pixels in the width + // clear points + values.clear(); + } + Orientation orientation = getOrientationValue(arg0); + if (orientation != null) + values.add(orientation); + repaint(); + } + + public abstract Orientation getOrientationValue(GenericEvent e); + + public Color getBackgroundColor() { + return backgroundColor; + } + + public Color getLineColor() { + return lineColor; + } + + public Color getPitchColor() { + return pitchColor; + } + + public Color getRollColor() { + return rollColor; + } + + public Color getYawColor() { + return yawColor; + } + + public void setBackgroundColor(Color backgroundColor) { + this.backgroundColor = backgroundColor; + } + + public void setLineColor(Color lineColor) { + this.lineColor = lineColor; + } + + public void setPitchColor(Color pitchColor) { + this.pitchColor = pitchColor; + } + + public void setRollColor(Color rollColor) { + this.rollColor = rollColor; + } + + public void setYawColor(Color yawColor) { + this.yawColor = yawColor; + } + + public void clearView() { + values.clear(); + repaint(); + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + // //GEN-BEGIN:initComponents + private void initComponents() { + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup(layout.createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 400, + Short.MAX_VALUE)); + layout.setVerticalGroup(layout.createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 300, + Short.MAX_VALUE)); + }// //GEN-END:initComponents + // Variables declaration - do not modify//GEN-BEGIN:variables + // End of variables declaration//GEN-END:variables +} diff --git a/java/src/wiiusej/utils/OrientationWiimoteEventPanel.java b/java/src/wiiusej/utils/OrientationWiimoteEventPanel.java new file mode 100644 index 0000000..e38f3c9 --- /dev/null +++ b/java/src/wiiusej/utils/OrientationWiimoteEventPanel.java @@ -0,0 +1,38 @@ +/** + * This file is part of WiiuseJ. + * + * WiiuseJ is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * WiiuseJ is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with WiiuseJ. If not, see . + */ +package wiiusej.utils; + +import wiiusej.values.Orientation; +import wiiusej.wiiusejevents.GenericEvent; +import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent; + +/** + * Panel to display Orientation in a MotionSensingEvent from a wiimote. + * + * @author guiguito + */ +public class OrientationWiimoteEventPanel extends OrientationPanel { + + @Override + public Orientation getOrientationValue(GenericEvent e) { + if (e instanceof MotionSensingEvent) { + return ((MotionSensingEvent) e).getOrientation(); + } + return null; + } + +} diff --git a/java/src/wiiusej/wiiusejevents/physicalevents/ClassicControllerButtonsEvent.java b/java/src/wiiusej/wiiusejevents/physicalevents/ClassicControllerButtonsEvent.java index f3a2f54..347e27c 100644 --- a/java/src/wiiusej/wiiusejevents/physicalevents/ClassicControllerButtonsEvent.java +++ b/java/src/wiiusej/wiiusejevents/physicalevents/ClassicControllerButtonsEvent.java @@ -56,7 +56,7 @@ public class ClassicControllerButtonsEvent extends ButtonsEvent{ super(id, buttonsJustPressed, buttonsJustReleased, buttonsHeld); } - /* WorkerButton LEFT */ + /* Button LEFT */ public boolean isButtonLeftJustPressed() { return isButtonJustPressed(CLASSIC_CTRL_BUTTON_LEFT); @@ -74,7 +74,7 @@ public class ClassicControllerButtonsEvent extends ButtonsEvent{ return isButtonPressed(CLASSIC_CTRL_BUTTON_LEFT); } - /* WorkerButton RIGHT */ + /* Button RIGHT */ public boolean isButtonRightJustPressed() { return isButtonJustPressed(CLASSIC_CTRL_BUTTON_RIGHT); @@ -92,7 +92,7 @@ public class ClassicControllerButtonsEvent extends ButtonsEvent{ return isButtonPressed(CLASSIC_CTRL_BUTTON_RIGHT); } - /* WorkerButton UP */ + /* Button UP */ public boolean isButtonUpJustPressed() { return isButtonJustPressed(CLASSIC_CTRL_BUTTON_UP); @@ -110,7 +110,7 @@ public class ClassicControllerButtonsEvent extends ButtonsEvent{ return isButtonPressed(CLASSIC_CTRL_BUTTON_UP); } - /* WorkerButton DOWN */ + /* Button DOWN */ public boolean isButtonDownJustPressed() { return isButtonJustPressed(CLASSIC_CTRL_BUTTON_DOWN); @@ -128,7 +128,7 @@ public class ClassicControllerButtonsEvent extends ButtonsEvent{ return isButtonPressed(CLASSIC_CTRL_BUTTON_DOWN); } - /* WorkerButton A */ + /* Button A */ public boolean isButtonAJustPressed() { return isButtonJustPressed(CLASSIC_CTRL_BUTTON_A); @@ -146,7 +146,7 @@ public class ClassicControllerButtonsEvent extends ButtonsEvent{ return isButtonPressed(CLASSIC_CTRL_BUTTON_A); } - /* WorkerButton B */ + /* Button B */ public boolean isButtonBJustPressed() { return isButtonJustPressed(CLASSIC_CTRL_BUTTON_B); @@ -164,7 +164,7 @@ public class ClassicControllerButtonsEvent extends ButtonsEvent{ return isButtonPressed(CLASSIC_CTRL_BUTTON_B); } - /* WorkerButton X */ + /* Button X */ public boolean isButtonXJustPressed() { return isButtonJustPressed(CLASSIC_CTRL_BUTTON_X); @@ -182,7 +182,7 @@ public class ClassicControllerButtonsEvent extends ButtonsEvent{ return isButtonPressed(CLASSIC_CTRL_BUTTON_X); } - /* WorkerButton Y */ + /* Button Y */ public boolean isButtonYJustPressed() { return isButtonJustPressed(CLASSIC_CTRL_BUTTON_Y); @@ -200,7 +200,7 @@ public class ClassicControllerButtonsEvent extends ButtonsEvent{ return isButtonPressed(CLASSIC_CTRL_BUTTON_Y); } - /* WorkerButton FullLeft */ + /* Button FullLeft */ public boolean isButtonFullLeftJustPressed() { return isButtonJustPressed(CLASSIC_CTRL_BUTTON_FULL_L); @@ -218,7 +218,7 @@ public class ClassicControllerButtonsEvent extends ButtonsEvent{ return isButtonPressed(CLASSIC_CTRL_BUTTON_FULL_L); } - /* WorkerButton FullRight */ + /* Button FullRight */ public boolean isButtonFullRightJustPressed() { return isButtonJustPressed(CLASSIC_CTRL_BUTTON_FULL_R); @@ -236,7 +236,7 @@ public class ClassicControllerButtonsEvent extends ButtonsEvent{ return isButtonPressed(CLASSIC_CTRL_BUTTON_FULL_R); } - /* WorkerButton Home */ + /* Button Home */ public boolean isButtonHomeJustPressed() { return isButtonJustPressed(CLASSIC_CTRL_BUTTON_HOME); @@ -254,7 +254,7 @@ public class ClassicControllerButtonsEvent extends ButtonsEvent{ return isButtonPressed(CLASSIC_CTRL_BUTTON_HOME); } - /* WorkerButton Minus */ + /* Button Minus */ public boolean isButtonMinusJustPressed() { return isButtonJustPressed(CLASSIC_CTRL_BUTTON_MINUS); @@ -272,7 +272,7 @@ public class ClassicControllerButtonsEvent extends ButtonsEvent{ return isButtonPressed(CLASSIC_CTRL_BUTTON_MINUS); } - /* WorkerButton Plus */ + /* Button Plus */ public boolean isButtonPlusJustPressed() { return isButtonJustPressed(CLASSIC_CTRL_BUTTON_PLUS); @@ -290,7 +290,7 @@ public class ClassicControllerButtonsEvent extends ButtonsEvent{ return isButtonPressed(CLASSIC_CTRL_BUTTON_PLUS); } - /* WorkerButton ZL */ + /* Button ZL */ public boolean isButtonZLJustPressed() { return isButtonJustPressed(CLASSIC_CTRL_BUTTON_ZL); @@ -308,7 +308,7 @@ public class ClassicControllerButtonsEvent extends ButtonsEvent{ return isButtonPressed(CLASSIC_CTRL_BUTTON_ZL); } - /* WorkerButton ZR */ + /* Button ZR */ public boolean isButtonZRJustPressed() { return isButtonJustPressed(CLASSIC_CTRL_BUTTON_ZR); diff --git a/java/src/wiiusej/wiiusejevents/physicalevents/GuitarHeroButtonsEvent.java b/java/src/wiiusej/wiiusejevents/physicalevents/GuitarHeroButtonsEvent.java index 174671d..df04048 100644 --- a/java/src/wiiusej/wiiusejevents/physicalevents/GuitarHeroButtonsEvent.java +++ b/java/src/wiiusej/wiiusejevents/physicalevents/GuitarHeroButtonsEvent.java @@ -50,7 +50,7 @@ public class GuitarHeroButtonsEvent extends ButtonsEvent { super(id, buttonsJustPressed, buttonsJustReleased, buttonsHeld); } - /* WorkerButton Strum Up */ + /* Button Strum Up */ public boolean isButtonStrumUpJustPressed() { return isButtonJustPressed(GUITAR_HERO_3_BUTTON_STRUM_UP); @@ -68,7 +68,7 @@ public class GuitarHeroButtonsEvent extends ButtonsEvent { return isButtonPressed(GUITAR_HERO_3_BUTTON_STRUM_UP); } - /* WorkerButton Strum Down */ + /* Button Strum Down */ public boolean isButtonStrumDownJustPressed() { return isButtonJustPressed(GUITAR_HERO_3_BUTTON_STRUM_DOWN); @@ -86,7 +86,7 @@ public class GuitarHeroButtonsEvent extends ButtonsEvent { return isButtonPressed(GUITAR_HERO_3_BUTTON_STRUM_DOWN); } - /* WorkerButton blue */ + /* Button blue */ public boolean isButtonBlueJustPressed() { return isButtonJustPressed(GUITAR_HERO_3_BUTTON_BLUE); @@ -104,7 +104,7 @@ public class GuitarHeroButtonsEvent extends ButtonsEvent { return isButtonPressed(GUITAR_HERO_3_BUTTON_BLUE); } - /* WorkerButton Green */ + /* Button Green */ public boolean isButtonGreenJustPressed() { return isButtonJustPressed(GUITAR_HERO_3_BUTTON_GREEN); @@ -122,7 +122,7 @@ public class GuitarHeroButtonsEvent extends ButtonsEvent { return isButtonPressed(GUITAR_HERO_3_BUTTON_GREEN); } - /* WorkerButton Minus */ + /* Button Minus */ public boolean isButtonMinusJustPressed() { return isButtonJustPressed(GUITAR_HERO_3_BUTTON_MINUS); @@ -140,7 +140,7 @@ public class GuitarHeroButtonsEvent extends ButtonsEvent { return isButtonPressed(GUITAR_HERO_3_BUTTON_MINUS); } - /* WorkerButton Orange */ + /* Button Orange */ public boolean isButtonOrangeJustPressed() { return isButtonJustPressed(GUITAR_HERO_3_BUTTON_ORANGE); @@ -158,7 +158,7 @@ public class GuitarHeroButtonsEvent extends ButtonsEvent { return isButtonPressed(GUITAR_HERO_3_BUTTON_ORANGE); } - /* WorkerButton Plus */ + /* Button Plus */ public boolean isButtonPlusJustPressed() { return isButtonJustPressed(GUITAR_HERO_3_BUTTON_PLUS); @@ -176,7 +176,7 @@ public class GuitarHeroButtonsEvent extends ButtonsEvent { return isButtonPressed(GUITAR_HERO_3_BUTTON_PLUS); } - /* WorkerButton Red */ + /* Button Red */ public boolean isButtonRedJustPressed() { return isButtonJustPressed(GUITAR_HERO_3_BUTTON_RED); @@ -194,7 +194,7 @@ public class GuitarHeroButtonsEvent extends ButtonsEvent { return isButtonPressed(GUITAR_HERO_3_BUTTON_RED); } - /* WorkerButton Yellow */ + /* Button Yellow */ public boolean isButtonYellowJustPressed() { return isButtonJustPressed(GUITAR_HERO_3_BUTTON_YELLOW); diff --git a/java/src/wiiusej/wiiusejevents/physicalevents/NunchukButtonsEvent.java b/java/src/wiiusej/wiiusejevents/physicalevents/NunchukButtonsEvent.java index f83b68c..d1af6af 100644 --- a/java/src/wiiusej/wiiusejevents/physicalevents/NunchukButtonsEvent.java +++ b/java/src/wiiusej/wiiusejevents/physicalevents/NunchukButtonsEvent.java @@ -44,7 +44,7 @@ public class NunchukButtonsEvent extends ButtonsEvent { super(id, buttonsJustPressed, buttonsJustReleased, buttonsHeld); } - /* WorkerButton Z */ + /* Button Z */ public boolean isButtonZJustPressed() { return isButtonJustPressed(NUNCHUK_BUTTON_Z); @@ -62,7 +62,7 @@ public class NunchukButtonsEvent extends ButtonsEvent { return isButtonPressed(NUNCHUK_BUTTON_Z); } - /* WorkerButton Z */ + /* Button Z */ public boolean isButtonCJustPressed() { return isButtonJustPressed(NUNCHUK_BUTTON_C); diff --git a/java/src/wiiusej/wiiusejevents/physicalevents/WiimoteButtonsEvent.java b/java/src/wiiusej/wiiusejevents/physicalevents/WiimoteButtonsEvent.java index 6ae3a09..106fc1c 100644 --- a/java/src/wiiusej/wiiusejevents/physicalevents/WiimoteButtonsEvent.java +++ b/java/src/wiiusej/wiiusejevents/physicalevents/WiimoteButtonsEvent.java @@ -60,7 +60,7 @@ public class WiimoteButtonsEvent extends ButtonsEvent { super(id, buttonsJustPressed, buttonsJustReleased, buttonsHeld); } - /* WorkerButton ONE */ + /* Button ONE */ public boolean isButtonOneJustPressed() { return isButtonJustPressed(WIIMOTE_BUTTON_ONE); @@ -78,7 +78,7 @@ public class WiimoteButtonsEvent extends ButtonsEvent { return isButtonPressed(WIIMOTE_BUTTON_ONE); } - /* WorkerButton TWO */ + /* Button TWO */ public boolean isButtonTwoJustPressed() { return isButtonJustPressed(WIIMOTE_BUTTON_TWO); @@ -96,7 +96,7 @@ public class WiimoteButtonsEvent extends ButtonsEvent { return isButtonPressed(WIIMOTE_BUTTON_TWO); } - /* WorkerButton A */ + /* Button A */ public boolean isButtonAJustPressed() { return isButtonJustPressed(WIIMOTE_BUTTON_A); @@ -114,7 +114,7 @@ public class WiimoteButtonsEvent extends ButtonsEvent { return isButtonPressed(WIIMOTE_BUTTON_A); } - /* WorkerButton B */ + /* Button B */ public boolean isButtonBJustPressed() { return isButtonJustPressed(WIIMOTE_BUTTON_B); @@ -132,7 +132,7 @@ public class WiimoteButtonsEvent extends ButtonsEvent { return isButtonPressed(WIIMOTE_BUTTON_B); } - /* WorkerButton LEFT */ + /* Button LEFT */ public boolean isButtonLeftJustPressed() { return isButtonJustPressed(WIIMOTE_BUTTON_LEFT); @@ -150,7 +150,7 @@ public class WiimoteButtonsEvent extends ButtonsEvent { return isButtonPressed(WIIMOTE_BUTTON_LEFT); } - /* WorkerButton RIGHT */ + /* Button RIGHT */ public boolean isButtonRightJustPressed() { return isButtonJustPressed(WIIMOTE_BUTTON_RIGHT); @@ -168,7 +168,7 @@ public class WiimoteButtonsEvent extends ButtonsEvent { return isButtonPressed(WIIMOTE_BUTTON_RIGHT); } - /* WorkerButton UP */ + /* Button UP */ public boolean isButtonUpJustPressed() { return isButtonJustPressed(WIIMOTE_BUTTON_UP); @@ -186,7 +186,7 @@ public class WiimoteButtonsEvent extends ButtonsEvent { return isButtonPressed(WIIMOTE_BUTTON_UP); } - /* WorkerButton DOWN */ + /* Button DOWN */ public boolean isButtonDownJustPressed() { return isButtonJustPressed(WIIMOTE_BUTTON_DOWN); @@ -204,7 +204,7 @@ public class WiimoteButtonsEvent extends ButtonsEvent { return isButtonPressed(WIIMOTE_BUTTON_DOWN); } - /* WorkerButton - */ + /* Button - */ public boolean isButtonMinusJustPressed() { return isButtonJustPressed(WIIMOTE_BUTTON_MINUS); @@ -222,7 +222,7 @@ public class WiimoteButtonsEvent extends ButtonsEvent { return isButtonPressed(WIIMOTE_BUTTON_MINUS); } - /* WorkerButton + */ + /* Button + */ public boolean isButtonPlusJustPressed() { return isButtonJustPressed(WIIMOTE_BUTTON_PLUS); @@ -240,7 +240,7 @@ public class WiimoteButtonsEvent extends ButtonsEvent { return isButtonPressed(WIIMOTE_BUTTON_PLUS); } - /* WorkerButton HOME */ + /* Button HOME */ public boolean isButtonHomeJustPressed() { return isButtonJustPressed(WIIMOTE_BUTTON_HOME); diff --git a/java/src/wiiusej/wiiusejevents/wiiuseapievents/BalanceBoardInsertedEvent.java b/java/src/wiiusej/wiiusejevents/wiiuseapievents/BalanceBoardInsertedEvent.java index 3c82a4c..f19edc7 100644 --- a/java/src/wiiusej/wiiusejevents/wiiuseapievents/BalanceBoardInsertedEvent.java +++ b/java/src/wiiusej/wiiusejevents/wiiuseapievents/BalanceBoardInsertedEvent.java @@ -12,4 +12,4 @@ public class BalanceBoardInsertedEvent extends WiiUseApiEvent { + super.getWiimoteId() + " ********/\n"; return out; } -} \ No newline at end of file +} diff --git a/java/src/wiiusej/wiiusejevents/wiiuseapievents/BalanceBoardRemovedEvent.java b/java/src/wiiusej/wiiusejevents/wiiuseapievents/BalanceBoardRemovedEvent.java index 559207d..0a808b2 100644 --- a/java/src/wiiusej/wiiusejevents/wiiuseapievents/BalanceBoardRemovedEvent.java +++ b/java/src/wiiusej/wiiusejevents/wiiuseapievents/BalanceBoardRemovedEvent.java @@ -14,4 +14,4 @@ public class BalanceBoardRemovedEvent extends WiiUseApiEvent { + super.getWiimoteId() + " ********/\n"; return out; } -} \ No newline at end of file +}