added gui eclipse project. correct javadoc

git-svn-id: http://wiiusej.googlecode.com/svn/trunk@81 ae48ae66-6a45-0410-b38e-211266189506
This commit is contained in:
guilhem.duche
2008-03-09 20:10:06 +00:00
parent 9f5003b039
commit 03706ece32
12 changed files with 1962 additions and 13 deletions

View File

@@ -306,11 +306,11 @@ public class WiiUseApiManager extends Thread {
requests.add(new FloatValueRequest(id,
WiiUseApiRequest.WIIUSE_ALPHA_SMOOTHING_REQUEST, th));
}
//@TODO not used yet !!
/**
* Try to resync with the wiimote by starting a new handshake.
*
* @TODO not used yet !!
* @param id
* id of the wiimote
*/

View File

@@ -0,0 +1,40 @@
/**
* 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 <http://www.gnu.org/licenses/>.
*/
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);
if (wiimotes.length>0){
WiiuseJGuiTest gui = new WiiuseJGuiTest(wiimotes[0]);
gui.setDefaultCloseOperation(gui.EXIT_ON_CLOSE);
gui.setVisible(true);
}
}
}

View File

@@ -47,7 +47,7 @@ public class Tests implements WiimoteListener {
private Wiimote wiimote;
int dump = DUMP;
int dump = DISPLAY_EACH_VALUE;
public Tests(Wiimote wim) {
wiimote = wim;

View File

@@ -0,0 +1,833 @@
/**
* 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 <http://www.gnu.org/licenses/>.
*/
package wiiusej.test;
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.InputEvent;
import java.util.logging.Level;
import java.util.logging.Logger;
import wiiusej.utils.IRPanel;
import wiiusej.Wiimote;
import wiiusej.utils.AccelerationPanel;
import wiiusej.utils.GForcePanel;
import wiiusej.utils.ButtonsEventPanel;
import wiiusej.utils.OrientationPanel;
import wiiusej.wiiuseapievents.ButtonsEvent;
import wiiusej.wiiuseapievents.DisconnectionEvent;
import wiiusej.wiiuseapievents.IREvent;
import wiiusej.wiiuseapievents.MotionSensingEvent;
import wiiusej.wiiuseapievents.StatusEvent;
import wiiusej.wiiuseapievents.WiimoteListener;
/**
* 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;
/** Creates new form WiiuseJGuiTest */
public WiiuseJGuiTest(Wiimote wiimote) {
initComponents();
this.wiimote = wiimote;
wiimote.addWiiMoteEventListeners((IRPanel) irViewPanel);
wiimote.addWiiMoteEventListeners((ButtonsEventPanel) buttonsPanel);
wiimote.addWiiMoteEventListeners((OrientationPanel) motionSensingPanel);
wiimote.addWiiMoteEventListeners((GForcePanel) gForcePanel);
wiimote.addWiiMoteEventListeners((AccelerationPanel) accelerationPanel);
wiimote.addWiiMoteEventListeners(this);
wiimote.deactivateContinuous();
wiimote.deactivateSmoothing();
wiimote.setScreenAspectRatio169();
wiimote.setSensorBarBelowScreen();
getStatusButtonMousePressed(null);
}
public void onButtonsEvent(ButtonsEvent 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 onStatusEvent(StatusEvent arg0) {
messageText.setText("Status received !");
batteryLevelText.setText(arg0.getBatteryLevel() + " %");
led1Button.setEnabled(arg0.isLed1Set());
led2Button.setEnabled(arg0.isLed2Set());
led3Button.setEnabled(arg0.isLed3Set());
led4Button.setEnabled(arg0.isLed4Set());
//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 !");
}
/** 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.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
leftPanel = new javax.swing.JPanel();
irViewPanel = new IRPanel();
jTabbedPane1 = new javax.swing.JTabbedPane();
motionSensingPanel = new OrientationPanel();
gForcePanel = new wiiusej.utils.GForcePanel();
accelerationPanel = new AccelerationPanel();
rightPanel = new javax.swing.JPanel();
fixedWiimotePanel = new javax.swing.JPanel();
buttonsPanel = new ButtonsEventPanel();
controlsPanel = new javax.swing.JPanel();
activateRumblePanel = new javax.swing.JPanel();
toggleRumbleButton = new javax.swing.JButton();
deactivateRumblePanel = new javax.swing.JPanel();
toggleIRTrackingButton = new javax.swing.JButton();
activateIRtrackingPanel = new javax.swing.JPanel();
toggleMotionSensingTrackingButton = new javax.swing.JButton();
deactivateIRTrackingPanel = new javax.swing.JPanel();
toggleSmoothingButton = new javax.swing.JButton();
activateMotionSensingTrackingPanel = new javax.swing.JPanel();
toggleContinuousButton = new javax.swing.JButton();
deactivateMotionSensingTrackingPanel = 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();
activateSmoothingPanel = new javax.swing.JPanel();
alphaSmoothingTextField = new javax.swing.JTextField();
alphaSmoothingButton = new javax.swing.JButton();
deactivateSmoothingPanel = new javax.swing.JPanel();
orientationThresholdTextField = new javax.swing.JTextField();
orientationThresholdButton = new javax.swing.JButton();
activateContinuousPanel = new javax.swing.JPanel();
accelerationThresholdTextField = new javax.swing.JTextField();
accelerationThresholdButton = new javax.swing.JButton();
deactivateContinuousPanel = new javax.swing.JPanel();
getStatusButton = new javax.swing.JButton();
batteryText = new javax.swing.JLabel();
batteryLevelText = new javax.swing.JLabel();
ledsPanel = new javax.swing.JPanel();
toggleSensorBarPositionButton = new javax.swing.JButton();
alphaSmoothingPanel = new javax.swing.JPanel();
toggleScreenAspectRatioButton = new javax.swing.JButton();
orientationThresholdPanel = 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();
accelerationThresholdPanel = new javax.swing.JPanel();
mouseIRControlButton = new javax.swing.JButton();
batteryPanel = new javax.swing.JPanel();
expansionText = new javax.swing.JLabel();
messagesPanel = new javax.swing.JPanel();
messageLabelText = new javax.swing.JLabel();
messageText = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
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)));
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)
);
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 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("Raw Acceleration", accelerationPanel);
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);
}
});
activateRumblePanel.add(toggleRumbleButton);
controlsPanel.add(activateRumblePanel);
toggleIRTrackingButton.setText("Activate IR Tracking");
toggleIRTrackingButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
toggleIRTrackingButtonMousePressed(evt);
}
});
deactivateRumblePanel.add(toggleIRTrackingButton);
controlsPanel.add(deactivateRumblePanel);
toggleMotionSensingTrackingButton.setText("Activate motion sensing Tracking");
toggleMotionSensingTrackingButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
toggleMotionSensingTrackingButtonMousePressed(evt);
}
});
activateIRtrackingPanel.add(toggleMotionSensingTrackingButton);
controlsPanel.add(activateIRtrackingPanel);
toggleSmoothingButton.setText("Activate Smoothing");
toggleSmoothingButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
toggleSmoothingButtonMousePressed(evt);
}
});
deactivateIRTrackingPanel.add(toggleSmoothingButton);
controlsPanel.add(deactivateIRTrackingPanel);
toggleContinuousButton.setText("Activate Continuous");
toggleContinuousButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
toggleContinuousButtonMousePressed(evt);
}
});
activateMotionSensingTrackingPanel.add(toggleContinuousButton);
controlsPanel.add(activateMotionSensingTrackingPanel);
led1Button.setText("Led1");
led1Button.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
led1ButtonMousePressed(evt);
}
});
deactivateMotionSensingTrackingPanel.add(led1Button);
led2Button.setText("Led2");
led2Button.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
led2ButtonMousePressed(evt);
}
});
deactivateMotionSensingTrackingPanel.add(led2Button);
led3Button.setText("Led3");
led3Button.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
led3ButtonMousePressed(evt);
}
});
deactivateMotionSensingTrackingPanel.add(led3Button);
led4Button.setText("Led4");
led4Button.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
led4ButtonMousePressed(evt);
}
});
deactivateMotionSensingTrackingPanel.add(led4Button);
setLedsButton.setText("Set leds");
setLedsButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
setLedsButtonMousePressed(evt);
}
});
deactivateMotionSensingTrackingPanel.add(setLedsButton);
controlsPanel.add(deactivateMotionSensingTrackingPanel);
alphaSmoothingTextField.setMinimumSize(new java.awt.Dimension(100, 20));
alphaSmoothingTextField.setPreferredSize(new java.awt.Dimension(100, 20));
activateSmoothingPanel.add(alphaSmoothingTextField);
alphaSmoothingButton.setText("Set alpha smoothing");
alphaSmoothingButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
alphaSmoothingButtonMousePressed(evt);
}
});
activateSmoothingPanel.add(alphaSmoothingButton);
controlsPanel.add(activateSmoothingPanel);
orientationThresholdTextField.setMinimumSize(new java.awt.Dimension(100, 20));
orientationThresholdTextField.setPreferredSize(new java.awt.Dimension(100, 20));
deactivateSmoothingPanel.add(orientationThresholdTextField);
orientationThresholdButton.setText("Set orientation threshold");
orientationThresholdButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
orientationThresholdButtonMousePressed(evt);
}
});
deactivateSmoothingPanel.add(orientationThresholdButton);
controlsPanel.add(deactivateSmoothingPanel);
accelerationThresholdTextField.setPreferredSize(new java.awt.Dimension(100, 20));
activateContinuousPanel.add(accelerationThresholdTextField);
accelerationThresholdButton.setText("Set acceleration threshold");
accelerationThresholdButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
accelerationThresholdButtonMousePressed(evt);
}
});
activateContinuousPanel.add(accelerationThresholdButton);
controlsPanel.add(activateContinuousPanel);
getStatusButton.setText("Get status");
getStatusButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
getStatusButtonMousePressed(evt);
}
});
deactivateContinuousPanel.add(getStatusButton);
batteryText.setFont(new java.awt.Font("Tahoma", 0, 14));
batteryText.setText("Battery level :");
deactivateContinuousPanel.add(batteryText);
batteryLevelText.setFont(new java.awt.Font("Arial", 0, 14));
batteryLevelText.setText(" %");
deactivateContinuousPanel.add(batteryLevelText);
controlsPanel.add(deactivateContinuousPanel);
toggleSensorBarPositionButton.setText("Set sensor bar above");
toggleSensorBarPositionButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
toggleSensorBarPositionButtonMousePressed(evt);
}
});
ledsPanel.add(toggleSensorBarPositionButton);
controlsPanel.add(ledsPanel);
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);
}
});
alphaSmoothingPanel.add(toggleScreenAspectRatioButton);
controlsPanel.add(alphaSmoothingPanel);
xLabel.setText("X");
orientationThresholdPanel.add(xLabel);
xResolutionTextField.setMinimumSize(new java.awt.Dimension(40, 20));
xResolutionTextField.setPreferredSize(new java.awt.Dimension(40, 20));
orientationThresholdPanel.add(xResolutionTextField);
yLabel.setText("Y");
orientationThresholdPanel.add(yLabel);
yResolutionTextField.setFocusTraversalPolicyProvider(true);
yResolutionTextField.setMinimumSize(new java.awt.Dimension(40, 20));
yResolutionTextField.setPreferredSize(new java.awt.Dimension(40, 20));
orientationThresholdPanel.add(yResolutionTextField);
setVirtualResolutionButton.setText("Set virtual resolution");
setVirtualResolutionButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
setVirtualResolutionButtonMousePressed(evt);
}
});
orientationThresholdPanel.add(setVirtualResolutionButton);
controlsPanel.add(orientationThresholdPanel);
mouseIRControlButton.setText("Start infrared mouse control");
mouseIRControlButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
mouseIRControlButtonMousePressed(evt);
}
});
accelerationThresholdPanel.add(mouseIRControlButton);
controlsPanel.add(accelerationThresholdPanel);
expansionText.setText("No expansion connected");
batteryPanel.add(expansionText);
controlsPanel.add(batteryPanel);
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);
}// </editor-fold>//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;
}//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
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JPanel accelerationPanel;
private javax.swing.JButton accelerationThresholdButton;
private javax.swing.JPanel accelerationThresholdPanel;
private javax.swing.JTextField accelerationThresholdTextField;
private javax.swing.JPanel activateContinuousPanel;
private javax.swing.JPanel activateIRtrackingPanel;
private javax.swing.JPanel activateMotionSensingTrackingPanel;
private javax.swing.JPanel activateRumblePanel;
private javax.swing.JPanel activateSmoothingPanel;
private javax.swing.JButton alphaSmoothingButton;
private javax.swing.JPanel alphaSmoothingPanel;
private javax.swing.JTextField alphaSmoothingTextField;
private javax.swing.JLabel batteryLevelText;
private javax.swing.JPanel batteryPanel;
private javax.swing.JLabel batteryText;
private javax.swing.JPanel buttonsPanel;
private javax.swing.JPanel controlsPanel;
private javax.swing.JPanel deactivateContinuousPanel;
private javax.swing.JPanel deactivateIRTrackingPanel;
private javax.swing.JPanel deactivateMotionSensingTrackingPanel;
private javax.swing.JPanel deactivateRumblePanel;
private javax.swing.JPanel deactivateSmoothingPanel;
private javax.swing.JLabel expansionText;
private javax.swing.JPanel fixedWiimotePanel;
private javax.swing.JPanel gForcePanel;
private javax.swing.JButton getStatusButton;
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 ledsPanel;
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.JButton orientationThresholdButton;
private javax.swing.JPanel orientationThresholdPanel;
private javax.swing.JTextField orientationThresholdTextField;
private javax.swing.JPanel rightPanel;
private javax.swing.JButton setLedsButton;
private javax.swing.JButton setVirtualResolutionButton;
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
}

View File

@@ -0,0 +1,182 @@
/**
* 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 <http://www.gnu.org/licenses/>.
*/
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.wiiuseapievents.ButtonsEvent;
import wiiusej.wiiuseapievents.DisconnectionEvent;
import wiiusej.wiiuseapievents.IREvent;
import wiiusej.wiiuseapievents.MotionSensingEvent;
import wiiusej.wiiuseapievents.StatusEvent;
import wiiusej.wiiuseapievents.WiimoteListener;
/**
* This panel is used to watch raw acceleration values from a MotionSensingEvent.
* @author guiguito
*/
public 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<RawAcceleration> values = new ArrayList<RawAcceleration>();
/** Creates new form AccelerationPanel */
public AccelerationPanel() {
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(ButtonsEvent arg0) {
//nothing
}
public void onIrEvent(IREvent arg0) {
//nothing
}
public void onMotionSensingEvent(MotionSensingEvent arg0) {
if (values.size() >= getWidth()) {
//if there are as many values as pixels in the width
//clear points
values.clear();
}
values.add(arg0.getRawAcceleration());
repaint();
}
public void onStatusEvent(StatusEvent arg0) {
//nothing
}
public void onDisconnectionEvent(DisconnectionEvent arg0) {
//Clear points.
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.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//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)
);
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
// End of variables declaration//GEN-END:variables
}

View File

@@ -0,0 +1,296 @@
/**
* 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 <http://www.gnu.org/licenses/>.
*/
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.wiiuseapievents.ButtonsEvent;
import wiiusej.wiiuseapievents.DisconnectionEvent;
import wiiusej.wiiuseapievents.IREvent;
import wiiusej.wiiuseapievents.MotionSensingEvent;
import wiiusej.wiiuseapievents.StatusEvent;
import wiiusej.wiiuseapievents.WiimoteListener;
/**
* This panel is used to see what buttons are pressed.
* 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 ButtonsEvent buttons;
private Color pressedColor = Color.RED;
private Color heldColor = Color.ORANGE;
private Color releasedColor = Color.YELLOW;
private Shape shape;
/**
* Default constructor.
* Red : button just pressed.
* Orange : button held.
* Yellow : button just released.
*/
public ButtonsEventPanel() {
Toolkit toolkit = java.awt.Toolkit.getDefaultToolkit();
wiimoteImage = toolkit.createImage("img\\wiimote.png");
shape = new java.awt.geom.Ellipse2D.Double(0, 0, 13, 13);
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");
shape = new java.awt.geom.Ellipse2D.Double(0, 0, 13, 13);
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(ButtonsEvent 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 onStatusEvent(StatusEvent arg0) {
//nothing
}
public void onDisconnectionEvent(DisconnectionEvent arg0) {
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.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//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)
);
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
// End of variables declaration//GEN-END:variables
}

View File

@@ -0,0 +1,201 @@
/**
* 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 <http://www.gnu.org/licenses/>.
*/
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.wiiuseapievents.ButtonsEvent;
import wiiusej.wiiuseapievents.DisconnectionEvent;
import wiiusej.wiiuseapievents.IREvent;
import wiiusej.wiiuseapievents.MotionSensingEvent;
import wiiusej.wiiuseapievents.StatusEvent;
import wiiusej.wiiuseapievents.WiimoteListener;
/**
* This panel is used to watch gravity force values from a MotionSensingEvent.
* @author guiguito
*/
public 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<GForce> values = new ArrayList<GForce>();
/**
* 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(ButtonsEvent arg0) {
//nothing
}
public void onIrEvent(IREvent arg0) {
//nothing
}
public void onMotionSensingEvent(MotionSensingEvent arg0) {
if (values.size() >= getWidth()) {
//if there are as many values as pixels in the width
//clear points
values.clear();
}
values.add(arg0.getGforce());
repaint();
}
public void onStatusEvent(StatusEvent arg0) {
//nothing
}
public void onDisconnectionEvent(DisconnectionEvent arg0) {
//Clear points.
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.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//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)
);
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
// End of variables declaration//GEN-END:variables
}

View File

@@ -0,0 +1,192 @@
/**
* 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 <http://www.gnu.org/licenses/>.
*/
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.wiiuseapievents.ButtonsEvent;
import wiiusej.wiiuseapievents.DisconnectionEvent;
import wiiusej.wiiuseapievents.IREvent;
import wiiusej.wiiuseapievents.MotionSensingEvent;
import wiiusej.wiiuseapievents.StatusEvent;
import wiiusej.wiiuseapievents.WiimoteListener;
/**
* 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 (xCoordinates[i] != -1 && yCoordinates[i] != -1 && 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(ButtonsEvent arg0) {
//nothing
}
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 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();
}
/** 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.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//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)
);
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
// End of variables declaration//GEN-END:variables
}

View File

@@ -0,0 +1,205 @@
/**
* 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 <http://www.gnu.org/licenses/>.
*/
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.wiiuseapievents.ButtonsEvent;
import wiiusej.wiiuseapievents.DisconnectionEvent;
import wiiusej.wiiuseapievents.IREvent;
import wiiusej.wiiuseapievents.MotionSensingEvent;
import wiiusej.wiiuseapievents.StatusEvent;
import wiiusej.wiiuseapievents.WiimoteListener;
/**
* This panel is used to watch orientation values from a MotionSensingEvent.
* @author guiguito
*/
public 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<Orientation> values = new ArrayList<Orientation>();
/**
* 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(ButtonsEvent arg0) {
//nothing
}
public void onIrEvent(IREvent arg0) {
//nothing
}
public void onMotionSensingEvent(MotionSensingEvent arg0) {
if (values.size() >= getWidth()) {
//if there are as many values as pixels in the width
//clear points
values.clear();
}
values.add(arg0.getOrientation());
repaint();
}
public void onStatusEvent(StatusEvent arg0) {
//nothing
}
public void onDisconnectionEvent(DisconnectionEvent arg0) {
//Clear points.
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.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//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)
);
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
// End of variables declaration//GEN-END:variables
}

View File

@@ -107,11 +107,11 @@ public class EventsGatherer {
* x coordinates
* @param y
* y coordinates
* @param rxx
* @param rx
* raw X coordinate (0-1023).
* @param ryy
* @param ry
* raw Y coordinate (0-1023).
* @param si
* @param size
* size of the IR dot (0-15).
*/
public void addIRPointToPreparedWiiMoteEvent(int x, int y, short rx,
@@ -221,7 +221,7 @@ public class EventsGatherer {
/**
* Return an array containing the events.
*
* @return
* @return events received
*/
public WiiUseApiEvent[] getEvents() {
return java.util.Arrays.copyOfRange(events, 0, index);

View File

@@ -145,11 +145,11 @@ public class GenericEvent extends WiiUseApiEvent {
* x coordinates.
* @param y
* y coordinates
* @param rxx
* @param rx
* raw X coordinate (0-1023).
* @param ryy
* @param ry
* raw Y coordinate (0-1023).
* @param si
* @param size
* size of the IR dot (0-15).
*/
public void addIRpoint(int x, int y, short rx, short ry, short size) {

View File

@@ -109,11 +109,11 @@ public class IREvent extends WiimoteEvent {
* x value
* @param y
* y value
* @param rxx
* @param rx
* raw X coordinate (0-1023).
* @param ryy
* @param ry
* raw Y coordinate (0-1023).
* @param si
* @param size
* size of the IR dot (0-15).
*/
public void addIRpoint(int x, int y, short rx, short ry, short size) {