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", "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
9 Clazz.superConstructor (this, swingjs.JSToolkit);
\r
10 System.out.println ("JSToolkit initialized");
\r
12 c$.warn = Clazz.defineMethod (c$, "warn",
\r
14 swingjs.JSToolkit.alert (msg);
\r
16 c$.alert = Clazz.defineMethod (c$, "alert",
\r
19 console.log("[JSToolkit] " + object);
\r
20 alert("[JSToolkit] " + object);
\r
22 c$.log = Clazz.defineMethod (c$, "log",
\r
25 System.out.println(msg);
\r
28 c$.confirm = Clazz.defineMethod (c$, "confirm",
\r
31 return confirm(msg);
\r
33 c$.prompt = Clazz.defineMethod (c$, "prompt",
\r
34 function (msg, defaultRet) {
\r
36 return confirm(msg, defaultRet);
\r
38 c$.getPostEventQueue = Clazz.defineMethod (c$, "getPostEventQueue",
\r
40 return (isPost ? jssun.awt.AppContext.getAppContext ().get ("PostEventQueue") : jssun.awt.AppContext.getAppContext ().get (jssun.awt.AppContext.EVENT_QUEUE_KEY));
\r
42 Clazz.overrideMethod (c$, "getScreenSize",
\r
44 var d = new java.awt.Dimension (0, 0);
\r
45 var jq = swingjs.JSToolkit.getJQuery ();
\r
47 d.setSize(jq.$(window).width(), jq.$(window).height()); return
\r
50 Clazz.overrideMethod (c$, "getScreenResolution",
\r
54 Clazz.overrideMethod (c$, "getColorModel",
\r
56 return java.awt.image.ColorModel.getRGBdefault ();
\r
58 Clazz.overrideMethod (c$, "getFontList",
\r
60 var hardwiredFontList = Clazz.newArray (-1, ["SansSerif", "SansSerif", "Serif", "Monospaced", "DialogInput"]);
\r
61 return hardwiredFontList;
\r
63 Clazz.overrideMethod (c$, "sync",
\r
66 Clazz.overrideMethod (c$, "isModalExclusionTypeSupported",
\r
67 function (modalExclusionType) {
\r
69 }, "java.awt.Dialog.ModalExclusionType");
\r
70 Clazz.overrideMethod (c$, "isModalityTypeSupported",
\r
71 function (modalityType) {
\r
73 }, "java.awt.Dialog.ModalityType");
\r
74 Clazz.overrideMethod (c$, "isTraySupported",
\r
78 Clazz.overrideMethod (c$, "getScreenWidth",
\r
82 Clazz.overrideMethod (c$, "getScreenHeight",
\r
86 Clazz.overrideMethod (c$, "grab",
\r
88 }, "java.awt.Window");
\r
89 Clazz.overrideMethod (c$, "ungrab",
\r
91 }, "java.awt.Window");
\r
92 c$.getPropertyObject = Clazz.defineMethod (c$, "getPropertyObject",
\r
93 function (t, key, def) {
\r
96 c$.getInstance = Clazz.defineMethod (c$, "getInstance",
\r
97 function (className) {
\r
98 return swingjs.api.Interface.getInstance (className, false);
\r
100 c$.getGraphicsConfiguration = Clazz.defineMethod (c$, "getGraphicsConfiguration",
\r
102 return (swingjs.JSToolkit.gc == null ? swingjs.JSToolkit.gc = swingjs.JSToolkit.getInstance ("swingjs.JSGraphicsConfiguration") : swingjs.JSToolkit.gc);
\r
104 c$.isFocused = Clazz.defineMethod (c$, "isFocused",
\r
105 function (window) {
\r
107 }, "java.awt.Window");
\r
108 c$.getCSSFont = Clazz.defineMethod (c$, "getCSSFont",
\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
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
123 context.font = fontInfo;
\r
124 w = Math.ceil(context.measureText(text).width);
\r
126 }, "swingjs.api.HTML5CanvasContext2D,java.awt.Font,~S");
\r
127 c$.getDefaultCanvasContext2d = Clazz.defineMethod (c$, "getDefaultCanvasContext2d",
\r
130 if (this.defaultContext == null) this.defaultContext =
\r
131 document.createElement( 'canvas' ).getContext('2d');
\r
132 }return swingjs.JSToolkit.defaultContext;
\r
134 c$.getCanvasFont = Clazz.defineMethod (c$, "getCanvasFont",
\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
143 return font.getName ();
\r
144 }, "java.awt.Font");
\r
145 Clazz.overrideMethod (c$, "getFontMetrics",
\r
147 var fm = swingjs.JSToolkit.getInstance ("swingjs.JSFontMetrics");
\r
150 }, "java.awt.Font");
\r
151 c$.getCSSColor = Clazz.defineMethod (c$, "getCSSColor",
\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
159 if (swingjs.JSToolkit.mapNotImpl == null) swingjs.JSToolkit.mapNotImpl = new java.util.Hashtable ();
\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
168 c$.getStackTrace = Clazz.defineMethod (c$, "getStackTrace",
\r
171 return Clazz.getStackTrace();
\r
173 c$.getStackTrace = Clazz.defineMethod (c$, "getStackTrace",
\r
176 return Clazz.getStackTrace(n);
\r
178 c$.getLookAndFeelDefaults = Clazz.defineMethod (c$, "getLookAndFeelDefaults",
\r
180 if (swingjs.JSToolkit.uid == null) swingjs.JSToolkit.uid = javax.swing.UIManager.getLookAndFeel ().getDefaults ();
\r
181 return swingjs.JSToolkit.uid;
\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
188 }, "javax.swing.JComponent");
\r
189 c$.getSwingDivId = Clazz.defineMethod (c$, "getSwingDivId",
\r
191 return Thread.currentThread ().getName () + "_swingdiv";
\r
193 c$.getJQuery = Clazz.defineMethod (c$, "getJQuery",
\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
200 c$.getJavaResource = Clazz.defineMethod (c$, "getJavaResource",
\r
201 function (resourceName) {
\r
202 System.out.println ("JSToolkit getting Java resource " + resourceName);
\r
204 return SwingJS.getJavaResource(resourceName);
\r
206 c$.dispatchSystemEvent = Clazz.defineMethod (c$, "dispatchSystemEvent",
\r
207 function (runnable) {
\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
217 c$.dispatchEvent = Clazz.defineMethod (c$, "dispatchEvent",
\r
218 function (event, src, andWait) {
\r
220 var id = ++swingjs.JSToolkit.dispatchID;
\r
225 (src == null) event.dispatch(); else src.dispatchEvent(event);
\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
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
245 var s = "JSToolkit.setTimeout(" + id +"): " + e;
\r
246 System.out.println(s);
\r
248 SwingJS.eventID = id0;
\r
249 java.lang.Thread.thisThread = thread0;
\r
252 c$.invokeAndWait = Clazz.defineMethod (c$, "invokeAndWait",
\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
265 SwingJS.eventID = id0;
\r
266 java.lang.Thread.thisThread = thread0;
\r
268 }}, "swingjs.api.JSFunction,~N");
\r
269 c$.isDispatchThread = Clazz.defineMethod (c$, "isDispatchThread",
\r
272 return (!!SwingJS.eventID);
\r
274 c$.checkClassMethod = Clazz.defineMethod (c$, "checkClassMethod",
\r
275 function (component, fname, signature) {
\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
282 Jmol._readyCallback(aname, fname, true,a, me);
\r
283 }}, "~S,~S,~O,~O");
\r
284 c$.forceRepaint = Clazz.defineMethod (c$, "forceRepaint",
\r
286 }, "java.awt.Component");
\r
287 c$.getHTML5Applet = Clazz.defineMethod (c$, "getHTML5Applet",
\r
289 return (c.getAppContext ().getThreadGroup ()).getHtmlApplet ();
\r
290 }, "javax.swing.JComponent");
\r
291 c$.taintUI = Clazz.defineMethod (c$, "taintUI",
\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
304 return swingjs.JSToolkit.getInstance ("swingjs.JSPlainDocument");
\r
305 }, "javax.swing.JComponent");
\r
306 c$.getClassName = Clazz.defineMethod (c$, "getClassName",
\r
309 return c.__CLASS_NAME__;
\r
311 c$.getSignedStreamBytes = Clazz.defineMethod (c$, "getSignedStreamBytes",
\r
314 return JU.AU.ensureSignedBytes (JU.Rdr.getStreamAsBytes (bis, null));
\r
316 if (Clazz.exceptionOf (e, java.io.IOException)) {
\r
322 }, "java.io.BufferedInputStream");
\r
323 c$.getFileContents = Clazz.defineMethod (c$, "getFileContents",
\r
326 return Jmol._getFileData(uri);
\r
328 Clazz.defineMethod (c$, "getFileAsBytes",
\r
329 function (filename) {
\r
330 var data = swingjs.JSToolkit.getFileContents (filename);
\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
338 if (Clazz.exceptionOf (e, java.io.IOException)) {
\r
343 return JU.AU.ensureSignedBytes (b);
\r
345 Clazz.defineMethod (c$, "getImagekit",
\r
347 return (this.imageKit == null ? this.imageKit = swingjs.api.Interface.getInstance ("swingjs.JSImagekit", false) : this.imageKit);
\r
349 Clazz.defineMethod (c$, "createImage",
\r
350 function (producer) {
\r
351 producer.startProduction (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
358 Clazz.defineMethod (c$, "createImage",
\r
361 return this.getImagekit ().createImageFromBytes (swingjs.JSToolkit.getSignedStreamBytes ( new java.io.BufferedInputStream (url.openStream ())), 0, -1);
\r
363 if (Clazz.exceptionOf (e, java.io.IOException)) {
\r
369 }, "java.net.URL");
\r
370 Clazz.defineMethod (c$, "createImage",
\r
371 function (data, imageoffset, imagelength) {
\r
372 return this.getImagekit ().createImageFromBytes (data, imageoffset, imagelength);
\r
374 Clazz.overrideMethod (c$, "checkImage",
\r
375 function (image, width, height, observer) {
\r
377 }, "java.awt.Image,~N,~N,java.awt.image.ImageObserver");
\r
378 Clazz.overrideMethod (c$, "prepareImage",
\r
379 function (image, width, height, observer) {
\r
381 }, "java.awt.Image,~N,~N,java.awt.image.ImageObserver");
\r
382 c$.hasFocus = Clazz.defineMethod (c$, "hasFocus",
\r
384 var ui = swingjs.JSToolkit.getUI (c, false);
\r
385 return (ui != null && ui.hasFocus ());
\r
386 }, "java.awt.Component");
\r
387 c$.getUI = Clazz.defineMethod (c$, "getUI",
\r
388 function (c, isQuiet) {
\r
391 ui = c.getUI && c.getUI();
\r
393 var s = "[JSToolkit] Component " + c.getClass ().getName () + " has no cooresponding JSComponentUI.";
\r
394 System.out.println (s);
\r
396 }, "java.awt.Component,~B");
\r
397 c$.requestFocus = Clazz.defineMethod (c$, "requestFocus",
\r
399 var ui = swingjs.JSToolkit.getUI (c, false);
\r
400 if (ui == null || !ui.isFocusable ()) return false;
\r
401 var r = ((Clazz.isClassDefined ("swingjs.JSToolkit$1") ? 0 : swingjs.JSToolkit.$JSToolkit$1$ ()), Clazz.innerTypeInstance (swingjs.JSToolkit$1, this, Clazz.cloneFinals ("ui", ui)));
\r
402 swingjs.JSToolkit.setTimeout (r, 50, 0);
\r
404 }, "java.awt.Component");
\r
405 c$.getCompositor = Clazz.defineMethod (c$, "getCompositor",
\r
407 return (swingjs.JSToolkit.compositor == null ? swingjs.JSToolkit.compositor = swingjs.api.Interface.getInstance ("swingjs.JSGraphicsCompositor", false) : swingjs.JSToolkit.compositor);
\r
409 c$.setGraphicsCompositeAlpha = Clazz.defineMethod (c$, "setGraphicsCompositeAlpha",
\r
410 function (g, rule) {
\r
411 return swingjs.JSToolkit.getCompositor ().setGraphicsCompositeAlpha (g, rule);
\r
412 }, "swingjs.JSGraphics2D,~N");
\r
413 c$.drawImageOp = Clazz.defineMethod (c$, "drawImageOp",
\r
414 function (g, img, op, x, y) {
\r
415 return swingjs.JSToolkit.getCompositor ().drawImageOp (g, img, op, x, y);
\r
416 }, "swingjs.JSGraphics2D,java.awt.image.BufferedImage,java.awt.image.BufferedImageOp,~N,~N");
\r
417 c$.filterRaster = Clazz.defineMethod (c$, "filterRaster",
\r
418 function (src, dst, op) {
\r
419 return swingjs.JSToolkit.getCompositor ().filterRaster (src, dst, op);
\r
420 }, "java.awt.image.Raster,java.awt.image.WritableRaster,java.awt.image.RasterOp");
\r
421 c$.filterImage = Clazz.defineMethod (c$, "filterImage",
\r
422 function (src, dst, op) {
\r
423 return swingjs.JSToolkit.getCompositor ().filterImage (src, dst, op);
\r
424 }, "java.awt.image.BufferedImage,java.awt.image.BufferedImage,java.awt.image.BufferedImageOp");
\r
425 c$.getZIndex = Clazz.defineMethod (c$, "getZIndex",
\r
426 function (ui, what) {
\r
428 if (what) return getHTML5Applet(ui.c)._z[what];
\r
429 var c = ui.domNode; var z;
\r
430 while (c && !(z = c.style["z-index"])) {
\r
433 return z || 100000;
\r
434 }}, "swingjs.plaf.JSComponentUI,~S");
\r
435 Clazz.overrideMethod (c$, "createFrame",
\r
436 function (target) {
\r
437 return this.createWindowPeer (target, true);
\r
438 }, "java.awt.Frame");
\r
439 Clazz.overrideMethod (c$, "createWindow",
\r
440 function (target) {
\r
441 return this.createWindowPeer (target, false);
\r
442 }, "java.awt.Window");
\r
443 Clazz.defineMethod (c$, "createWindowPeer",
\r
444 function (target, isFrame) {
\r
445 return (swingjs.JSToolkit.getInstance ("swingjs.JSWindowPeer")).setFrame (target, true);
\r
446 }, "java.awt.Window,~B");
\r
447 c$.$JSToolkit$1$ = function () {
\r
448 Clazz.pu$h(self.c$);
\r
449 c$ = Clazz.declareAnonymous (swingjs, "JSToolkit$1", null, Runnable);
\r
450 Clazz.overrideMethod (c$, "run",
\r
452 this.f$.ui.requestFocus (null, false, false, 0, null);
\r
456 Clazz.defineStatics (c$,
\r
458 "defaultContext", null,
\r
459 "mapNotImpl", null,
\r
462 "compositor", null);
\r