1 Clazz.declarePackage ("javax.swing");
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 () {
3 c$ = Clazz.decorateAsClass (function () {
5 this.changeEvent = null;
6 this.listenerList = null;
7 Clazz.instantialize (this, arguments);
8 }, javax.swing, "MenuSelectionManager");
9 Clazz.prepareFields (c$, function () {
10 this.selection = new java.util.Vector ();
11 this.listenerList = new javax.swing.event.EventListenerList ();
13 c$.defaultManager = Clazz.defineMethod (c$, "defaultManager",
16 var context = jssun.awt.AppContext.getAppContext ();
17 var msm = context.get (javax.swing.MenuSelectionManager.MENU_SELECTION_MANAGER_KEY);
19 msm = new javax.swing.MenuSelectionManager ();
20 context.put (javax.swing.MenuSelectionManager.MENU_SELECTION_MANAGER_KEY, msm);
23 Clazz.defineMethod (c$, "setSelectedPath",
27 var currentSelectionCount = this.selection.size ();
28 var firstDifference = 0;
31 }for (i = 0, c = path.length; i < c; i++) {
32 if (i < currentSelectionCount && this.selection.elementAt (i) === path[i]) firstDifference++;
35 for (i = currentSelectionCount - 1; i >= firstDifference; i--) {
36 var me = this.selection.elementAt (i);
37 this.selection.removeElementAt (i);
38 me.menuSelectionChanged (false);
40 for (i = firstDifference, c = path.length; i < c; i++) {
41 if (path[i] != null) {
42 this.selection.addElement (path[i]);
43 path[i].menuSelectionChanged (true);
45 this.fireStateChanged ();
47 Clazz.defineMethod (c$, "getSelectedPath",
49 var res = new Array (this.selection.size ());
52 for (i = 0, c = this.selection.size (); i < c; i++) res[i] = this.selection.elementAt (i);
56 Clazz.defineMethod (c$, "clearSelectedPath",
58 if (this.selection.size () > 0) {
59 this.setSelectedPath (null);
61 Clazz.defineMethod (c$, "addChangeListener",
63 this.listenerList.add (javax.swing.event.ChangeListener, l);
64 }, "javax.swing.event.ChangeListener");
65 Clazz.defineMethod (c$, "removeChangeListener",
67 this.listenerList.remove (javax.swing.event.ChangeListener, l);
68 }, "javax.swing.event.ChangeListener");
69 Clazz.defineMethod (c$, "getChangeListeners",
71 return this.listenerList.getListeners (javax.swing.event.ChangeListener);
73 Clazz.defineMethod (c$, "fireStateChanged",
75 var listeners = this.listenerList.getListenerList ();
76 for (var i = listeners.length - 2; i >= 0; i -= 2) {
77 if (listeners[i] === javax.swing.event.ChangeListener) {
78 if (this.changeEvent == null) this.changeEvent = new javax.swing.event.ChangeEvent (this);
79 (listeners[i + 1]).stateChanged (this.changeEvent);
82 Clazz.defineMethod (c$, "processMouseEvent",
99 p = event.getPoint ();
100 var source = event.getSource ();
101 if (!source.isShowing ()) {
103 }var type = event.getID ();
104 var modifiers = event.getModifiers ();
105 if ((type == 504 || type == 505) && ((modifiers & (28)) != 0)) {
107 }javax.swing.SwingUtilities.convertPointToScreen (p, source);
110 tmp = this.selection.clone ();
111 selectionSize = tmp.size ();
113 for (i = selectionSize - 1; i >= 0 && success == false; i--) {
114 menuElement = tmp.elementAt (i);
115 subElements = menuElement.getSubElements ();
117 for (j = 0, d = subElements.length; j < d && success == false; j++) {
118 if (subElements[j] == null) continue;
119 mc = subElements[j].getComponent ();
120 if (!mc.isShowing ()) continue;
121 if (Clazz.instanceOf (mc, javax.swing.JComponent)) {
122 cWidth = (mc).getWidth ();
123 cHeight = (mc).getHeight ();
125 r2 = mc.getBounds ();
130 javax.swing.SwingUtilities.convertPointFromScreen (p, mc);
131 if ((p.x >= 0 && p.x < cWidth && p.y >= 0 && p.y < cHeight)) {
134 path = new Array (i + 2);
135 for (k = 0; k <= i; k++) path[k] = tmp.elementAt (k);
137 }path[i + 1] = subElements[j];
138 var currentSelection = this.getSelectedPath ();
139 if (currentSelection[currentSelection.length - 1] !== path[i + 1] && (currentSelection.length < 2 || currentSelection[currentSelection.length - 2] !== path[i + 1])) {
140 var oldMC = currentSelection[currentSelection.length - 1].getComponent ();
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);
142 currentSelection[currentSelection.length - 1].processMouseEvent (exitEvent, path, this);
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);
144 subElements[j].processMouseEvent (enterEvent, path, this);
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);
146 subElements[j].processMouseEvent (mouseEvent, path, this);
151 }, "java.awt.event.MouseEvent");
152 Clazz.defineMethod (c$, "componentForPoint",
153 function (source, sourcePoint) {
168 javax.swing.SwingUtilities.convertPointToScreen (p, source);
171 tmp = this.selection.clone ();
172 selectionSize = tmp.size ();
173 for (i = selectionSize - 1; i >= 0; i--) {
174 menuElement = tmp.elementAt (i);
175 subElements = menuElement.getSubElements ();
176 for (j = 0, d = subElements.length; j < d; j++) {
177 if (subElements[j] == null) continue;
178 mc = subElements[j].getComponent ();
179 if (!mc.isShowing ()) continue;
180 if (Clazz.instanceOf (mc, javax.swing.JComponent)) {
181 cWidth = (mc).getWidth ();
182 cHeight = (mc).getHeight ();
184 r2 = mc.getBounds ();
189 javax.swing.SwingUtilities.convertPointFromScreen (p, mc);
190 if (p.x >= 0 && p.x < cWidth && p.y >= 0 && p.y < cHeight) {
195 }, "java.awt.Component,java.awt.Point");
196 Clazz.defineMethod (c$, "processKeyEvent",
198 var sel2 = new Array (0);
199 sel2 = this.selection.toArray (sel2);
200 var selSize = sel2.length;
204 }for (var i = selSize - 1; i >= 0; i--) {
206 var subs = elem.getSubElements ();
208 for (var j = 0; j < subs.length; j++) {
209 if (subs[j] == null || !subs[j].getComponent ().isShowing () || !subs[j].getComponent ().isEnabled ()) {
212 path = new Array (i + 2);
213 System.arraycopy (sel2, 0, path, 0, i + 1);
214 }path[i + 1] = subs[j];
215 subs[j].processKeyEvent (e, path, this);
216 if (e.isConsumed ()) {
220 path = new Array (1);
222 path[0].processKeyEvent (e, path, this);
223 if (e.isConsumed ()) {
225 }}, "java.awt.event.KeyEvent");
226 Clazz.defineMethod (c$, "isComponentPartOfCurrentMenu",
228 if (this.selection.size () > 0) {
229 var me = this.selection.elementAt (0);
230 return this.isComponentPartOfCurrentMenu (me, c);
232 }, "java.awt.Component");
233 Clazz.defineMethod (c$, "isComponentPartOfCurrentMenu",
238 if (root == null) return false;
239 if (root.getComponent () === c) return true;
241 children = root.getSubElements ();
242 for (i = 0, d = children.length; i < d; i++) {
243 if (this.isComponentPartOfCurrentMenu (children[i], c)) return true;
246 }, "javax.swing.MenuElement,java.awt.Component");
247 c$.MENU_SELECTION_MANAGER_KEY = c$.prototype.MENU_SELECTION_MANAGER_KEY = new Clazz._O ();