blob: 2d87b1e6c00e28db438831e628113676b9ddc5dd [file] [log] [blame]
package org.eclipse.emf.cdo.threedee.ui.examples;
import org.eclipse.emf.cdo.threedee.common.Element;
import org.eclipse.emf.cdo.threedee.common.descriptors.net4j.TCPConnectorDescriptor;
import org.eclipse.emf.cdo.threedee.ui.nodes.ElementGroup;
import com.sun.j3d.utils.geometry.ColorCube;
import com.sun.j3d.utils.geometry.Primitive;
import com.sun.j3d.utils.picking.PickCanvas;
import com.sun.j3d.utils.picking.PickResult;
import com.sun.j3d.utils.universe.SimpleUniverse;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import javax.media.j3d.Shape3D;
import javax.media.j3d.Transform3D;
import javax.media.j3d.TransformGroup;
import javax.vecmath.Vector3f;
import java.awt.Frame;
import java.awt.GraphicsConfiguration;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class PickExample extends MouseAdapter
{
private PickCanvas pickCanvas;
public PickExample()
{
Frame frame = new Frame("Box and Sphere");
GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
Canvas3D canvas = new Canvas3D(config);
canvas.setSize(400, 400);
SimpleUniverse universe = new SimpleUniverse(canvas);
BranchGroup group = new BranchGroup();
// create a color cube
Vector3f vector = new Vector3f(-0.3f, 0.0f, 0.0f);
Transform3D transform = new Transform3D();
transform.setTranslation(vector);
TransformGroup transformGroup = new TransformGroup(transform);
ColorCube cube = new ColorCube(0.3);
transformGroup.addChild(cube);
group.addChild(transformGroup);
Element element = new TestingElementProvider().createElement(new TCPConnectorDescriptor());
ElementGroup elementGroup = new ElementGroup(null, element);
group.addChild(elementGroup);
//
universe.addBranchGraph(group);
universe.getViewingPlatform().setNominalViewingTransform();
frame.addWindowListener(new WindowAdapter()
{
@Override
public void windowClosing(WindowEvent winEvent)
{
System.exit(0);
}
});
frame.add(canvas);
pickCanvas = new PickCanvas(canvas, group);
pickCanvas.setMode(PickCanvas.BOUNDS);
canvas.addMouseListener(this);
frame.pack();
frame.setVisible(true);
}
@Override
public void mouseClicked(MouseEvent e)
{
pickCanvas.setShapeLocation(e);
PickResult result = pickCanvas.pickClosest();
if (result == null)
{
System.out.println("Nothing picked");
}
else
{
Primitive p = (Primitive)result.getNode(PickResult.PRIMITIVE);
Shape3D s = (Shape3D)result.getNode(PickResult.SHAPE3D);
if (p != null)
{
System.out.println(p.getClass().getName());
}
else if (s != null)
{
System.out.println(s.getClass().getName());
}
else
{
System.out.println("null");
}
}
}
public static void main(String[] args)
{
new PickExample();
}
} // end of class Pick