JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / bin / jalview / util / BrowserLauncher.js
1 Clazz.declarePackage ("jalview.util");\r
2 Clazz.load (null, "jalview.util.BrowserLauncher", ["jalview.bin.Cache", "jalview.util.MessageManager", "java.io.File", "$.IOException", "java.lang.Double", "$.Runtime"], function () {\r
3 c$ = Clazz.declareType (jalview.util, "BrowserLauncher");\r
4 c$.loadClasses = Clazz.defineMethod (c$, "loadClasses", \r
5 ($fz = function () {\r
6 switch (jalview.util.BrowserLauncher.jvm) {\r
7 case 0:\r
8 try {\r
9 var aeTargetClass = Class.forName ("com.apple.MacOS.AETarget");\r
10 var osUtilsClass = Class.forName ("com.apple.MacOS.OSUtils");\r
11 var appleEventClass = Class.forName ("com.apple.MacOS.AppleEvent");\r
12 var aeClass = Class.forName ("com.apple.MacOS.ae");\r
13 jalview.util.BrowserLauncher.aeDescClass = Class.forName ("com.apple.MacOS.AEDesc");\r
14 jalview.util.BrowserLauncher.aeTargetConstructor = aeTargetClass.getDeclaredConstructor ( Clazz.newArray (-1, [Number]));\r
15 jalview.util.BrowserLauncher.appleEventConstructor = appleEventClass.getDeclaredConstructor ( Clazz.newArray (-1, [Number, Number, aeTargetClass, Number, Number]));\r
16 jalview.util.BrowserLauncher.aeDescConstructor = jalview.util.BrowserLauncher.aeDescClass.getDeclaredConstructor ( Clazz.newArray (-1, [String]));\r
17 jalview.util.BrowserLauncher.makeOSType = osUtilsClass.getDeclaredMethod ("makeOSType",  Clazz.newArray (-1, [String]));\r
18 jalview.util.BrowserLauncher.putParameter = appleEventClass.getDeclaredMethod ("putParameter",  Clazz.newArray (-1, [Number, jalview.util.BrowserLauncher.aeDescClass]));\r
19 jalview.util.BrowserLauncher.sendNoReply = appleEventClass.getDeclaredMethod ("sendNoReply",  Clazz.newArray (-1, []));\r
20 var keyDirectObjectField = aeClass.getDeclaredField ("keyDirectObject");\r
21 jalview.util.BrowserLauncher.keyDirectObject = keyDirectObjectField.get (null);\r
22 var autoGenerateReturnIDField = appleEventClass.getDeclaredField ("kAutoGenerateReturnID");\r
23 jalview.util.BrowserLauncher.kAutoGenerateReturnID = autoGenerateReturnIDField.get (null);\r
24 var anyTransactionIDField = appleEventClass.getDeclaredField ("kAnyTransactionID");\r
25 jalview.util.BrowserLauncher.kAnyTransactionID = anyTransactionIDField.get (null);\r
26 } catch (e$$) {\r
27 if (Clazz.exceptionOf (e$$, ClassNotFoundException)) {\r
28 var cnfe = e$$;\r
29 {\r
30 jalview.util.BrowserLauncher.errorMessage = cnfe.getMessage ();\r
31 return false;\r
32 }\r
33 } else if (Clazz.exceptionOf (e$$, NoSuchMethodException)) {\r
34 var nsme = e$$;\r
35 {\r
36 jalview.util.BrowserLauncher.errorMessage = nsme.getMessage ();\r
37 return false;\r
38 }\r
39 } else if (Clazz.exceptionOf (e$$, NoSuchFieldException)) {\r
40 var nsfe = e$$;\r
41 {\r
42 jalview.util.BrowserLauncher.errorMessage = nsfe.getMessage ();\r
43 return false;\r
44 }\r
45 } else if (Clazz.exceptionOf (e$$, IllegalAccessException)) {\r
46 var iae = e$$;\r
47 {\r
48 jalview.util.BrowserLauncher.errorMessage = iae.getMessage ();\r
49 return false;\r
50 }\r
51 } else {\r
52 throw e$$;\r
53 }\r
54 }\r
55 break;\r
56 case 1:\r
57 try {\r
58 jalview.util.BrowserLauncher.mrjFileUtilsClass = Class.forName ("com.apple.mrj.MRJFileUtils");\r
59 jalview.util.BrowserLauncher.mrjOSTypeClass = Class.forName ("com.apple.mrj.MRJOSType");\r
60 var systemFolderField = jalview.util.BrowserLauncher.mrjFileUtilsClass.getDeclaredField ("kSystemFolderType");\r
61 jalview.util.BrowserLauncher.kSystemFolderType = systemFolderField.get (null);\r
62 jalview.util.BrowserLauncher.findFolder = jalview.util.BrowserLauncher.mrjFileUtilsClass.getDeclaredMethod ("findFolder",  Clazz.newArray (-1, [jalview.util.BrowserLauncher.mrjOSTypeClass]));\r
63 jalview.util.BrowserLauncher.getFileCreator = jalview.util.BrowserLauncher.mrjFileUtilsClass.getDeclaredMethod ("getFileCreator",  Clazz.newArray (-1, [java.io.File]));\r
64 jalview.util.BrowserLauncher.getFileType = jalview.util.BrowserLauncher.mrjFileUtilsClass.getDeclaredMethod ("getFileType",  Clazz.newArray (-1, [java.io.File]));\r
65 } catch (e$$) {\r
66 if (Clazz.exceptionOf (e$$, ClassNotFoundException)) {\r
67 var cnfe = e$$;\r
68 {\r
69 jalview.util.BrowserLauncher.errorMessage = cnfe.getMessage ();\r
70 return false;\r
71 }\r
72 } else if (Clazz.exceptionOf (e$$, NoSuchFieldException)) {\r
73 var nsfe = e$$;\r
74 {\r
75 jalview.util.BrowserLauncher.errorMessage = nsfe.getMessage ();\r
76 return false;\r
77 }\r
78 } else if (Clazz.exceptionOf (e$$, NoSuchMethodException)) {\r
79 var nsme = e$$;\r
80 {\r
81 jalview.util.BrowserLauncher.errorMessage = nsme.getMessage ();\r
82 return false;\r
83 }\r
84 } else if (Clazz.exceptionOf (e$$, SecurityException)) {\r
85 var se = e$$;\r
86 {\r
87 jalview.util.BrowserLauncher.errorMessage = se.getMessage ();\r
88 return false;\r
89 }\r
90 } else if (Clazz.exceptionOf (e$$, IllegalAccessException)) {\r
91 var iae = e$$;\r
92 {\r
93 jalview.util.BrowserLauncher.errorMessage = iae.getMessage ();\r
94 return false;\r
95 }\r
96 } else {\r
97 throw e$$;\r
98 }\r
99 }\r
100 break;\r
101 case 3:\r
102 try {\r
103 var linker = Class.forName ("com.apple.mrj.jdirect.Linker");\r
104 var constructor = linker.getConstructor ( Clazz.newArray (-1, [Class]));\r
105 jalview.util.BrowserLauncher.linkage = constructor.newInstance ( Clazz.newArray (-1, [jalview.util.BrowserLauncher]));\r
106 } catch (e$$) {\r
107 if (Clazz.exceptionOf (e$$, ClassNotFoundException)) {\r
108 var cnfe = e$$;\r
109 {\r
110 jalview.util.BrowserLauncher.errorMessage = cnfe.getMessage ();\r
111 return false;\r
112 }\r
113 } else if (Clazz.exceptionOf (e$$, NoSuchMethodException)) {\r
114 var nsme = e$$;\r
115 {\r
116 jalview.util.BrowserLauncher.errorMessage = nsme.getMessage ();\r
117 return false;\r
118 }\r
119 } else if (Clazz.exceptionOf (e$$, java.lang.reflect.InvocationTargetException)) {\r
120 var ite = e$$;\r
121 {\r
122 jalview.util.BrowserLauncher.errorMessage = ite.getMessage ();\r
123 return false;\r
124 }\r
125 } else if (Clazz.exceptionOf (e$$, InstantiationException)) {\r
126 var ie = e$$;\r
127 {\r
128 jalview.util.BrowserLauncher.errorMessage = ie.getMessage ();\r
129 return false;\r
130 }\r
131 } else if (Clazz.exceptionOf (e$$, IllegalAccessException)) {\r
132 var iae = e$$;\r
133 {\r
134 jalview.util.BrowserLauncher.errorMessage = iae.getMessage ();\r
135 return false;\r
136 }\r
137 } else {\r
138 throw e$$;\r
139 }\r
140 }\r
141 break;\r
142 case 4:\r
143 try {\r
144 jalview.util.BrowserLauncher.mrjFileUtilsClass = Class.forName ("com.apple.mrj.MRJFileUtils");\r
145 jalview.util.BrowserLauncher.$openURL = jalview.util.BrowserLauncher.mrjFileUtilsClass.getDeclaredMethod ("openURL",  Clazz.newArray (-1, [String]));\r
146 } catch (e$$) {\r
147 if (Clazz.exceptionOf (e$$, ClassNotFoundException)) {\r
148 var cnfe = e$$;\r
149 {\r
150 jalview.util.BrowserLauncher.errorMessage = cnfe.getMessage ();\r
151 return false;\r
152 }\r
153 } else if (Clazz.exceptionOf (e$$, NoSuchMethodException)) {\r
154 var nsme = e$$;\r
155 {\r
156 jalview.util.BrowserLauncher.errorMessage = nsme.getMessage ();\r
157 return false;\r
158 }\r
159 } else {\r
160 throw e$$;\r
161 }\r
162 }\r
163 break;\r
164 default:\r
165 break;\r
166 }\r
167 return true;\r
168 }, $fz.isPrivate = true, $fz));\r
169 c$.locateBrowser = Clazz.defineMethod (c$, "locateBrowser", \r
170 ($fz = function () {\r
171 if (jalview.util.BrowserLauncher.browser != null) {\r
172 return jalview.util.BrowserLauncher.browser;\r
173 }switch (jalview.util.BrowserLauncher.jvm) {\r
174 case 0:\r
175 try {\r
176 var finderCreatorCode = jalview.util.BrowserLauncher.makeOSType.invoke (null,  Clazz.newArray (-1, ["MACS"]));\r
177 var aeTarget = jalview.util.BrowserLauncher.aeTargetConstructor.newInstance ( Clazz.newArray (-1, [finderCreatorCode]));\r
178 var gurlType = jalview.util.BrowserLauncher.makeOSType.invoke (null,  Clazz.newArray (-1, ["GURL"]));\r
179 var appleEvent = jalview.util.BrowserLauncher.appleEventConstructor.newInstance ( Clazz.newArray (-1, [gurlType, gurlType, aeTarget, jalview.util.BrowserLauncher.kAutoGenerateReturnID, jalview.util.BrowserLauncher.kAnyTransactionID]));\r
180 return appleEvent;\r
181 } catch (e$$) {\r
182 if (Clazz.exceptionOf (e$$, IllegalAccessException)) {\r
183 var iae = e$$;\r
184 {\r
185 jalview.util.BrowserLauncher.browser = null;\r
186 jalview.util.BrowserLauncher.errorMessage = iae.getMessage ();\r
187 return jalview.util.BrowserLauncher.browser;\r
188 }\r
189 } else if (Clazz.exceptionOf (e$$, InstantiationException)) {\r
190 var ie = e$$;\r
191 {\r
192 jalview.util.BrowserLauncher.browser = null;\r
193 jalview.util.BrowserLauncher.errorMessage = ie.getMessage ();\r
194 return jalview.util.BrowserLauncher.browser;\r
195 }\r
196 } else if (Clazz.exceptionOf (e$$, java.lang.reflect.InvocationTargetException)) {\r
197 var ite = e$$;\r
198 {\r
199 jalview.util.BrowserLauncher.browser = null;\r
200 jalview.util.BrowserLauncher.errorMessage = ite.getMessage ();\r
201 return jalview.util.BrowserLauncher.browser;\r
202 }\r
203 } else {\r
204 throw e$$;\r
205 }\r
206 }\r
207 case 1:\r
208 var systemFolder;\r
209 try {\r
210 systemFolder = jalview.util.BrowserLauncher.findFolder.invoke (null,  Clazz.newArray (-1, [jalview.util.BrowserLauncher.kSystemFolderType]));\r
211 } catch (e$$) {\r
212 if (Clazz.exceptionOf (e$$, IllegalArgumentException)) {\r
213 var iare = e$$;\r
214 {\r
215 jalview.util.BrowserLauncher.browser = null;\r
216 jalview.util.BrowserLauncher.errorMessage = iare.getMessage ();\r
217 return jalview.util.BrowserLauncher.browser;\r
218 }\r
219 } else if (Clazz.exceptionOf (e$$, IllegalAccessException)) {\r
220 var iae = e$$;\r
221 {\r
222 jalview.util.BrowserLauncher.browser = null;\r
223 jalview.util.BrowserLauncher.errorMessage = iae.getMessage ();\r
224 return jalview.util.BrowserLauncher.browser;\r
225 }\r
226 } else if (Clazz.exceptionOf (e$$, java.lang.reflect.InvocationTargetException)) {\r
227 var ite = e$$;\r
228 {\r
229 jalview.util.BrowserLauncher.browser = null;\r
230 jalview.util.BrowserLauncher.errorMessage = ite.getTargetException ().getClass () + ": " + ite.getTargetException ().getMessage ();\r
231 return jalview.util.BrowserLauncher.browser;\r
232 }\r
233 } else {\r
234 throw e$$;\r
235 }\r
236 }\r
237 var systemFolderFiles = systemFolder.list ();\r
238 for (var i = 0; i < systemFolderFiles.length; i++) {\r
239 try {\r
240 var file =  new java.io.File (systemFolder, systemFolderFiles[i]);\r
241 if (!file.isFile ()) {\r
242 continue;\r
243 }var fileType = jalview.util.BrowserLauncher.getFileType.invoke (null,  Clazz.newArray (-1, [file]));\r
244 if ("FNDR".equals (fileType.toString ())) {\r
245 var fileCreator = jalview.util.BrowserLauncher.getFileCreator.invoke (null,  Clazz.newArray (-1, [file]));\r
246 if ("MACS".equals (fileCreator.toString ())) {\r
247 jalview.util.BrowserLauncher.browser = file.toString ();\r
248 return jalview.util.BrowserLauncher.browser;\r
249 }}} catch (e$$) {\r
250 if (Clazz.exceptionOf (e$$, IllegalArgumentException)) {\r
251 var iare = e$$;\r
252 {\r
253 jalview.util.BrowserLauncher.errorMessage = iare.getMessage ();\r
254 return null;\r
255 }\r
256 } else if (Clazz.exceptionOf (e$$, IllegalAccessException)) {\r
257 var iae = e$$;\r
258 {\r
259 jalview.util.BrowserLauncher.browser = null;\r
260 jalview.util.BrowserLauncher.errorMessage = iae.getMessage ();\r
261 return jalview.util.BrowserLauncher.browser;\r
262 }\r
263 } else if (Clazz.exceptionOf (e$$, java.lang.reflect.InvocationTargetException)) {\r
264 var ite = e$$;\r
265 {\r
266 jalview.util.BrowserLauncher.browser = null;\r
267 jalview.util.BrowserLauncher.errorMessage = ite.getTargetException ().getClass () + ": " + ite.getTargetException ().getMessage ();\r
268 return jalview.util.BrowserLauncher.browser;\r
269 }\r
270 } else {\r
271 throw e$$;\r
272 }\r
273 }\r
274 }\r
275 jalview.util.BrowserLauncher.browser = null;\r
276 break;\r
277 case 3:\r
278 case 4:\r
279 jalview.util.BrowserLauncher.browser = "";\r
280 break;\r
281 case 5:\r
282 jalview.util.BrowserLauncher.browser = "cmd.exe";\r
283 break;\r
284 case 6:\r
285 jalview.util.BrowserLauncher.browser = "command.com";\r
286 break;\r
287 case -1:\r
288 default:\r
289 jalview.util.BrowserLauncher.browser = jalview.bin.Cache.getDefault ("DEFAULT_BROWSER", "firefox");\r
290 break;\r
291 }\r
292 return jalview.util.BrowserLauncher.browser;\r
293 }, $fz.isPrivate = true, $fz));\r
294 c$.resetBrowser = Clazz.defineMethod (c$, "resetBrowser", \r
295 function () {\r
296 jalview.util.BrowserLauncher.browser = null;\r
297 });\r
298 c$.openURL = Clazz.defineMethod (c$, "openURL", \r
299 function (url) {\r
300 if (!jalview.util.BrowserLauncher.loadedWithoutErrors) {\r
301 throw  new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.browser_not_found",  Clazz.newArray (-1, [jalview.util.BrowserLauncher.errorMessage])));\r
302 }var browser = jalview.util.BrowserLauncher.locateBrowser ();\r
303 if (browser == null) {\r
304 throw  new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.browser_unable_to_locate",  Clazz.newArray (-1, [jalview.util.BrowserLauncher.errorMessage])));\r
305 }switch (jalview.util.BrowserLauncher.jvm) {\r
306 case 0:\r
307 var aeDesc = null;\r
308 try {\r
309 aeDesc = jalview.util.BrowserLauncher.aeDescConstructor.newInstance ( Clazz.newArray (-1, [url]));\r
310 jalview.util.BrowserLauncher.putParameter.invoke (browser,  Clazz.newArray (-1, [jalview.util.BrowserLauncher.keyDirectObject, aeDesc]));\r
311 jalview.util.BrowserLauncher.sendNoReply.invoke (browser,  Clazz.newArray (-1, []));\r
312 } catch (e$$) {\r
313 if (Clazz.exceptionOf (e$$, java.lang.reflect.InvocationTargetException)) {\r
314 var ite = e$$;\r
315 {\r
316 throw  new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.invocation_target_exception_creating_aedesc",  Clazz.newArray (-1, [ite.getMessage ()])));\r
317 }\r
318 } else if (Clazz.exceptionOf (e$$, IllegalAccessException)) {\r
319 var iae = e$$;\r
320 {\r
321 throw  new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.illegal_access_building_apple_evt",  Clazz.newArray (-1, [iae.getMessage ()])));\r
322 }\r
323 } else if (Clazz.exceptionOf (e$$, InstantiationException)) {\r
324 var ie = e$$;\r
325 {\r
326 throw  new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.illegal_access_building_apple_evt",  Clazz.newArray (-1, [ie.getMessage ()])));\r
327 }\r
328 } else {\r
329 throw e$$;\r
330 }\r
331 } finally {\r
332 aeDesc = null;\r
333 browser = null;\r
334 }\r
335 break;\r
336 case 1:\r
337 Runtime.getRuntime ().exec ( Clazz.newArray (-1, [browser, url]));\r
338 break;\r
339 case 3:\r
340 var instance =  Clazz.newIntArray (1, 0);\r
341 var result = jalview.util.BrowserLauncher.ICStart (instance, 0);\r
342 if (result == 0) {\r
343 var selectionStart =  Clazz.newIntArray (-1, [0]);\r
344 var urlBytes = url.getBytes ();\r
345 var selectionEnd =  Clazz.newIntArray (-1, [urlBytes.length]);\r
346 result = jalview.util.BrowserLauncher.ICLaunchURL (instance[0],  Clazz.newByteArray (-1, [0]), urlBytes, urlBytes.length, selectionStart, selectionEnd);\r
347 if (result == 0) {\r
348 jalview.util.BrowserLauncher.ICStop (instance);\r
349 } else {\r
350 throw  new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.unable_to_launch_url",  Clazz.newArray (-1, [Integer.$valueOf (result).toString ()])));\r
351 }} else {\r
352 throw  new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.unable_to_create_internet_config",  Clazz.newArray (-1, [Integer.$valueOf (result).toString ()])));\r
353 }break;\r
354 case 4:\r
355 try {\r
356 jalview.util.BrowserLauncher.$openURL.invoke (null,  Clazz.newArray (-1, [url]));\r
357 } catch (e$$) {\r
358 if (Clazz.exceptionOf (e$$, java.lang.reflect.InvocationTargetException)) {\r
359 var ite = e$$;\r
360 {\r
361 throw  new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.invocation_target_calling_url",  Clazz.newArray (-1, [ite.getMessage ()])));\r
362 }\r
363 } else if (Clazz.exceptionOf (e$$, IllegalAccessException)) {\r
364 var iae = e$$;\r
365 {\r
366 throw  new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.illegal_access_calling_url",  Clazz.newArray (-1, [iae.getMessage ()])));\r
367 }\r
368 } else {\r
369 throw e$$;\r
370 }\r
371 }\r
372 break;\r
373 case 5:\r
374 case 6:\r
375 var process = Runtime.getRuntime ().exec ( Clazz.newArray (-1, [browser, "/c", "start", "\"\"", '"' + url + '"']));\r
376 try {\r
377 process.waitFor ();\r
378 process.exitValue ();\r
379 } catch (ie) {\r
380 if (Clazz.exceptionOf (ie, InterruptedException)) {\r
381 throw  new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.interrupted_launching_browser",  Clazz.newArray (-1, [ie.getMessage ()])));\r
382 } else {\r
383 throw ie;\r
384 }\r
385 }\r
386 break;\r
387 case -1:\r
388 process = Runtime.getRuntime ().exec ( Clazz.newArray (-1, [browser, "-remote", "openURL(" + url + ", new-window" + ")"]));\r
389 try {\r
390 var exitCode = process.waitFor ();\r
391 if (exitCode != 0) {\r
392 Runtime.getRuntime ().exec ( Clazz.newArray (-1, [browser, url]));\r
393 }} catch (ie) {\r
394 if (Clazz.exceptionOf (ie, InterruptedException)) {\r
395 throw  new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.interrupted_launching_browser",  Clazz.newArray (-1, [ie.getMessage ()])));\r
396 } else {\r
397 throw ie;\r
398 }\r
399 }\r
400 break;\r
401 default:\r
402 Runtime.getRuntime ().exec ( Clazz.newArray (-1, [browser, url]));\r
403 break;\r
404 }\r
405 }, "~S");\r
406 Clazz.defineStatics (c$,\r
407 "jvm", 0,\r
408 "browser", null,\r
409 "loadedWithoutErrors", false,\r
410 "mrjFileUtilsClass", null,\r
411 "mrjOSTypeClass", null,\r
412 "aeDescClass", null,\r
413 "aeTargetConstructor", null,\r
414 "appleEventConstructor", null,\r
415 "aeDescConstructor", null,\r
416 "findFolder", null,\r
417 "getFileCreator", null,\r
418 "getFileType", null,\r
419 "$openURL", null,\r
420 "makeOSType", null,\r
421 "putParameter", null,\r
422 "sendNoReply", null,\r
423 "kSystemFolderType", null,\r
424 "keyDirectObject", null,\r
425 "kAutoGenerateReturnID", null,\r
426 "kAnyTransactionID", null,\r
427 "linkage", null,\r
428 "JDirect_MacOSX", "/System/Library/Frameworks/Carbon.framework/Frameworks/HIToolbox.framework/HIToolbox",\r
429 "MRJ_2_0", 0,\r
430 "MRJ_2_1", 1,\r
431 "MRJ_3_0", 3,\r
432 "MRJ_3_1", 4,\r
433 "WINDOWS_NT", 5,\r
434 "WINDOWS_9x", 6,\r
435 "OTHER", -1,\r
436 "FINDER_TYPE", "FNDR",\r
437 "FINDER_CREATOR", "MACS",\r
438 "GURL_EVENT", "GURL",\r
439 "FIRST_WINDOWS_PARAMETER", "/c",\r
440 "SECOND_WINDOWS_PARAMETER", "start",\r
441 "THIRD_WINDOWS_PARAMETER", "\"\"",\r
442 "NETSCAPE_REMOTE_PARAMETER", "-remote",\r
443 "NETSCAPE_OPEN_PARAMETER_START", "openURL(",\r
444 "NETSCAPE_OPEN_NEW_WINDOW", ", new-window",\r
445 "NETSCAPE_OPEN_PARAMETER_END", ")",\r
446 "errorMessage", null);\r
447 {\r
448 jalview.util.BrowserLauncher.loadedWithoutErrors = true;\r
449 var osName = System.getProperty ("os.name");\r
450 if (osName.startsWith ("Mac OS")) {\r
451 var mrjVersion = System.getProperty ("mrj.version");\r
452 var majorMRJVersion;\r
453 if (mrjVersion == null) {\r
454 majorMRJVersion = "3.1";\r
455 } else {\r
456 majorMRJVersion = mrjVersion.substring (0, 3);\r
457 }try {\r
458 var version = Double.$valueOf (majorMRJVersion).doubleValue ();\r
459 if (version == 2) {\r
460 jalview.util.BrowserLauncher.jvm = 0;\r
461 } else if ((version >= 2.1) && (version < 3)) {\r
462 jalview.util.BrowserLauncher.jvm = 1;\r
463 } else if (version == 3.0) {\r
464 jalview.util.BrowserLauncher.jvm = 3;\r
465 } else if (version >= 3.1) {\r
466 jalview.util.BrowserLauncher.jvm = 4;\r
467 } else {\r
468 jalview.util.BrowserLauncher.loadedWithoutErrors = false;\r
469 jalview.util.BrowserLauncher.errorMessage = "Unsupported MRJ version: " + version;\r
470 }} catch (nfe) {\r
471 if (Clazz.exceptionOf (nfe, NumberFormatException)) {\r
472 jalview.util.BrowserLauncher.loadedWithoutErrors = false;\r
473 jalview.util.BrowserLauncher.errorMessage = "Invalid MRJ version: " + mrjVersion;\r
474 } else {\r
475 throw nfe;\r
476 }\r
477 }\r
478 } else if (osName.startsWith ("Windows")) {\r
479 if (osName.indexOf ("9") != -1) {\r
480 jalview.util.BrowserLauncher.jvm = 6;\r
481 } else {\r
482 jalview.util.BrowserLauncher.jvm = 5;\r
483 }} else {\r
484 jalview.util.BrowserLauncher.jvm = -1;\r
485 }if (jalview.util.BrowserLauncher.loadedWithoutErrors) {\r
486 jalview.util.BrowserLauncher.loadedWithoutErrors = jalview.util.BrowserLauncher.loadClasses ();\r
487 }}});\r