JAL-1807 includes ?j2sdebug flag and DebugJS._(msg)
[jalviewjs.git] / site / j2s / swingjs / JSToolkit.js
1 Clazz.declarePackage ("swingjs");\r
2 Clazz.load (["jssun.awt.SunToolkit"], "swingjs.JSToolkit", ["java.io.BufferedInputStream", "$.ByteArrayInputStream", "$.InputStream", "java.lang.Boolean", "$.Thread", "java.util.Hashtable", "JU.AU", "$.Rdr", "$.SB", "java.awt.Dimension", "java.awt.image.ColorModel", "javax.swing.UIManager", "jssun.awt.AppContext", "swingjs.JSComponentPeer", "$.JSImage", "swingjs.api.Interface"], function () {\r
3 c$ = Clazz.decorateAsClass (function () {\r
4 this.imageKit = null;\r
5 Clazz.instantialize (this, arguments);\r
6 }, swingjs, "JSToolkit", jssun.awt.SunToolkit);\r
7 Clazz.makeConstructor (c$, \r
8 function () {\r
9 Clazz.superConstructor (this, swingjs.JSToolkit);\r
10 System.out.println ("JSToolkit initialized");\r
11 });\r
12 c$.warn = Clazz.defineMethod (c$, "warn", \r
13 function (msg) {\r
14 swingjs.JSToolkit.alert (msg);\r
15 }, "~S");\r
16 c$.alert = Clazz.defineMethod (c$, "alert", \r
17 function (object) {\r
18 {\r
19 console.log("[JSToolkit] " + object);\r
20 alert("[JSToolkit] " + object);\r
21 }}, "~O");\r
22 c$.log = Clazz.defineMethod (c$, "log", \r
23 function (msg) {\r
24 {\r
25 System.out.println(msg);\r
26 console.log(msg);\r
27 }}, "~S");\r
28 c$.confirm = Clazz.defineMethod (c$, "confirm", \r
29 function (msg) {\r
30 {\r
31 return confirm(msg);\r
32 }}, "~S");\r
33 c$.prompt = Clazz.defineMethod (c$, "prompt", \r
34 function (msg, defaultRet) {\r
35 {\r
36 return confirm(msg, defaultRet);\r
37 }}, "~S,~S");\r
38 c$.getPostEventQueue = Clazz.defineMethod (c$, "getPostEventQueue", \r
39 function (isPost) {\r
40 return (isPost ? jssun.awt.AppContext.getAppContext ().get ("PostEventQueue") : jssun.awt.AppContext.getAppContext ().get (jssun.awt.AppContext.EVENT_QUEUE_KEY));\r
41 }, "~B");\r
42 Clazz.overrideMethod (c$, "getScreenSize", \r
43 function () {\r
44 var d =  new java.awt.Dimension (0, 0);\r
45 var jq = swingjs.JSToolkit.getJQuery ();\r
46 {\r
47 d.setSize(jq.$(window).width(), jq.$(window).height()); return\r
48 d;\r
49 }});\r
50 Clazz.overrideMethod (c$, "getScreenResolution", \r
51 function () {\r
52 return 0;\r
53 });\r
54 Clazz.overrideMethod (c$, "getColorModel", \r
55 function () {\r
56 return java.awt.image.ColorModel.getRGBdefault ();\r
57 });\r
58 Clazz.overrideMethod (c$, "getFontList", \r
59 function () {\r
60 var hardwiredFontList =  Clazz.newArray (-1, ["SansSerif", "SansSerif", "Serif", "Monospaced", "DialogInput"]);\r
61 return hardwiredFontList;\r
62 });\r
63 Clazz.overrideMethod (c$, "sync", \r
64 function () {\r
65 });\r
66 Clazz.overrideMethod (c$, "isModalExclusionTypeSupported", \r
67 function (modalExclusionType) {\r
68 return true;\r
69 }, "java.awt.Dialog.ModalExclusionType");\r
70 Clazz.overrideMethod (c$, "isModalityTypeSupported", \r
71 function (modalityType) {\r
72 return false;\r
73 }, "java.awt.Dialog.ModalityType");\r
74 Clazz.overrideMethod (c$, "isTraySupported", \r
75 function () {\r
76 return false;\r
77 });\r
78 Clazz.overrideMethod (c$, "getScreenWidth", \r
79 function () {\r
80 return 0;\r
81 });\r
82 Clazz.overrideMethod (c$, "getScreenHeight", \r
83 function () {\r
84 return 0;\r
85 });\r
86 Clazz.overrideMethod (c$, "grab", \r
87 function (w) {\r
88 }, "java.awt.Window");\r
89 Clazz.overrideMethod (c$, "ungrab", \r
90 function (w) {\r
91 }, "java.awt.Window");\r
92 c$.getPropertyObject = Clazz.defineMethod (c$, "getPropertyObject", \r
93 function (t, key, def) {\r
94 return def;\r
95 }, "~O,~S,~O");\r
96 c$.getInstance = Clazz.defineMethod (c$, "getInstance", \r
97 function (className) {\r
98 return swingjs.api.Interface.getInstance (className, false);\r
99 }, "~S");\r
100 c$.getGraphicsConfiguration = Clazz.defineMethod (c$, "getGraphicsConfiguration", \r
101 function () {\r
102 return (swingjs.JSToolkit.gc == null ? swingjs.JSToolkit.gc = swingjs.JSToolkit.getInstance ("swingjs.JSGraphicsConfiguration") : swingjs.JSToolkit.gc);\r
103 });\r
104 c$.isFocused = Clazz.defineMethod (c$, "isFocused", \r
105 function (window) {\r
106 return false;\r
107 }, "java.awt.Window");\r
108 c$.getCSSFont = Clazz.defineMethod (c$, "getCSSFont", \r
109 function (font) {\r
110 var css = "";\r
111 if (font.isItalic ()) css += "font-style:italic;";\r
112 if (font.isBold ()) css += "font-weight:bold;";\r
113 css += "font-size:" + font.getSize () + "px;";\r
114 css += "font-family:" + font.getFamily () + ";";\r
115 return css;\r
116 }, "java.awt.Font");\r
117 c$.getStringWidth = Clazz.defineMethod (c$, "getStringWidth", \r
118 function (context, font, text) {\r
119 var fontInfo = swingjs.JSToolkit.getCanvasFont (font);\r
120 if (context == null) context = swingjs.JSToolkit.getDefaultCanvasContext2d ();\r
121 var w = 0;\r
122 {\r
123 context.font = fontInfo;\r
124 w = Math.ceil(context.measureText(text).width);\r
125 }return w;\r
126 }, "swingjs.api.HTML5CanvasContext2D,java.awt.Font,~S");\r
127 c$.getDefaultCanvasContext2d = Clazz.defineMethod (c$, "getDefaultCanvasContext2d", \r
128 function () {\r
129 {\r
130 if (this.defaultContext == null) this.defaultContext =\r
131 document.createElement( 'canvas' ).getContext('2d');\r
132 }return swingjs.JSToolkit.defaultContext;\r
133 });\r
134 c$.getCanvasFont = Clazz.defineMethod (c$, "getCanvasFont", \r
135 function (font) {\r
136 var strStyle = "";\r
137 if (font.isItalic ()) strStyle += "italic ";\r
138 if (font.isBold ()) strStyle += "bold ";\r
139 return strStyle + font.getSize () + "px " + font.getFamily ();\r
140 }, "java.awt.Font");\r
141 c$.getFontFamily = Clazz.defineMethod (c$, "getFontFamily", \r
142 function (font) {\r
143 return font.getName ();\r
144 }, "java.awt.Font");\r
145 Clazz.overrideMethod (c$, "getFontMetrics", \r
146 function (font) {\r
147 var fm = swingjs.JSToolkit.getInstance ("swingjs.JSFontMetrics");\r
148 fm.setFont (font);\r
149 return fm;\r
150 }, "java.awt.Font");\r
151 c$.getCSSColor = Clazz.defineMethod (c$, "getCSSColor", \r
152 function (c) {\r
153 var s = "000000" + Integer.toHexString (c.getRGB () & 0xFFFFFF);\r
154 return "#" + s.substring (s.length - 6);\r
155 }, "java.awt.Color");\r
156 c$.notImplemented = Clazz.defineMethod (c$, "notImplemented", \r
157 function (msg) {\r
158 var s = null;\r
159 if (swingjs.JSToolkit.mapNotImpl == null) swingjs.JSToolkit.mapNotImpl =  new java.util.Hashtable ();\r
160 {\r
161 s = arguments.callee.caller; s = s.__CLASS_NAME__ ||\r
162 s.claxxOwner.__CLASS_NAME__; s += "." +\r
163 arguments.callee.caller.exName;\r
164 }if (swingjs.JSToolkit.mapNotImpl.containsKey (s)) return;\r
165 swingjs.JSToolkit.mapNotImpl.put (s, Boolean.TRUE);\r
166 System.out.println (s + " has not been implemented in SwingJS. " + (msg === "" ? "" : (msg == null ? "" : msg) + swingjs.JSToolkit.getStackTrace (-5)));\r
167 }, "~S");\r
168 c$.getStackTrace = Clazz.defineMethod (c$, "getStackTrace", \r
169 function () {\r
170 {\r
171 return Clazz.getStackTrace();\r
172 }});\r
173 c$.getStackTrace = Clazz.defineMethod (c$, "getStackTrace", \r
174 function (n) {\r
175 {\r
176 return Clazz.getStackTrace(n);\r
177 }}, "~N");\r
178 c$.getLookAndFeelDefaults = Clazz.defineMethod (c$, "getLookAndFeelDefaults", \r
179 function () {\r
180 if (swingjs.JSToolkit.uid == null) swingjs.JSToolkit.uid = javax.swing.UIManager.getLookAndFeel ().getDefaults ();\r
181 return swingjs.JSToolkit.uid;\r
182 });\r
183 c$.getComponentUI = Clazz.defineMethod (c$, "getComponentUI", \r
184 function (target) {\r
185 var c = swingjs.api.Interface.getInstance ("swingjs.plaf.JS" + target.getUIClassID (), true);\r
186 if (c != null) c.set (target);\r
187 return c;\r
188 }, "javax.swing.JComponent");\r
189 c$.getSwingDivId = Clazz.defineMethod (c$, "getSwingDivId", \r
190 function () {\r
191 return Thread.currentThread ().getName () + "_swingdiv";\r
192 });\r
193 c$.getJQuery = Clazz.defineMethod (c$, "getJQuery", \r
194 function () {\r
195 {\r
196 if (!window.jQuery) alert(\r
197 "jQuery is required for SwingJS, but window.jQuery is not defined."\r
198 ); jQuery.$ || (jQuery.$ = jQuery); return(jQuery);\r
199 }});\r
200 c$.getJavaResource = Clazz.defineMethod (c$, "getJavaResource", \r
201 function (resourceName, isJavaPath) {\r
202 System.out.println ("JSToolkit getting Java resource " + resourceName);\r
203 {\r
204 return SwingJS.getJavaResource(resourceName, isJavaPath);\r
205 }}, "~S,~B");\r
206 c$.dispatchSystemEvent = Clazz.defineMethod (c$, "dispatchSystemEvent", \r
207 function (runnable) {\r
208 var f = null;\r
209 {\r
210 System.out.println("JST dispatchSystemEvent " +\r
211 runnable.run.toString()); f =\r
212 function(_JSToolkit_dispatchSystemEvent) {\r
213 System.out.println("JST running " +\r
214 runnable.run.toString());runnable.run()};\r
215 }swingjs.JSToolkit.setTimeout (f, 0, 0);\r
216 }, "Runnable");\r
217 c$.dispatchEvent = Clazz.defineMethod (c$, "dispatchEvent", \r
218 function (event, src, andWait) {\r
219 var f = null;\r
220 var id = ++swingjs.JSToolkit.dispatchID;\r
221 {\r
222 f = function()\r
223 {\r
224 if\r
225 (src == null) event.dispatch(); else src.dispatchEvent(event);\r
226 };\r
227 }if (andWait) swingjs.JSToolkit.invokeAndWait (f, id);\r
228  else swingjs.JSToolkit.setTimeout (f, 0, id);\r
229 }, "java.awt.AWTEvent,~O,~B");\r
230 c$.setTimeout = Clazz.defineMethod (c$, "setTimeout", \r
231 function (f, msDelay, id) {\r
232 {\r
233 var thread = java.lang.Thread.thisThread;\r
234 var thread0 = thread;\r
235 var id0 = SwingJS.eventID || 0;\r
236 setTimeout(function(_JSToolkit_setTimeout) {\r
237 SwingJS.eventID = id;\r
238 java.lang.Thread.thisThread = thread;\r
239 try {\r
240 if (f.run)\r
241 f.run();\r
242 else\r
243 f();\r
244 } catch (e) {\r
245 var s = "JSToolkit.setTimeout(" + id +"): " + e;\r
246 System.out.println(s);\r
247 alert(s)}\r
248 SwingJS.eventID = id0;\r
249 java.lang.Thread.thisThread = thread0;\r
250 }, msDelay);\r
251 }}, "~O,~N,~N");\r
252 c$.invokeAndWait = Clazz.defineMethod (c$, "invokeAndWait", \r
253  function (f, id) {\r
254 {\r
255 var thread = java.lang.Thread.thisThread;\r
256 var thread0 = thread;\r
257 (function(_JSToolkit_setTimeout) {\r
258 var id0 = SwingJS.eventID || 0;\r
259 System.out.println("runNow " + id); SwingJS.eventID = id;\r
260 java.lang.Thread.thisThread = thread;\r
261 if (f.run)\r
262 f.run();\r
263 else\r
264 f();\r
265 SwingJS.eventID = id0;\r
266 java.lang.Thread.thisThread = thread0;\r
267 })();\r
268 }}, "swingjs.api.JSFunction,~N");\r
269 c$.isDispatchThread = Clazz.defineMethod (c$, "isDispatchThread", \r
270 function () {\r
271 {\r
272 return (!!SwingJS.eventID);\r
273 }});\r
274 c$.checkClassMethod = Clazz.defineMethod (c$, "checkClassMethod", \r
275 function (component, fname, signature) {\r
276 {\r
277 return component[fname] && component[fname][signature];\r
278 }}, "java.awt.Component,~S,~S");\r
279 c$.readyCallback = Clazz.defineMethod (c$, "readyCallback", \r
280 function (aname, fname, a, me) {\r
281 {\r
282 Jmol._readyCallback(aname, fname, true,a, me);\r
283 }}, "~S,~S,~O,~O");\r
284 c$.forceRepaint = Clazz.defineMethod (c$, "forceRepaint", \r
285 function (c) {\r
286 }, "java.awt.Component");\r
287 c$.getHTML5Applet = Clazz.defineMethod (c$, "getHTML5Applet", \r
288 function (c) {\r
289 return (c.getAppContext ().getThreadGroup ()).getHtmlApplet ();\r
290 }, "javax.swing.JComponent");\r
291 c$.taintUI = Clazz.defineMethod (c$, "taintUI", \r
292 function (c) {\r
293 {\r
294 c.getUI && c.getUI() && c.getUI().setTainted();\r
295 }}, "java.awt.Component");\r
296 Clazz.overrideMethod (c$, "createComponent", \r
297 function (target) {\r
298 System.out.println ("JSToolkit creating LightweightPeer for " + target);\r
299 var peer = swingjs.JSToolkit.getUI (target, true);\r
300 return (peer == null ?  new swingjs.JSComponentPeer (target) : peer);\r
301 }, "java.awt.Component");\r
302 c$.getPlainDocument = Clazz.defineMethod (c$, "getPlainDocument", \r
303 function (c) {\r
304 return swingjs.JSToolkit.getInstance ("swingjs.JSPlainDocument");\r
305 }, "javax.swing.JComponent");\r
306 c$.getClassName = Clazz.defineMethod (c$, "getClassName", \r
307 function (c) {\r
308 {\r
309 return c.__CLASS_NAME__;\r
310 }}, "~O");\r
311 c$.getSignedStreamBytes = Clazz.defineMethod (c$, "getSignedStreamBytes", \r
312 function (bis) {\r
313 try {\r
314 return JU.AU.ensureSignedBytes (JU.Rdr.getStreamAsBytes (bis, null));\r
315 } catch (e) {\r
316 if (Clazz.exceptionOf (e, java.io.IOException)) {\r
317 return null;\r
318 } else {\r
319 throw e;\r
320 }\r
321 }\r
322 }, "java.io.BufferedInputStream");\r
323 c$.getFileContents = Clazz.defineMethod (c$, "getFileContents", \r
324 function (uri) {\r
325 {\r
326 return Jmol._getFileData(uri);\r
327 }}, "~S");\r
328 Clazz.defineMethod (c$, "getFileAsBytes", \r
329 function (filename) {\r
330 var data = swingjs.JSToolkit.getFileContents (filename);\r
331 var b = null;\r
332 if (JU.AU.isAB (data)) b = data;\r
333  else if (Clazz.instanceOf (data, String)) b = (data).getBytes ();\r
334  else if (Clazz.instanceOf (data, JU.SB)) b = JU.Rdr.getBytesFromSB (data);\r
335  else if (Clazz.instanceOf (data, java.io.InputStream)) try {\r
336 b = JU.Rdr.getLimitedStreamBytes (data, -1);\r
337 } catch (e) {\r
338 if (Clazz.exceptionOf (e, java.io.IOException)) {\r
339 } else {\r
340 throw e;\r
341 }\r
342 }\r
343 return JU.AU.ensureSignedBytes (b);\r
344 }, "~S");\r
345 Clazz.defineMethod (c$, "getImagekit", \r
346  function () {\r
347 return (this.imageKit == null ? this.imageKit = swingjs.api.Interface.getInstance ("swingjs.JSImagekit", false) : this.imageKit);\r
348 });\r
349 Clazz.defineMethod (c$, "createImage", \r
350 function (producer) {\r
351 producer.startProduction (null);\r
352 return null;\r
353 }, "java.awt.image.ImageProducer");\r
354 Clazz.defineMethod (c$, "createImage", \r
355 function (filename) {\r
356 return this.getImagekit ().createImageFromBytes (swingjs.JSToolkit.getSignedStreamBytes ( new java.io.BufferedInputStream ( new java.io.ByteArrayInputStream (this.getFileAsBytes (filename)))), 0, -1);\r
357 }, "~S");\r
358 Clazz.defineMethod (c$, "createImage", \r
359 function (url) {\r
360 try {\r
361 return this.getImagekit ().createImageFromBytes (swingjs.JSToolkit.getSignedStreamBytes ( new java.io.BufferedInputStream (url.openStream ())), 0, -1);\r
362 } catch (e) {\r
363 if (Clazz.exceptionOf (e, java.io.IOException)) {\r
364 return null;\r
365 } else {\r
366 throw e;\r
367 }\r
368 }\r
369 }, "java.net.URL");\r
370 Clazz.defineMethod (c$, "createImage", \r
371 function (data, imageoffset, imagelength) {\r
372 if (data == null) {\r
373 var width = imageoffset;\r
374 var height = imagelength;\r
375 return  new swingjs.JSImage (null, width, height);\r
376 }return this.getImagekit ().createImageFromBytes (data, imageoffset, imagelength);\r
377 }, "~A,~N,~N");\r
378 Clazz.overrideMethod (c$, "checkImage", \r
379 function (image, width, height, observer) {\r
380 return 63;\r
381 }, "java.awt.Image,~N,~N,java.awt.image.ImageObserver");\r
382 Clazz.overrideMethod (c$, "prepareImage", \r
383 function (image, width, height, observer) {\r
384 return true;\r
385 }, "java.awt.Image,~N,~N,java.awt.image.ImageObserver");\r
386 c$.hasFocus = Clazz.defineMethod (c$, "hasFocus", \r
387 function (c) {\r
388 var ui = swingjs.JSToolkit.getUI (c, false);\r
389 return (ui != null && ui.hasFocus ());\r
390 }, "java.awt.Component");\r
391 c$.getUI = Clazz.defineMethod (c$, "getUI", \r
392 function (c, isQuiet) {\r
393 var ui = null;\r
394 {\r
395 ui = c.getUI && c.getUI();\r
396 }if (ui == null) {\r
397 var s = "[JSToolkit] Component " + c.getClass ().getName () + " has no cooresponding JSComponentUI.";\r
398 System.out.println (s);\r
399 }return ui;\r
400 }, "java.awt.Component,~B");\r
401 c$.requestFocus = Clazz.defineMethod (c$, "requestFocus", \r
402 function (c) {\r
403 var ui = swingjs.JSToolkit.getUI (c, false);\r
404 if (ui == null || !ui.isFocusable ()) return false;\r
405 var r = ((Clazz.isClassDefined ("swingjs.JSToolkit$1") ? 0 : swingjs.JSToolkit.$JSToolkit$1$ ()), Clazz.innerTypeInstance (swingjs.JSToolkit$1, this, Clazz.cloneFinals ("ui", ui)));\r
406 swingjs.JSToolkit.setTimeout (r, 50, 0);\r
407 return true;\r
408 }, "java.awt.Component");\r
409 c$.getCompositor = Clazz.defineMethod (c$, "getCompositor", \r
410 function () {\r
411 return (swingjs.JSToolkit.compositor == null ? swingjs.JSToolkit.compositor = swingjs.api.Interface.getInstance ("swingjs.JSGraphicsCompositor", false) : swingjs.JSToolkit.compositor);\r
412 });\r
413 c$.setGraphicsCompositeAlpha = Clazz.defineMethod (c$, "setGraphicsCompositeAlpha", \r
414 function (g, rule) {\r
415 return swingjs.JSToolkit.getCompositor ().setGraphicsCompositeAlpha (g, rule);\r
416 }, "swingjs.JSGraphics2D,~N");\r
417 c$.drawImageOp = Clazz.defineMethod (c$, "drawImageOp", \r
418 function (g, img, op, x, y) {\r
419 return swingjs.JSToolkit.getCompositor ().drawImageOp (g, img, op, x, y);\r
420 }, "swingjs.JSGraphics2D,java.awt.image.BufferedImage,java.awt.image.BufferedImageOp,~N,~N");\r
421 c$.filterRaster = Clazz.defineMethod (c$, "filterRaster", \r
422 function (src, dst, op) {\r
423 return swingjs.JSToolkit.getCompositor ().filterRaster (src, dst, op);\r
424 }, "java.awt.image.Raster,java.awt.image.WritableRaster,java.awt.image.RasterOp");\r
425 c$.filterImage = Clazz.defineMethod (c$, "filterImage", \r
426 function (src, dst, op) {\r
427 return swingjs.JSToolkit.getCompositor ().filterImage (src, dst, op);\r
428 }, "java.awt.image.BufferedImage,java.awt.image.BufferedImage,java.awt.image.BufferedImageOp");\r
429 c$.getZIndex = Clazz.defineMethod (c$, "getZIndex", \r
430 function (ui, what) {\r
431 {\r
432 if (what) return getHTML5Applet(ui.c)._z[what];\r
433 var c = ui.domNode; var z;\r
434 while (c && !(z = c.style["z-index"])) {\r
435 c = c.parentNode;\r
436 }\r
437 return z || 100000;\r
438 }}, "swingjs.plaf.JSComponentUI,~S");\r
439 Clazz.overrideMethod (c$, "createFrame", \r
440 function (target) {\r
441 return this.createWindowPeer (target, true);\r
442 }, "java.awt.Frame");\r
443 Clazz.overrideMethod (c$, "createWindow", \r
444 function (target) {\r
445 return this.createWindowPeer (target, false);\r
446 }, "java.awt.Window");\r
447 Clazz.defineMethod (c$, "createWindowPeer", \r
448  function (target, isFrame) {\r
449 return (swingjs.JSToolkit.getInstance ("swingjs.JSWindowPeer")).setFrame (target, true);\r
450 }, "java.awt.Window,~B");\r
451 c$.$JSToolkit$1$ = function () {\r
452 Clazz.pu$h(self.c$);\r
453 c$ = Clazz.declareAnonymous (swingjs, "JSToolkit$1", null, Runnable);\r
454 Clazz.overrideMethod (c$, "run", \r
455 function () {\r
456 this.f$.ui.requestFocus (null, false, false, 0, null);\r
457 });\r
458 c$ = Clazz.p0p ();\r
459 };\r
460 Clazz.defineStatics (c$,\r
461 "gc", null,\r
462 "defaultContext", null,\r
463 "mapNotImpl", null,\r
464 "uid", null,\r
465 "dispatchID", 0,\r
466 "compositor", null);\r
467 });\r