package org.jnect.demo.incquery.gef3d.parts; import java.util.List; import org.eclipse.draw3d.geometry.Vector3f; import org.eclipse.draw3d.geometry.Vector3fImpl; import org.eclipse.gef.NodeEditPart; import org.eclipse.gef3d.editparts.AbstractGraphicalNodeEditPart; import org.eclipse.gef3d.factories.IConnectionAnchorFactory; import org.eclipse.gef3d.factories.SingleAnchorConnectionAnchorFactory; import org.jnect.bodymodel.PositionedElement; import org.jnect.demo.incquery.gef3d.Jnect3dVisualizationConstants; import org.jnect.demo.incquery.gef3d.figures.PE3DFigure; /** * Editpart for 3D PositionedElements. * @author istvanrath * */ public class PE3DPart extends AbstractGraphicalNodeEditPart implements NodeEditPart { /** * {@inheritDoc} * * @see org.eclipse.gef3d.editparts.AbstractGraphicalNodeEditPart#createConnectionAnchorFactory() */ @Override protected IConnectionAnchorFactory createConnectionAnchorFactory() { return new SingleAnchorConnectionAnchorFactory.ChopboxAnchor3DFactory(this); } @Override protected void createEditPolicies() { // TODO empty for now // installEditPolicy(ShowSourceFeedback3DEditPolicy.ROLE, // new ShowSourceFeedback3DEditPolicy()); } @Override protected List getModelSourceConnections() { PositionedElement model = (PositionedElement) getModel(); return model.getOutgoingLinks(); } @Override protected List getModelTargetConnections() { PositionedElement model = (PositionedElement) getModel(); return model.getIncomingLinks(); } @Override protected void refreshVisuals() { PositionedElement pe = (PositionedElement) getModel(); PE3DFigure pefigure = (PE3DFigure) getFigure(); // set location Vector3f loc = new Vector3fImpl(); loc.setX(Jnect3dVisualizationConstants.sceneCenterX+pe.getX()*Jnect3dVisualizationConstants.kinectMultiplierX); loc.setY(Jnect3dVisualizationConstants.sceneCenterY+pe.getY()*Jnect3dVisualizationConstants.kinectMultiplierY); loc.setZ(Jnect3dVisualizationConstants.sceneCenterZ+pe.getZ()*Jnect3dVisualizationConstants.kinectMultiplierZ); pefigure.getPosition3D().setLocation3D(loc); // set color if highlighted if (pe.getColor_b()!=0 || pe.getColor_g()!=0 || pe.getColor_r()!=0) { pefigure.setBackgroundColor(Jnect3dVisualizationConstants.hiliteColor); } else { pefigure.setBackgroundColor(Jnect3dVisualizationConstants.peColor); } } @Override public void setModel(Object model) { super.setModel(model); /* ((PositionedElement) model).eAdapters().add(new Adapter() { @Override public void notifyChanged(Notification notification) { Display.getDefault().syncExec(new Runnable() { @Override public void run() { refreshVisuals(); refreshSourceConnections(); refreshTargetConnections(); } }); } @Override public Notifier getTarget() { return (PositionedElement) getModel(); } @Override public void setTarget(Notifier newTarget) { } @Override public boolean isAdapterForType(Object type) { return false; } }); */ } }