package org.jnect.demo.incquery.gef3d;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.gef.DefaultEditDomain;
import org.eclipse.gef.editparts.ScalableFreeformRootEditPart;
import org.eclipse.gef.palette.PaletteGroup;
import org.eclipse.gef.palette.PaletteRoot;
import org.eclipse.gef.palette.ToolEntry;
import org.eclipse.gef3d.editparts.ScalableFreeformRootEditPart3D;
import org.eclipse.gef3d.ui.parts.GraphicalEditor3DWithFlyoutPalette;
import org.eclipse.gef3d.ui.parts.GraphicalViewer3DImpl;
import org.jnect.core.IKinectUpdateListener;
import org.jnect.core.KinectManager;
import org.jnect.demo.incquery.gef3d.camera.CustomCameraTool;
/**
* GEF3D Editor for the Jnect demo.
* @author istvanrath
*
*/
public class Jnect3DEditor extends GraphicalEditor3DWithFlyoutPalette implements IKinectUpdateListener {
public Jnect3DEditor() {
setEditDomain(new DefaultEditDomain(this));
KinectManager.INSTANCE.addKinectUpdateListener(this);
}
@Override
protected void configureGraphicalViewer() {
super.configureGraphicalViewer();
GraphicalViewer3DImpl bodyViewer = (GraphicalViewer3DImpl) getGraphicalViewer();
bodyViewer.setEditPartFactory(new Jnect3DEditpartFactory());
bodyViewer.setFigureFactory(new Jnect3DFigureFactory());
//bodyViewer.getControl().setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
//bodyViewer.getLightweightSystem3D().setBackgroundColor(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
//bodyViewer.getLightweightSystem3D().setDrawAxes(false);
//bodyViewer.getLightweightSystem3D().getRootFigure().setBackgroundColor(ColorConstants.white);
//the following lines make connections appear :)
ScalableFreeformRootEditPart root =
new ScalableFreeformRootEditPart3D();
bodyViewer.setRootEditPart(root);
}
@Override
protected PaletteRoot getPaletteRoot() {
PaletteRoot root = new PaletteRoot();
PaletteGroup controls = new PaletteGroup("Controls");
root.add(controls);
//controls.add(new SelectionToolEntry());
ToolEntry cameraToolEntry = new ToolEntry("Camera", "Camera Tool", null, null,
CustomCameraTool.class) { };
controls.add(cameraToolEntry);
root.setDefaultEntry(cameraToolEntry);
return root;
}
@Override
protected void initializeGraphicalViewer() {
getGraphicalViewer().setContents(KinectManager.INSTANCE.getSkeletonModel());
}
@Override
public void doSave(IProgressMonitor monitor) {
// intentionally empty
}
@Override
public void kinectChangedModel() {
// this means we have to do a big refresh
initializeGraphicalViewer();
}
@Override
public void dispose() {
KinectManager.INSTANCE.removeKinectUpdateListener(this);
super.dispose();
}
}