package org.jnect.demo.incquery.gef3d.parts;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.EditPolicy;
import org.eclipse.gef.commands.Command;
import org.eclipse.gef.requests.CreateRequest;
import org.eclipse.gef3d.editparts.AbstractGraphicalEditPartEx;
import org.eclipse.gef3d.editpolicies.XY3DLayoutPolicy;
import org.eclipse.swt.widgets.Display;
import org.jnect.bodymodel.Body;
import org.jnect.core.IKinectFrameListener;
import org.jnect.core.KinectManager;
/**
* 3D editpart for Body ("background").
*
* @author istvanrath
*
*/
public class Body3DPart extends AbstractGraphicalEditPartEx implements IKinectFrameListener {
@Override
protected void createEditPolicies() {
installEditPolicy(EditPolicy.LAYOUT_ROLE, new XY3DLayoutPolicy() {
@Override
protected Command getCreateCommand(CreateRequest request) {
// TODO Auto-generated method stub
return null;
}
});
}
@Override
protected List getModelChildren() {
Body opd = (Body) getModel();
ArrayList<EObject> ret = new ArrayList<EObject>();
ret.add(opd.getHead());
ret.add(opd.getCenterShoulder());
ret.add(opd.getCenterHip());
ret.add(opd.getSpine());
ret.add(opd.getLeftAnkle());
ret.add(opd.getLeftElbow());
ret.add(opd.getLeftFoot());
ret.add(opd.getLeftHand());
ret.add(opd.getLeftHip());
ret.add(opd.getLeftKnee());
ret.add(opd.getLeftShoulder());
ret.add(opd.getLeftWrist());
ret.add(opd.getRightAnkle());
ret.add(opd.getRightElbow());
ret.add(opd.getRightFoot());
ret.add(opd.getRightHand());
ret.add(opd.getRightHip());
ret.add(opd.getRightKnee());
ret.add(opd.getRightShoulder());
ret.add(opd.getRightWrist());
return ret;
}
@Override
public void setModel(Object model) {
super.setModel(model);
// register this as a kinect update listener
KinectManager.INSTANCE.addKinectFrameListener(this);
}
@Override
public void kinectReveivedFrame() {
// update entire editpart hierarchy
Display.getDefault().syncExec(new Runnable() {
@Override
public void run() {
for (Object o : getChildren()) {
((EditPart)o).refresh();
}
}
});
}
@Override
public void deactivate() {
KinectManager.INSTANCE.removeKinectFrameListener(this);
super.deactivate();
}
}