| Clazz.declarePackage ("JV"); | |
| Clazz.load (["java.util.Hashtable"], "JV.StatusManager", ["java.lang.Boolean", "$.Float", "JU.Lst", "$.PT", "J.api.Interface", "J.c.CBK", "JS.SV", "JU.Logger"], function () { | |
| c$ = Clazz.decorateAsClass (function () { | |
| this.vwr = null; | |
| this.jsl = null; | |
| this.cbl = null; | |
| this.statusList = ""; | |
| this.allowStatusReporting = false; | |
| this.messageQueue = null; | |
| this.statusPtr = 0; | |
| this.jmolScriptCallbacks = null; | |
| this.imageMap = null; | |
| this.minSyncRepeatMs = 100; | |
| this.syncingScripts = false; | |
| this.syncingMouse = false; | |
| this.drivingSync = false; | |
| this.isSynced = false; | |
| this.syncDisabled = false; | |
| this.stereoSync = false; | |
| this.qualityJPG = -1; | |
| this.qualityPNG = -1; | |
| this.imageType = null; | |
| this.audios = null; | |
| Clazz.instantialize (this, arguments); | |
| }, JV, "StatusManager"); | |
| Clazz.prepareFields (c$, function () { | |
| this.messageQueue = new java.util.Hashtable (); | |
| this.jmolScriptCallbacks = new java.util.Hashtable (); | |
| }); | |
| Clazz.makeConstructor (c$, | |
| function (vwr) { | |
| this.vwr = vwr; | |
| }, "JV.Viewer"); | |
| Clazz.defineMethod (c$, "recordStatus", | |
| function (statusName) { | |
| return (this.allowStatusReporting && this.statusList.length > 0 && (this.statusList.equals ("all") || this.statusList.indexOf (statusName) >= 0)); | |
| }, "~S"); | |
| Clazz.defineMethod (c$, "setStatusChanged", | |
| function (statusName, intInfo, statusInfo, isReplace) { | |
| if (!this.recordStatus (statusName)) return; | |
| var msgRecord = new JU.Lst (); | |
| msgRecord.addLast (Integer.$valueOf (++this.statusPtr)); | |
| msgRecord.addLast (statusName); | |
| msgRecord.addLast (Integer.$valueOf (intInfo)); | |
| msgRecord.addLast (statusInfo); | |
| var statusRecordSet = (isReplace ? null : this.messageQueue.get (statusName)); | |
| if (statusRecordSet == null) this.messageQueue.put (statusName, statusRecordSet = new JU.Lst ()); | |
| else if (statusRecordSet.size () == JV.StatusManager.MAXIMUM_QUEUE_LENGTH) statusRecordSet.removeItemAt (0); | |
| statusRecordSet.addLast (msgRecord); | |
| }, "~S,~N,~O,~B"); | |
| Clazz.defineMethod (c$, "getStatusChanged", | |
| function (newStatusList) { | |
| var isRemove = (newStatusList.length > 0 && newStatusList.charAt (0) == '-'); | |
| var isAdd = (newStatusList.length > 0 && newStatusList.charAt (0) == '+'); | |
| var getList = false; | |
| if (isRemove) { | |
| this.statusList = JU.PT.rep (this.statusList, newStatusList.substring (1, newStatusList.length), ""); | |
| } else { | |
| newStatusList = JU.PT.rep (newStatusList, "+", ""); | |
| if (this.statusList.equals (newStatusList) || isAdd && this.statusList.indexOf (newStatusList) >= 0) { | |
| getList = true; | |
| } else { | |
| if (!isAdd) this.statusList = ""; | |
| this.statusList += newStatusList; | |
| if (JU.Logger.debugging) JU.Logger.debug ("StatusManager messageQueue = " + this.statusList); | |
| }}var list = new JU.Lst (); | |
| if (getList) for (var e, $e = this.messageQueue.entrySet ().iterator (); $e.hasNext () && ((e = $e.next ()) || true);) list.addLast (e.getValue ()); | |
| this.messageQueue.clear (); | |
| this.statusPtr = 0; | |
| return list; | |
| }, "~S"); | |
| Clazz.defineMethod (c$, "jmolScriptCallback", | |
| function (callback) { | |
| var s = this.jmolScriptCallbacks.get (callback); | |
| if (s != null) this.vwr.evalStringQuietSync (s, true, false); | |
| return s; | |
| }, "J.c.CBK"); | |
| Clazz.defineMethod (c$, "setCallbackFunction", | |
| function (callbackType, callbackFunction) { | |
| var callback = J.c.CBK.getCallback (callbackType); | |
| System.out.println ("callback set for " + callbackType + " " + callbackFunction + " " + callback); | |
| if (callback != null) { | |
| var pt = (callbackFunction == null ? 0 : callbackFunction.length > 7 && callbackFunction.toLowerCase ().indexOf ("script:") == 0 ? 7 : callbackFunction.length > 11 && callbackFunction.toLowerCase ().indexOf ("jmolscript:") == 0 ? 11 : 0); | |
| if (pt == 0) this.jmolScriptCallbacks.remove (callback); | |
| else this.jmolScriptCallbacks.put (callback, callbackFunction.substring (pt).trim ()); | |
| }if (this.cbl != null) this.cbl.setCallbackFunction (callbackType, callbackFunction); | |
| }, "~S,~S"); | |
| Clazz.defineMethod (c$, "notifyEnabled", | |
| function (type) { | |
| return this.cbl != null && this.cbl.notifyEnabled (type); | |
| }, "J.c.CBK"); | |
| Clazz.defineMethod (c$, "setStatusAppletReady", | |
| function (htmlName, isReady) { | |
| var sJmol = (isReady ? this.jmolScriptCallback (J.c.CBK.APPLETREADY) : null); | |
| if (this.notifyEnabled (J.c.CBK.APPLETREADY)) this.cbl.notifyCallback (J.c.CBK.APPLETREADY, Clazz.newArray (-1, [sJmol, htmlName, Boolean.$valueOf (isReady), null])); | |
| }, "~S,~B"); | |
| Clazz.defineMethod (c$, "setStatusAtomMoved", | |
| function (bsMoved) { | |
| var sJmol = this.jmolScriptCallback (J.c.CBK.ATOMMOVED); | |
| this.setStatusChanged ("atomMoved", -1, bsMoved, false); | |
| if (this.notifyEnabled (J.c.CBK.ATOMMOVED)) this.cbl.notifyCallback (J.c.CBK.ATOMMOVED, Clazz.newArray (-1, [sJmol, bsMoved])); | |
| }, "JU.BS"); | |
| Clazz.defineMethod (c$, "setStatusAtomPicked", | |
| function (atomIndex, strInfo, map) { | |
| var sJmol = this.jmolScriptCallback (J.c.CBK.PICK); | |
| JU.Logger.info ("setStatusAtomPicked(" + atomIndex + "," + strInfo + ")"); | |
| this.setStatusChanged ("atomPicked", atomIndex, strInfo, false); | |
| if (this.notifyEnabled (J.c.CBK.PICK)) this.cbl.notifyCallback (J.c.CBK.PICK, Clazz.newArray (-1, [sJmol, strInfo, Integer.$valueOf (atomIndex), map])); | |
| }, "~N,~S,java.util.Map"); | |
| Clazz.defineMethod (c$, "setStatusClicked", | |
| function (x, y, action, clickCount, mode) { | |
| var sJmol = this.jmolScriptCallback (J.c.CBK.CLICK); | |
| if (!this.notifyEnabled (J.c.CBK.CLICK)) return action; | |
| var m = Clazz.newIntArray (-1, [action, mode]); | |
| this.cbl.notifyCallback (J.c.CBK.CLICK, Clazz.newArray (-1, [sJmol, Integer.$valueOf (x), Integer.$valueOf (y), Integer.$valueOf (action), Integer.$valueOf (clickCount), m])); | |
| return m[0]; | |
| }, "~N,~N,~N,~N,~N"); | |
| Clazz.defineMethod (c$, "setStatusResized", | |
| function (width, height) { | |
| var sJmol = this.jmolScriptCallback (J.c.CBK.RESIZE); | |
| if (this.notifyEnabled (J.c.CBK.RESIZE)) this.cbl.notifyCallback (J.c.CBK.RESIZE, Clazz.newArray (-1, [sJmol, Integer.$valueOf (width), Integer.$valueOf (height)])); | |
| }, "~N,~N"); | |
| Clazz.defineMethod (c$, "haveHoverCallback", | |
| function () { | |
| return (this.jmolScriptCallbacks.containsKey (J.c.CBK.HOVER) || this.notifyEnabled (J.c.CBK.HOVER)); | |
| }); | |
| Clazz.defineMethod (c$, "setStatusAtomHovered", | |
| function (iatom, strInfo) { | |
| var sJmol = this.jmolScriptCallback (J.c.CBK.HOVER); | |
| if (this.notifyEnabled (J.c.CBK.HOVER)) this.cbl.notifyCallback (J.c.CBK.HOVER, Clazz.newArray (-1, [sJmol, strInfo, Integer.$valueOf (iatom)])); | |
| }, "~N,~S"); | |
| Clazz.defineMethod (c$, "setStatusObjectHovered", | |
| function (id, strInfo, pt) { | |
| var sJmol = this.jmolScriptCallback (J.c.CBK.HOVER); | |
| if (this.notifyEnabled (J.c.CBK.HOVER)) this.cbl.notifyCallback (J.c.CBK.HOVER, Clazz.newArray (-1, [sJmol, strInfo, Integer.$valueOf (-1), id, Float.$valueOf (pt.x), Float.$valueOf (pt.y), Float.$valueOf (pt.z)])); | |
| }, "~S,~S,JU.T3"); | |
| Clazz.defineMethod (c$, "showImage", | |
| function (title, image) { | |
| var a = JU.PT.split (title, "\1"); | |
| title = (a.length < 3 || a[2].equals ("null") ? a[1].substring (a[1].lastIndexOf ("/") + 1) : a[2]); | |
| var sJmol = this.jmolScriptCallback (J.c.CBK.IMAGE); | |
| if (this.notifyEnabled (J.c.CBK.IMAGE)) this.cbl.notifyCallback (J.c.CBK.IMAGE, Clazz.newArray (-1, [sJmol, title, image])); | |
| if (Boolean.TRUE.equals (image)) { | |
| if (this.imageMap == null) return; | |
| var lst = new JU.Lst (); | |
| for (var key, $key = this.imageMap.keySet ().iterator (); $key.hasNext () && ((key = $key.next ()) || true);) lst.addLast (key); | |
| for (var i = lst.size (); --i >= 0; ) this.imageMap.get (lst.get (i)).closeMe (); | |
| return; | |
| }if (this.imageMap == null) this.imageMap = new java.util.Hashtable (); | |
| var d = this.imageMap.get (title); | |
| if (Boolean.FALSE.equals (image)) { | |
| if (d != null) d.closeMe (); | |
| return; | |
| }if (d == null && image != null) d = this.vwr.apiPlatform.getImageDialog (title, this.imageMap); | |
| if (d == null) return; | |
| if (image == null) d.closeMe (); | |
| else d.setImage (image); | |
| }, "~S,~O"); | |
| Clazz.defineMethod (c$, "setFileLoadStatus", | |
| function (fullPathName, fileName, modelName, errorMsg, ptLoad, doCallback, isAsync) { | |
| if (fullPathName == null && "resetUndo".equals (fileName)) { | |
| var appConsole = this.vwr.getProperty ("DATA_API", "getAppConsole", null); | |
| if (appConsole != null) appConsole.zap (); | |
| fileName = this.vwr.getZapName (); | |
| }this.setStatusChanged ("fileLoaded", ptLoad, fullPathName, false); | |
| if (errorMsg != null) this.setStatusChanged ("fileLoadError", ptLoad, errorMsg, false); | |
| var sJmol = this.jmolScriptCallback (J.c.CBK.LOADSTRUCT); | |
| if (doCallback && this.notifyEnabled (J.c.CBK.LOADSTRUCT)) { | |
| var name = this.vwr.getP ("_smilesString"); | |
| if (name.length != 0) fileName = name; | |
| this.cbl.notifyCallback (J.c.CBK.LOADSTRUCT, Clazz.newArray (-1, [sJmol, fullPathName, fileName, modelName, errorMsg, Integer.$valueOf (ptLoad), this.vwr.getP ("_modelNumber"), this.vwr.getModelNumberDotted (this.vwr.ms.mc - 1), isAsync])); | |
| }}, "~S,~S,~S,~S,~N,~B,Boolean"); | |
| Clazz.defineMethod (c$, "setStatusFrameChanged", | |
| function (fileNo, modelNo, firstNo, lastNo, currentFrame, currentMorphModel, entryName) { | |
| if (this.vwr.ms == null) return; | |
| var animating = this.vwr.am.animationOn; | |
| var frameNo = (animating ? -2 - currentFrame : currentFrame); | |
| this.setStatusChanged ("frameChanged", frameNo, (currentFrame >= 0 ? this.vwr.getModelNumberDotted (currentFrame) : ""), false); | |
| var sJmol = this.jmolScriptCallback (J.c.CBK.ANIMFRAME); | |
| if (this.notifyEnabled (J.c.CBK.ANIMFRAME)) this.cbl.notifyCallback (J.c.CBK.ANIMFRAME, Clazz.newArray (-1, [sJmol, Clazz.newIntArray (-1, [frameNo, fileNo, modelNo, firstNo, lastNo, currentFrame]), entryName, Float.$valueOf (currentMorphModel)])); | |
| if (!animating) this.vwr.checkMenuUpdate (); | |
| }, "~N,~N,~N,~N,~N,~N,~S"); | |
| Clazz.defineMethod (c$, "setStatusDragDropped", | |
| function (mode, x, y, fileName) { | |
| this.setStatusChanged ("dragDrop", 0, "", false); | |
| var sJmol = this.jmolScriptCallback (J.c.CBK.DRAGDROP); | |
| if (!this.notifyEnabled (J.c.CBK.DRAGDROP)) return false; | |
| this.cbl.notifyCallback (J.c.CBK.DRAGDROP, Clazz.newArray (-1, [sJmol, Integer.$valueOf (mode), Integer.$valueOf (x), Integer.$valueOf (y), fileName])); | |
| return true; | |
| }, "~N,~N,~N,~S"); | |
| Clazz.defineMethod (c$, "setScriptEcho", | |
| function (strEcho, isScriptQueued) { | |
| if (strEcho == null) return; | |
| this.setStatusChanged ("scriptEcho", 0, strEcho, false); | |
| var sJmol = this.jmolScriptCallback (J.c.CBK.ECHO); | |
| if (this.notifyEnabled (J.c.CBK.ECHO)) this.cbl.notifyCallback (J.c.CBK.ECHO, Clazz.newArray (-1, [sJmol, strEcho, Integer.$valueOf (isScriptQueued ? 1 : 0)])); | |
| }, "~S,~B"); | |
| Clazz.defineMethod (c$, "setStatusMeasuring", | |
| function (status, intInfo, strMeasure, value) { | |
| this.setStatusChanged (status, intInfo, strMeasure, false); | |
| var sJmol = null; | |
| if (status.equals ("measureCompleted")) { | |
| JU.Logger.info ("measurement[" + intInfo + "] = " + strMeasure); | |
| sJmol = this.jmolScriptCallback (J.c.CBK.MEASURE); | |
| } else if (status.equals ("measurePicked")) { | |
| this.setStatusChanged ("measurePicked", intInfo, strMeasure, false); | |
| JU.Logger.info ("measurePicked " + intInfo + " " + strMeasure); | |
| }if (this.notifyEnabled (J.c.CBK.MEASURE)) this.cbl.notifyCallback (J.c.CBK.MEASURE, Clazz.newArray (-1, [sJmol, strMeasure, Integer.$valueOf (intInfo), status, Float.$valueOf (value)])); | |
| }, "~S,~N,~S,~N"); | |
| Clazz.defineMethod (c$, "notifyError", | |
| function (errType, errMsg, errMsgUntranslated) { | |
| var sJmol = this.jmolScriptCallback (J.c.CBK.ERROR); | |
| if (this.notifyEnabled (J.c.CBK.ERROR)) this.cbl.notifyCallback (J.c.CBK.ERROR, Clazz.newArray (-1, [sJmol, errType, errMsg, this.vwr.getShapeErrorState (), errMsgUntranslated])); | |
| }, "~S,~S,~S"); | |
| Clazz.defineMethod (c$, "notifyMinimizationStatus", | |
| function (minStatus, minSteps, minEnergy, minEnergyDiff, ff) { | |
| var sJmol = this.jmolScriptCallback (J.c.CBK.MINIMIZATION); | |
| if (this.notifyEnabled (J.c.CBK.MINIMIZATION)) this.cbl.notifyCallback (J.c.CBK.MINIMIZATION, Clazz.newArray (-1, [sJmol, minStatus, minSteps, minEnergy, minEnergyDiff, ff])); | |
| }, "~S,Integer,Float,Float,~S"); | |
| Clazz.defineMethod (c$, "setScriptStatus", | |
| function (strStatus, statusMessage, msWalltime, strErrorMessageUntranslated) { | |
| if (msWalltime < -1) { | |
| var iscript = -2 - msWalltime; | |
| this.setStatusChanged ("scriptStarted", iscript, statusMessage, false); | |
| strStatus = "script " + iscript + " started"; | |
| } else if (strStatus == null) { | |
| return; | |
| }var sJmol = (msWalltime == 0 ? this.jmolScriptCallback (J.c.CBK.SCRIPT) : null); | |
| var isScriptCompletion = (strStatus === "Script completed"); | |
| if (this.recordStatus ("script")) { | |
| var isError = (strErrorMessageUntranslated != null); | |
| this.setStatusChanged ((isError ? "scriptError" : "scriptStatus"), 0, strStatus, false); | |
| if (isError || isScriptCompletion) this.setStatusChanged ("scriptTerminated", 1, "Jmol script terminated" + (isError ? " unsuccessfully: " + strStatus : " successfully"), false); | |
| }if (isScriptCompletion && this.vwr.getBoolean (603979880) && this.vwr.getBoolean (603979825)) strStatus = this.vwr.getChimeMessenger ().scriptCompleted (this, statusMessage, strErrorMessageUntranslated); | |
| var data = Clazz.newArray (-1, [sJmol, strStatus, statusMessage, Integer.$valueOf (isScriptCompletion ? -1 : msWalltime), strErrorMessageUntranslated]); | |
| if (this.notifyEnabled (J.c.CBK.SCRIPT)) this.cbl.notifyCallback (J.c.CBK.SCRIPT, data); | |
| this.processScript (data); | |
| }, "~S,~S,~N,~S"); | |
| Clazz.defineMethod (c$, "processScript", | |
| function (data) { | |
| var msWalltime = (data[3]).intValue (); | |
| if (this.vwr.scriptEditor != null) { | |
| if (msWalltime > 0) { | |
| this.vwr.scriptEditor.notifyScriptTermination (); | |
| } else if (msWalltime < 0) { | |
| if (msWalltime == -2) this.vwr.scriptEditor.notifyScriptStart (); | |
| } else if (this.vwr.scriptEditor.isVisible () && (data[2]).length > 0) { | |
| this.vwr.scriptEditor.notifyContext (this.vwr.getScriptContext ("SE notify"), data); | |
| }}if (this.vwr.appConsole != null) { | |
| if (msWalltime == 0) { | |
| var strInfo = (data[1] == null ? null : data[1].toString ()); | |
| this.vwr.appConsole.sendConsoleMessage (strInfo); | |
| }}}, "~A"); | |
| Clazz.defineMethod (c$, "doSync", | |
| function () { | |
| return (this.isSynced && this.drivingSync && !this.syncDisabled); | |
| }); | |
| Clazz.defineMethod (c$, "setSync", | |
| function (mouseCommand) { | |
| if (this.syncingMouse) { | |
| if (mouseCommand != null) this.syncSend (mouseCommand, "*", 0); | |
| } else if (!this.syncingScripts) this.syncSend ("!" + this.vwr.tm.getMoveToText (this.minSyncRepeatMs / 1000, false), "*", 0); | |
| }, "~S"); | |
| Clazz.defineMethod (c$, "setSyncDriver", | |
| function (syncMode) { | |
| if (this.stereoSync && syncMode != 4) { | |
| this.syncSend ("SET_GRAPHICS_OFF", "*", 0); | |
| this.stereoSync = false; | |
| }switch (syncMode) { | |
| case 4: | |
| if (!this.syncDisabled) return; | |
| this.syncDisabled = false; | |
| break; | |
| case 3: | |
| this.syncDisabled = true; | |
| break; | |
| case 5: | |
| this.drivingSync = true; | |
| this.isSynced = true; | |
| this.stereoSync = true; | |
| break; | |
| case 1: | |
| this.drivingSync = true; | |
| this.isSynced = true; | |
| break; | |
| case 2: | |
| this.drivingSync = false; | |
| this.isSynced = true; | |
| break; | |
| default: | |
| this.drivingSync = false; | |
| this.isSynced = false; | |
| } | |
| if (JU.Logger.debugging) { | |
| JU.Logger.debug (this.vwr.appletName + " sync mode=" + syncMode + "; synced? " + this.isSynced + "; driving? " + this.drivingSync + "; disabled? " + this.syncDisabled); | |
| }}, "~N"); | |
| Clazz.defineMethod (c$, "syncSend", | |
| function (script, appletNameOrProp, port) { | |
| if (port != 0 || this.notifyEnabled (J.c.CBK.SYNC)) { | |
| var o = Clazz.newArray (-1, [null, script, appletNameOrProp, Integer.$valueOf (port)]); | |
| if (this.cbl != null) this.cbl.notifyCallback (J.c.CBK.SYNC, o); | |
| return o[0]; | |
| }return null; | |
| }, "~S,~O,~N"); | |
| Clazz.defineMethod (c$, "modifySend", | |
| function (atomIndex, modelIndex, mode, msg) { | |
| var sJmol = this.jmolScriptCallback (J.c.CBK.STRUCTUREMODIFIED); | |
| if (this.notifyEnabled (J.c.CBK.STRUCTUREMODIFIED)) this.cbl.notifyCallback (J.c.CBK.STRUCTUREMODIFIED, Clazz.newArray (-1, [sJmol, Integer.$valueOf (mode), Integer.$valueOf (atomIndex), Integer.$valueOf (modelIndex), msg])); | |
| }, "~N,~N,~N,~S"); | |
| Clazz.defineMethod (c$, "processService", | |
| function (info) { | |
| var s = info.get ("service"); | |
| if (s == null) return null; | |
| if (Clazz.instanceOf (s, JS.SV)) { | |
| var m = new java.util.Hashtable (); | |
| for (var e, $e = info.entrySet ().iterator (); $e.hasNext () && ((e = $e.next ()) || true);) m.put (e.getKey (), JS.SV.oValue (e.getValue ())); | |
| info = m; | |
| }if (this.notifyEnabled (J.c.CBK.SERVICE)) this.cbl.notifyCallback (J.c.CBK.SERVICE, Clazz.newArray (-1, [null, info])); | |
| return info; | |
| }, "java.util.Map"); | |
| Clazz.defineMethod (c$, "getSyncMode", | |
| function () { | |
| return (!this.isSynced ? 0 : this.drivingSync ? 1 : 2); | |
| }); | |
| Clazz.defineMethod (c$, "showUrl", | |
| function (urlString) { | |
| if (this.jsl != null) this.jsl.showUrl (urlString); | |
| }, "~S"); | |
| Clazz.defineMethod (c$, "clearConsole", | |
| function () { | |
| if (this.vwr.appConsole != null) { | |
| this.vwr.appConsole.sendConsoleMessage (null); | |
| }if (this.jsl != null) this.cbl.notifyCallback (J.c.CBK.MESSAGE, null); | |
| }); | |
| Clazz.defineMethod (c$, "functionXY", | |
| function (functionName, nX, nY) { | |
| return (this.jsl == null ? Clazz.newFloatArray (Math.abs (nX), Math.abs (nY), 0) : this.jsl.functionXY (functionName, nX, nY)); | |
| }, "~S,~N,~N"); | |
| Clazz.defineMethod (c$, "functionXYZ", | |
| function (functionName, nX, nY, nZ) { | |
| return (this.jsl == null ? Clazz.newFloatArray (Math.abs (nX), Math.abs (nY), Math.abs (nY), 0) : this.jsl.functionXYZ (functionName, nX, nY, nZ)); | |
| }, "~S,~N,~N,~N"); | |
| Clazz.defineMethod (c$, "jsEval", | |
| function (strEval) { | |
| return (this.jsl == null ? "" : this.jsl.eval (strEval)); | |
| }, "~S"); | |
| Clazz.defineMethod (c$, "createImage", | |
| function (fileNameOrError, type, text, bytes, quality) { | |
| return (this.jsl == null ? null : this.jsl.createImage (fileNameOrError, type, text == null ? bytes : text, quality)); | |
| }, "~S,~S,~S,~A,~N"); | |
| Clazz.defineMethod (c$, "getRegistryInfo", | |
| function () { | |
| return (this.jsl == null ? null : this.jsl.getRegistryInfo ()); | |
| }); | |
| Clazz.defineMethod (c$, "dialogAsk", | |
| function (type, fileName, params) { | |
| var isImage = type.equals ("Save Image"); | |
| var sd = J.api.Interface.getOption ("dialog.Dialog", this.vwr, "status"); | |
| if (sd == null) return null; | |
| sd.setupUI (false); | |
| if (isImage) sd.setImageInfo (this.qualityJPG, this.qualityPNG, this.imageType); | |
| var outputFileName = sd.getFileNameFromDialog (this.vwr, type, fileName); | |
| if (isImage && outputFileName != null) { | |
| this.qualityJPG = sd.getQuality ("JPG"); | |
| this.qualityPNG = sd.getQuality ("PNG"); | |
| var sType = sd.getType (); | |
| if (params != null) { | |
| params.put ("qualityJPG", Integer.$valueOf (this.qualityJPG)); | |
| params.put ("qualityPNG", Integer.$valueOf (this.qualityPNG)); | |
| if (sType != null) params.put ("dialogImageType", sType); | |
| }if (sType != null) this.imageType = sType; | |
| }return outputFileName; | |
| }, "~S,~S,java.util.Map"); | |
| Clazz.defineMethod (c$, "getJspecViewProperties", | |
| function (myParam) { | |
| return (this.jsl == null ? null : this.jsl.getJSpecViewProperty (myParam == null || myParam.length == 0 ? "" : ":" + myParam)); | |
| }, "~S"); | |
| Clazz.defineMethod (c$, "resizeInnerPanel", | |
| function (width, height) { | |
| return (this.jsl == null || width == this.vwr.getScreenWidth () && height == this.vwr.getScreenHeight () ? Clazz.newIntArray (-1, [width, height]) : this.jsl.resizeInnerPanel ("preferredWidthHeight " + width + " " + height + ";")); | |
| }, "~N,~N"); | |
| Clazz.defineMethod (c$, "resizeInnerPanelString", | |
| function (data) { | |
| if (this.jsl != null) this.jsl.resizeInnerPanel (data); | |
| }, "~S"); | |
| Clazz.defineMethod (c$, "registerAudio", | |
| function (id, htParams) { | |
| this.stopAudio (id); | |
| if (this.audios == null) this.audios = new java.util.Hashtable (); | |
| if (htParams == null) this.audios.remove (id); | |
| else this.audios.put (id, htParams.get ("audioPlayer")); | |
| }, "~S,java.util.Map"); | |
| Clazz.defineMethod (c$, "stopAudio", | |
| function (id) { | |
| if (this.audios == null) return; | |
| var player = this.audios.get (id); | |
| if (player != null) player.action ("kill"); | |
| }, "~S"); | |
| Clazz.defineMethod (c$, "playAudio", | |
| function (htParams) { | |
| if (!this.vwr.getBoolean (603979797)) { | |
| if (htParams == null) return; | |
| htParams.put ("status", "close"); | |
| JU.Logger.info ("allowAudio is set false"); | |
| this.notifyAudioStatus (htParams); | |
| return; | |
| }try { | |
| var action = (htParams == null ? "close" : htParams.get ("action")); | |
| var id = (htParams == null ? null : htParams.get ("id")); | |
| if (action != null && action.length > 0) { | |
| if (id == null || id.length == 0) { | |
| if (this.audios == null || this.audios.isEmpty ()) return; | |
| if (action.equals ("close")) { | |
| for (var key, $key = this.audios.keySet ().iterator (); $key.hasNext () && ((key = $key.next ()) || true);) { | |
| var player = this.audios.remove (key); | |
| player.action ("close"); | |
| } | |
| }return; | |
| }var player = this.audios.get (id); | |
| if (player != null) { | |
| player.action (action); | |
| return; | |
| }}try { | |
| (J.api.Interface.getInterface ("JU.JmolAudio", this.vwr, "script")).playAudio (this.vwr, htParams); | |
| } catch (e) { | |
| if (Clazz.exceptionOf (e, Exception)) { | |
| JU.Logger.info (e.getMessage ()); | |
| } else { | |
| throw e; | |
| } | |
| } | |
| } catch (t) { | |
| } | |
| }, "java.util.Map"); | |
| Clazz.defineMethod (c$, "notifyAudioStatus", | |
| function (htParams) { | |
| var status = htParams.get ("status"); | |
| System.out.println (status); | |
| var script = htParams.get (status); | |
| if (script != null) this.vwr.script (script); | |
| if (status === "ended") this.registerAudio (htParams.get ("id"), null); | |
| var sJmol = this.jmolScriptCallback (J.c.CBK.AUDIO); | |
| if (this.notifyEnabled (J.c.CBK.AUDIO)) this.cbl.notifyCallback (J.c.CBK.AUDIO, Clazz.newArray (-1, [sJmol, htParams])); | |
| }, "java.util.Map"); | |
| Clazz.defineStatics (c$, | |
| "MAXIMUM_QUEUE_LENGTH", 16, | |
| "SYNC_OFF", 0, | |
| "SYNC_DRIVER", 1, | |
| "SYNC_SLAVE", 2, | |
| "SYNC_DISABLE", 3, | |
| "SYNC_ENABLE", 4, | |
| "SYNC_STEREO", 5); | |
| }); | |