package org.squidy.nodes.optitrack;
import java.util.AbstractQueue;
import java.util.ArrayList;
import java.util.List;
import java.util.Queue;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import javax.swing.KeyStroke;
import javax.swing.Timer;
import javax.swing.text.JTextComponent.KeyBinding;
import javax.vecmath.Point2d;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlType;
import org.squidy.manager.controls.CheckBox;
import org.squidy.manager.controls.ComboBox;
import org.squidy.manager.controls.TextField;
import org.squidy.manager.controls.ComboBoxControl.ComboBoxItemWrapper;
import org.squidy.manager.data.DataConstant;
import org.squidy.manager.data.IData;
import org.squidy.manager.data.IDataContainer;
import org.squidy.manager.data.Processor;
import org.squidy.manager.data.Property;
import org.squidy.manager.data.domainprovider.DomainProvider;
import org.squidy.manager.data.impl.DataButton;
import org.squidy.manager.data.impl.DataDigital;
import org.squidy.manager.data.impl.DataPosition2D;
import org.squidy.manager.data.impl.DataPosition3D;
import org.squidy.manager.data.impl.DataPosition6D;
import org.squidy.manager.model.AbstractNode;
import org.squidy.manager.util.DataUtility;
import org.squidy.nodes.Keyboard;
import org.squidy.nodes.optitrack.RigidBody.RBIDDomainProvider;
import org.squidy.nodes.optitrack.utils.TrackingConstant;
import org.squidy.nodes.optitrack.utils.TrackingUtility;
/*<code>DataBlocker</code>.
*
* <pre>
* Date: Jan 29 2010
* Time: 1:35:05 AM
* </pre>
*
* @author Simo Faeh, < href="mailto:simon.faeh@uni-konstanz.de">Simon.Faeh@uni-konstanz.de</>, University f Konstanz
*
* @version $Id: OptitrackPrint.java 373 2010-08-08 12:06:21Z raedle $
*/
@XmlType(name = "Mouse2Hand")
@Processor(
name = "Mouse2Hand",
description = "",
types = { Processor.Type.OUTPUT },
tags = { "Mouse2Hand", "mouse", "simulator" }
)
public class Mouse2Hand extends AbstractNode {
// ################################################################################
// BEGIN OF ADJUSTABLES
// ################################################################################
private boolean keyPressed = false;
private int frameCounter2D, frameCounter3D, frameCounter6D = 0;
private int d2dCounter = 0;
private DataPosition2D prevD2D;
private long last2d = 0;
private long last3d = 0;
private long last6d = 0;
private Timer publishTimer;
private AbstractQueue<Point2d> d2dHistory;
@Override
public void onStart()
{
handSide = 2;
frameID = 0;
click = false;
//d2dHistory = new AbstractQueue();
}
public DataPosition2D process(DataPosition2D d2d)
{
if (frameID == Integer.MAX_VALUE)
{
frameID = 0;
}
frameID++;
d2d.setAttribute(TrackingConstant.REMOTEHOST, "127.0.0.1");
d2d.setAttribute(TrackingConstant.REMOTEPORT, 15202);
if (d2d.getY() > 0.9)
{
d2d.setAttribute(TrackingConstant.KEYWORD, "SCREENOVERSIZE");
}else
{
d2d.setAttribute(TrackingConstant.KEYWORD, "ONSCREEN");
}
d2d.setAttribute(TrackingConstant.SCREENOVERSIZE, 0.4);
d2d.setAttribute(DataConstant.GROUP_ID, frameID);
if (click)
{
d2d.setAttribute(TrackingConstant.GESTUREID, 5501);
d2d.setAttribute(TrackingConstant.SENDTUIO, "TRUE");
}
else
d2d.setAttribute(TrackingConstant.GESTUREID, 5500);
d2d.setAttribute(TrackingConstant.RIGIDBODYID, handSide);
d2d.setAttribute(TrackingConstant.HANDSIDE, handSide);
d2d.setX(d2d.getX() + 0.1);
return d2d;
}
private int frameID;
private int handSide = 0;
private boolean click = false;
public void process(DataButton dataButton)
{
click = dataButton.getFlag();
}
public DataDigital process(DataDigital dataDigital)
{
if (dataDigital.hasAttribute(Keyboard.KEY_EVENT))
{
Integer key_event = (Integer) dataDigital.getAttribute(Keyboard.KEY_EVENT);
if (KeyStroke.getKeyStroke("L") == KeyStroke.getKeyStroke(key_event.intValue(),0))
{
if (dataDigital.getFlag())
handSide = TrackingConstant.RB_HANDLEFT;
} else if (KeyStroke.getKeyStroke("R") == KeyStroke.getKeyStroke(key_event.intValue(),0))
{
if (dataDigital.getFlag())
handSide = TrackingConstant.RB_HANDRIGHT;
}
}
return dataDigital;
}
}