JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / site / swingjs / j2s / javax / swing / MenuSelectionManager.js
1 Clazz.declarePackage ("javax.swing");\r
2 Clazz.load (["java.util.Vector", "javax.swing.event.EventListenerList"], "javax.swing.MenuSelectionManager", ["java.awt.event.MouseEvent", "javax.swing.JComponent", "$.SwingUtilities", "javax.swing.event.ChangeEvent", "$.ChangeListener", "jssun.awt.AppContext"], function () {\r
3 c$ = Clazz.decorateAsClass (function () {\r
4 this.selection = null;\r
5 this.changeEvent = null;\r
6 this.listenerList = null;\r
7 Clazz.instantialize (this, arguments);\r
8 }, javax.swing, "MenuSelectionManager");\r
9 Clazz.prepareFields (c$, function () {\r
10 this.selection =  new java.util.Vector ();\r
11 this.listenerList =  new javax.swing.event.EventListenerList ();\r
12 });\r
13 c$.defaultManager = Clazz.defineMethod (c$, "defaultManager", \r
14 function () {\r
15 {\r
16 var context = jssun.awt.AppContext.getAppContext ();\r
17 var msm = context.get (javax.swing.MenuSelectionManager.MENU_SELECTION_MANAGER_KEY);\r
18 if (msm == null) {\r
19 msm =  new javax.swing.MenuSelectionManager ();\r
20 context.put (javax.swing.MenuSelectionManager.MENU_SELECTION_MANAGER_KEY, msm);\r
21 }return msm;\r
22 }});\r
23 Clazz.defineMethod (c$, "setSelectedPath", \r
24 function (path) {\r
25 var i;\r
26 var c;\r
27 var currentSelectionCount = this.selection.size ();\r
28 var firstDifference = 0;\r
29 if (path == null) {\r
30 path =  new Array (0);\r
31 }for (i = 0, c = path.length; i < c; i++) {\r
32 if (i < currentSelectionCount && this.selection.elementAt (i) === path[i]) firstDifference++;\r
33  else break;\r
34 }\r
35 for (i = currentSelectionCount - 1; i >= firstDifference; i--) {\r
36 var me = this.selection.elementAt (i);\r
37 this.selection.removeElementAt (i);\r
38 me.menuSelectionChanged (false);\r
39 }\r
40 for (i = firstDifference, c = path.length; i < c; i++) {\r
41 if (path[i] != null) {\r
42 this.selection.addElement (path[i]);\r
43 path[i].menuSelectionChanged (true);\r
44 }}\r
45 this.fireStateChanged ();\r
46 }, "~A");\r
47 Clazz.defineMethod (c$, "getSelectedPath", \r
48 function () {\r
49 var res =  new Array (this.selection.size ());\r
50 var i;\r
51 var c;\r
52 for (i = 0, c = this.selection.size (); i < c; i++) res[i] = this.selection.elementAt (i);\r
53 \r
54 return res;\r
55 });\r
56 Clazz.defineMethod (c$, "clearSelectedPath", \r
57 function () {\r
58 if (this.selection.size () > 0) {\r
59 this.setSelectedPath (null);\r
60 }});\r
61 Clazz.defineMethod (c$, "addChangeListener", \r
62 function (l) {\r
63 this.listenerList.add (javax.swing.event.ChangeListener, l);\r
64 }, "javax.swing.event.ChangeListener");\r
65 Clazz.defineMethod (c$, "removeChangeListener", \r
66 function (l) {\r
67 this.listenerList.remove (javax.swing.event.ChangeListener, l);\r
68 }, "javax.swing.event.ChangeListener");\r
69 Clazz.defineMethod (c$, "getChangeListeners", \r
70 function () {\r
71 return this.listenerList.getListeners (javax.swing.event.ChangeListener);\r
72 });\r
73 Clazz.defineMethod (c$, "fireStateChanged", \r
74 function () {\r
75 var listeners = this.listenerList.getListenerList ();\r
76 for (var i = listeners.length - 2; i >= 0; i -= 2) {\r
77 if (listeners[i] === javax.swing.event.ChangeListener) {\r
78 if (this.changeEvent == null) this.changeEvent =  new javax.swing.event.ChangeEvent (this);\r
79 (listeners[i + 1]).stateChanged (this.changeEvent);\r
80 }}\r
81 });\r
82 Clazz.defineMethod (c$, "processMouseEvent", \r
83 function (event) {\r
84 var screenX;\r
85 var screenY;\r
86 var p;\r
87 var i;\r
88 var j;\r
89 var d;\r
90 var mc;\r
91 var r2;\r
92 var cWidth;\r
93 var cHeight;\r
94 var menuElement;\r
95 var subElements;\r
96 var path;\r
97 var tmp;\r
98 var selectionSize;\r
99 p = event.getPoint ();\r
100 var source = event.getSource ();\r
101 if (!source.isShowing ()) {\r
102 return;\r
103 }var type = event.getID ();\r
104 var modifiers = event.getModifiers ();\r
105 if ((type == 504 || type == 505) && ((modifiers & (28)) != 0)) {\r
106 return;\r
107 }javax.swing.SwingUtilities.convertPointToScreen (p, source);\r
108 screenX = p.x;\r
109 screenY = p.y;\r
110 tmp = this.selection.clone ();\r
111 selectionSize = tmp.size ();\r
112 var success = false;\r
113 for (i = selectionSize - 1; i >= 0 && success == false; i--) {\r
114 menuElement = tmp.elementAt (i);\r
115 subElements = menuElement.getSubElements ();\r
116 path = null;\r
117 for (j = 0, d = subElements.length; j < d && success == false; j++) {\r
118 if (subElements[j] == null) continue;\r
119 mc = subElements[j].getComponent ();\r
120 if (!mc.isShowing ()) continue;\r
121 if (Clazz.instanceOf (mc, javax.swing.JComponent)) {\r
122 cWidth = (mc).getWidth ();\r
123 cHeight = (mc).getHeight ();\r
124 } else {\r
125 r2 = mc.getBounds ();\r
126 cWidth = r2.width;\r
127 cHeight = r2.height;\r
128 }p.x = screenX;\r
129 p.y = screenY;\r
130 javax.swing.SwingUtilities.convertPointFromScreen (p, mc);\r
131 if ((p.x >= 0 && p.x < cWidth && p.y >= 0 && p.y < cHeight)) {\r
132 var k;\r
133 if (path == null) {\r
134 path =  new Array (i + 2);\r
135 for (k = 0; k <= i; k++) path[k] = tmp.elementAt (k);\r
136 \r
137 }path[i + 1] = subElements[j];\r
138 var currentSelection = this.getSelectedPath ();\r
139 if (currentSelection[currentSelection.length - 1] !== path[i + 1] && (currentSelection.length < 2 || currentSelection[currentSelection.length - 2] !== path[i + 1])) {\r
140 var oldMC = currentSelection[currentSelection.length - 1].getComponent ();\r
141 var exitEvent =  new java.awt.event.MouseEvent (oldMC, 505, event.getWhen (), event.getModifiers (), p.x, p.y, event.getXOnScreen (), event.getYOnScreen (), event.getClickCount (), event.isPopupTrigger (), 0);\r
142 currentSelection[currentSelection.length - 1].processMouseEvent (exitEvent, path, this);\r
143 var enterEvent =  new java.awt.event.MouseEvent (mc, 504, event.getWhen (), event.getModifiers (), p.x, p.y, event.getXOnScreen (), event.getYOnScreen (), event.getClickCount (), event.isPopupTrigger (), 0);\r
144 subElements[j].processMouseEvent (enterEvent, path, this);\r
145 }var mouseEvent =  new java.awt.event.MouseEvent (mc, event.getID (), event.getWhen (), event.getModifiers (), p.x, p.y, event.getXOnScreen (), event.getYOnScreen (), event.getClickCount (), event.isPopupTrigger (), 0);\r
146 subElements[j].processMouseEvent (mouseEvent, path, this);\r
147 success = true;\r
148 event.consume ();\r
149 }}\r
150 }\r
151 }, "java.awt.event.MouseEvent");\r
152 Clazz.defineMethod (c$, "componentForPoint", \r
153 function (source, sourcePoint) {\r
154 var screenX;\r
155 var screenY;\r
156 var p = sourcePoint;\r
157 var i;\r
158 var j;\r
159 var d;\r
160 var mc;\r
161 var r2;\r
162 var cWidth;\r
163 var cHeight;\r
164 var menuElement;\r
165 var subElements;\r
166 var tmp;\r
167 var selectionSize;\r
168 javax.swing.SwingUtilities.convertPointToScreen (p, source);\r
169 screenX = p.x;\r
170 screenY = p.y;\r
171 tmp = this.selection.clone ();\r
172 selectionSize = tmp.size ();\r
173 for (i = selectionSize - 1; i >= 0; i--) {\r
174 menuElement = tmp.elementAt (i);\r
175 subElements = menuElement.getSubElements ();\r
176 for (j = 0, d = subElements.length; j < d; j++) {\r
177 if (subElements[j] == null) continue;\r
178 mc = subElements[j].getComponent ();\r
179 if (!mc.isShowing ()) continue;\r
180 if (Clazz.instanceOf (mc, javax.swing.JComponent)) {\r
181 cWidth = (mc).getWidth ();\r
182 cHeight = (mc).getHeight ();\r
183 } else {\r
184 r2 = mc.getBounds ();\r
185 cWidth = r2.width;\r
186 cHeight = r2.height;\r
187 }p.x = screenX;\r
188 p.y = screenY;\r
189 javax.swing.SwingUtilities.convertPointFromScreen (p, mc);\r
190 if (p.x >= 0 && p.x < cWidth && p.y >= 0 && p.y < cHeight) {\r
191 return mc;\r
192 }}\r
193 }\r
194 return null;\r
195 }, "java.awt.Component,java.awt.Point");\r
196 Clazz.defineMethod (c$, "processKeyEvent", \r
197 function (e) {\r
198 var sel2 =  new Array (0);\r
199 sel2 = this.selection.toArray (sel2);\r
200 var selSize = sel2.length;\r
201 var path;\r
202 if (selSize < 1) {\r
203 return;\r
204 }for (var i = selSize - 1; i >= 0; i--) {\r
205 var elem = sel2[i];\r
206 var subs = elem.getSubElements ();\r
207 path = null;\r
208 for (var j = 0; j < subs.length; j++) {\r
209 if (subs[j] == null || !subs[j].getComponent ().isShowing () || !subs[j].getComponent ().isEnabled ()) {\r
210 continue;\r
211 }if (path == null) {\r
212 path =  new Array (i + 2);\r
213 System.arraycopy (sel2, 0, path, 0, i + 1);\r
214 }path[i + 1] = subs[j];\r
215 subs[j].processKeyEvent (e, path, this);\r
216 if (e.isConsumed ()) {\r
217 return;\r
218 }}\r
219 }\r
220 path =  new Array (1);\r
221 path[0] = sel2[0];\r
222 path[0].processKeyEvent (e, path, this);\r
223 if (e.isConsumed ()) {\r
224 return;\r
225 }}, "java.awt.event.KeyEvent");\r
226 Clazz.defineMethod (c$, "isComponentPartOfCurrentMenu", \r
227 function (c) {\r
228 if (this.selection.size () > 0) {\r
229 var me = this.selection.elementAt (0);\r
230 return this.isComponentPartOfCurrentMenu (me, c);\r
231 } else return false;\r
232 }, "java.awt.Component");\r
233 Clazz.defineMethod (c$, "isComponentPartOfCurrentMenu", \r
234  function (root, c) {\r
235 var children;\r
236 var i;\r
237 var d;\r
238 if (root == null) return false;\r
239 if (root.getComponent () === c) return true;\r
240  else {\r
241 children = root.getSubElements ();\r
242 for (i = 0, d = children.length; i < d; i++) {\r
243 if (this.isComponentPartOfCurrentMenu (children[i], c)) return true;\r
244 }\r
245 }return false;\r
246 }, "javax.swing.MenuElement,java.awt.Component");\r
247 c$.MENU_SELECTION_MANAGER_KEY = c$.prototype.MENU_SELECTION_MANAGER_KEY =  new Clazz._O ();\r
248 });\r