/******************************************************************************* * Copyright (c) 2012 jnect.org. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Eugen Neufeld - initial API and implementation *******************************************************************************/ package org.jnect.demo.gef; import java.util.ArrayList; import java.util.List; import org.eclipse.draw2d.FreeformLayer; import org.eclipse.draw2d.FreeformLayout; import org.eclipse.draw2d.IFigure; import org.eclipse.draw2d.LineBorder; import org.eclipse.emf.ecore.EObject; import org.eclipse.gef.EditPart; import org.eclipse.gef.editparts.AbstractGraphicalEditPart; import org.eclipse.swt.widgets.Display; import org.jnect.bodymodel.Body; import org.jnect.core.IKinectFrameListener; import org.jnect.core.KinectManager; public class HumanContainerEditPart extends AbstractGraphicalEditPart implements IKinectFrameListener { @Override protected IFigure createFigure() { FreeformLayer layer = new FreeformLayer(); layer.setLayoutManager(new FreeformLayout()); layer.setBorder(new LineBorder(1)); return layer; } @Override protected void createEditPolicies() { // TODO Auto-generated method stub } @Override protected List<EObject> getModelChildren() { // List<PositionedElement> retVal = new ArrayList<PositionedElement>(); 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 opd.eContents(); 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(); } }