2b6635ad5a8b078b5b3d3638f6b2e19cc48af478
[jalviewjs.git] / site / swingjs / j2s / javax / swing / MenuSelectionManager.js
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 () {
4 this.selection = null;
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 ();
12 });
13 c$.defaultManager = Clazz.defineMethod (c$, "defaultManager", 
14 function () {
15 {
16 var context = jssun.awt.AppContext.getAppContext ();
17 var msm = context.get (javax.swing.MenuSelectionManager.MENU_SELECTION_MANAGER_KEY);
18 if (msm == null) {
19 msm =  new javax.swing.MenuSelectionManager ();
20 context.put (javax.swing.MenuSelectionManager.MENU_SELECTION_MANAGER_KEY, msm);
21 }return msm;
22 }});
23 Clazz.defineMethod (c$, "setSelectedPath", 
24 function (path) {
25 var i;
26 var c;
27 var currentSelectionCount = this.selection.size ();
28 var firstDifference = 0;
29 if (path == null) {
30 path =  new Array (0);
31 }for (i = 0, c = path.length; i < c; i++) {
32 if (i < currentSelectionCount && this.selection.elementAt (i) === path[i]) firstDifference++;
33  else break;
34 }
35 for (i = currentSelectionCount - 1; i >= firstDifference; i--) {
36 var me = this.selection.elementAt (i);
37 this.selection.removeElementAt (i);
38 me.menuSelectionChanged (false);
39 }
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);
44 }}
45 this.fireStateChanged ();
46 }, "~A");
47 Clazz.defineMethod (c$, "getSelectedPath", 
48 function () {
49 var res =  new Array (this.selection.size ());
50 var i;
51 var c;
52 for (i = 0, c = this.selection.size (); i < c; i++) res[i] = this.selection.elementAt (i);
53
54 return res;
55 });
56 Clazz.defineMethod (c$, "clearSelectedPath", 
57 function () {
58 if (this.selection.size () > 0) {
59 this.setSelectedPath (null);
60 }});
61 Clazz.defineMethod (c$, "addChangeListener", 
62 function (l) {
63 this.listenerList.add (javax.swing.event.ChangeListener, l);
64 }, "javax.swing.event.ChangeListener");
65 Clazz.defineMethod (c$, "removeChangeListener", 
66 function (l) {
67 this.listenerList.remove (javax.swing.event.ChangeListener, l);
68 }, "javax.swing.event.ChangeListener");
69 Clazz.defineMethod (c$, "getChangeListeners", 
70 function () {
71 return this.listenerList.getListeners (javax.swing.event.ChangeListener);
72 });
73 Clazz.defineMethod (c$, "fireStateChanged", 
74 function () {
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);
80 }}
81 });
82 Clazz.defineMethod (c$, "processMouseEvent", 
83 function (event) {
84 var screenX;
85 var screenY;
86 var p;
87 var i;
88 var j;
89 var d;
90 var mc;
91 var r2;
92 var cWidth;
93 var cHeight;
94 var menuElement;
95 var subElements;
96 var path;
97 var tmp;
98 var selectionSize;
99 p = event.getPoint ();
100 var source = event.getSource ();
101 if (!source.isShowing ()) {
102 return;
103 }var type = event.getID ();
104 var modifiers = event.getModifiers ();
105 if ((type == 504 || type == 505) && ((modifiers & (28)) != 0)) {
106 return;
107 }javax.swing.SwingUtilities.convertPointToScreen (p, source);
108 screenX = p.x;
109 screenY = p.y;
110 tmp = this.selection.clone ();
111 selectionSize = tmp.size ();
112 var success = false;
113 for (i = selectionSize - 1; i >= 0 && success == false; i--) {
114 menuElement = tmp.elementAt (i);
115 subElements = menuElement.getSubElements ();
116 path = null;
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 ();
124 } else {
125 r2 = mc.getBounds ();
126 cWidth = r2.width;
127 cHeight = r2.height;
128 }p.x = screenX;
129 p.y = screenY;
130 javax.swing.SwingUtilities.convertPointFromScreen (p, mc);
131 if ((p.x >= 0 && p.x < cWidth && p.y >= 0 && p.y < cHeight)) {
132 var k;
133 if (path == null) {
134 path =  new Array (i + 2);
135 for (k = 0; k <= i; k++) path[k] = tmp.elementAt (k);
136
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);
147 success = true;
148 event.consume ();
149 }}
150 }
151 }, "java.awt.event.MouseEvent");
152 Clazz.defineMethod (c$, "componentForPoint", 
153 function (source, sourcePoint) {
154 var screenX;
155 var screenY;
156 var p = sourcePoint;
157 var i;
158 var j;
159 var d;
160 var mc;
161 var r2;
162 var cWidth;
163 var cHeight;
164 var menuElement;
165 var subElements;
166 var tmp;
167 var selectionSize;
168 javax.swing.SwingUtilities.convertPointToScreen (p, source);
169 screenX = p.x;
170 screenY = p.y;
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 ();
183 } else {
184 r2 = mc.getBounds ();
185 cWidth = r2.width;
186 cHeight = r2.height;
187 }p.x = screenX;
188 p.y = screenY;
189 javax.swing.SwingUtilities.convertPointFromScreen (p, mc);
190 if (p.x >= 0 && p.x < cWidth && p.y >= 0 && p.y < cHeight) {
191 return mc;
192 }}
193 }
194 return null;
195 }, "java.awt.Component,java.awt.Point");
196 Clazz.defineMethod (c$, "processKeyEvent", 
197 function (e) {
198 var sel2 =  new Array (0);
199 sel2 = this.selection.toArray (sel2);
200 var selSize = sel2.length;
201 var path;
202 if (selSize < 1) {
203 return;
204 }for (var i = selSize - 1; i >= 0; i--) {
205 var elem = sel2[i];
206 var subs = elem.getSubElements ();
207 path = null;
208 for (var j = 0; j < subs.length; j++) {
209 if (subs[j] == null || !subs[j].getComponent ().isShowing () || !subs[j].getComponent ().isEnabled ()) {
210 continue;
211 }if (path == null) {
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 ()) {
217 return;
218 }}
219 }
220 path =  new Array (1);
221 path[0] = sel2[0];
222 path[0].processKeyEvent (e, path, this);
223 if (e.isConsumed ()) {
224 return;
225 }}, "java.awt.event.KeyEvent");
226 Clazz.defineMethod (c$, "isComponentPartOfCurrentMenu", 
227 function (c) {
228 if (this.selection.size () > 0) {
229 var me = this.selection.elementAt (0);
230 return this.isComponentPartOfCurrentMenu (me, c);
231 } else return false;
232 }, "java.awt.Component");
233 Clazz.defineMethod (c$, "isComponentPartOfCurrentMenu", 
234  function (root, c) {
235 var children;
236 var i;
237 var d;
238 if (root == null) return false;
239 if (root.getComponent () === c) return true;
240  else {
241 children = root.getSubElements ();
242 for (i = 0, d = children.length; i < d; i++) {
243 if (this.isComponentPartOfCurrentMenu (children[i], c)) return true;
244 }
245 }return false;
246 }, "javax.swing.MenuElement,java.awt.Component");
247 c$.MENU_SELECTION_MANAGER_KEY = c$.prototype.MENU_SELECTION_MANAGER_KEY =  new Clazz._O ();
248 });