1
2
3
4
5
6
7
8
9
10 package nl.tudelft.simulation.dsol.gui.animation3D.mouse;
11
12 import javax.media.j3d.Bounds;
13 import javax.media.j3d.BranchGroup;
14 import javax.media.j3d.Canvas3D;
15
16 import nl.tudelft.simulation.dsol.animation.D3.Renderable3D;
17 import nl.tudelft.simulation.introspection.gui.IntroSpectionDialog;
18
19 import com.sun.j3d.utils.picking.PickResult;
20 import com.sun.j3d.utils.picking.PickTool;
21 import com.sun.j3d.utils.picking.behaviors.PickMouseBehavior;
22
23 /***
24 * PickObjectMouseBehavior.java <br>
25 * (c) copyright 2003 <a href="http://www.simulation.tudelft.nl">Delft
26 * University of Technology </a>, the Netherlands. <br>
27 * See for project information <a
28 * href="http://www.simulation.tudelft.nl">www.simulation.tudelft.nl </a> <br>
29 * License of use: <a href="http://www.gnu.org/copyleft/gpl.html">General Public
30 * License (GPL) </a>, no warranty <br>
31 *
32 * @version 1.0 <br>
33 * @author <a href="http://www.tbm.tudelft.nl/webstaf/royc/index.htm">Roy Chin
34 * </a>
35 */
36 public class PickObjectMouseBehavior extends PickMouseBehavior
37 {
38
39 /***
40 * Construct a new behavior
41 *
42 * @param canvas3D A canvas3D
43 * @param root The root branch group
44 * @param bounds Bounds for this behavior
45 */
46 public PickObjectMouseBehavior(final Canvas3D canvas3D,
47 final BranchGroup root, final Bounds bounds)
48 {
49 super(canvas3D, root, bounds);
50 this.setSchedulingBounds(bounds);
51 this.pickCanvas.setMode(PickTool.BOUNDS);
52 root.addChild(this);
53 }
54
55 /***
56 * @see com.sun.j3d.utils.picking.behaviors.PickMouseBehavior#updateScene(int,
57 * int)
58 */
59 public void updateScene(final int xpos, final int ypos)
60 {
61 PickResult pickResult = null;
62
63 BranchGroup group = null;
64
65 this.pickCanvas.setShapeLocation(xpos, ypos);
66
67 pickResult = this.pickCanvas.pickClosest();
68 if (pickResult != null)
69 {
70
71 group = (BranchGroup) pickResult.getNode(PickResult.BRANCH_GROUP);
72 if (group != null)
73 {
74 new IntroSpectionDialog(((Renderable3D) group).getSource(),
75 ((Renderable3D) group).getSource().toString());
76
77 }
78 }
79 }
80 }