1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 package net.jbeans.j3d.renderer;
24
25 /* ------------------ Import classes (packages) ------------------- *//package-summary/html">class="comment"> ------------------ Import classes (packages) ------------------- *//package-summary.html">class="comment">/* ------------------ Import classes (packages) ------------------- *//package-summary.html">class="comment"> ------------------ Import classes (packages) ------------------- */
26 import javax.swing.event.*;
27 import javax.media.j3d.*;
28 import com.sun.j3d.loaders.*;
29
30 import net.jbeans.j3d.universe.*;
31 import net.jbeans.j3d.util.picking.behavior.*;
32
33 import net.jbeans.util.debug.*;
34
35
36
37
38 /***
39 * generally describe SelectableRenderer in here
40 *
41 * @version $Revision: 1.3 $
42 * @author Masahiro Takatsuka (masa@jbeans.net)
43 * @see BasicRenderer
44 * @see PickMouseListener
45 */
46
47 public abstract class SelectableRenderer extends BasicRenderer implements PickMouseListener {
48 private static final boolean DEBUG = Debug.getDebugFlag(SelectableRenderer.class);
49
50 private transient EventListenerList listenerList;
51
52 /***
53 * Constructs a new SelectableRenderer object.
54 */
55 SelectableRenderer() {
56 this("Selectable Renderer");
57 }
58
59 /***
60 * Constructs a new Renderer object.
61 * Masahiro Takatsuka/1999-Jun-11
62 */
63 SelectableRenderer(String title) {
64 super(title);
65
66
67 if (this.universe instanceof SelectableUniverse) {
68 ((SelectableUniverse) this.universe).addPickMouseListener(this);
69 }
70 }
71
72
73
74
75
76 /***
77 * Invoked when an object is picked.
78 * <PRE>
79 * </PRE>
80 *
81 * @param node the picked node
82 * @return void
83 */
84 public void picked(PickMouseEvent event) {
85 if (DEBUG) {
86 System.out.println("SelectableRenderer.picked():");
87 }
88 firePickedEvent(event);
89 }
90
91 /***
92 * Invoked when an object is picked.
93 * <PRE>
94 * </PRE>
95 *
96 * @param node the picked node
97 * @return void
98 */
99 public void selected(PickMouseEvent event) {
100 if (DEBUG) {
101 System.out.println("SelectableRenderer.selected():");
102 }
103 fireSelectedEvent(event);
104 }
105
106 private void checkListeners() {
107 if (this.listenerList == null) {
108 this.listenerList = new EventListenerList();
109 }
110 }
111
112 /***
113 * Adds a PickMouseListener to the slider.
114 *
115 * @param l the PickMouseListener to add
116 */
117 public void addPickMouseListener(PickMouseListener l) {
118 checkListeners();
119 this.listenerList.add(PickMouseListener.class, l);
120 }
121
122 /***
123 * Removes a PickMouseListener from the slider.
124 *
125 * @param l the PickMouseListener to remove
126
127 */
128 public void removePickMouseListener(PickMouseListener l) {
129 checkListeners();
130 this.listenerList.remove(PickMouseListener.class, l);
131 }
132
133 /***
134 * Send the Pick node to listeners.
135 */
136 protected void firePickedEvent(PickMouseEvent event) {
137 checkListeners();
138 Object[] listeners = this.listenerList.getListenerList();
139 for (int i = listeners.length - 2; i >= 0; i -= 2) {
140 if (listeners[i] == PickMouseListener.class) {
141 ((PickMouseListener)listeners[i+1]).picked(event);
142 }
143 }
144 }
145
146 /***
147 * Send the Selection node to listeners.
148 */
149 protected void fireSelectedEvent(PickMouseEvent event) {
150 checkListeners();
151 Object[] listeners = this.listenerList.getListenerList();
152 for (int i = listeners.length - 2; i >= 0; i -= 2) {
153 if (listeners[i] == PickMouseListener.class) {
154 ((PickMouseListener)listeners[i+1]).selected(event);
155 }
156 }
157 }
158 }