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