JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / bin / jalview / javascript / MouseOverStructureListener.js
1 Clazz.declarePackage ("jalview.javascript");\r
2 Clazz.load (["jalview.javascript.JSFunctionExec", "$.JsCallBack", "jalview.structure.StructureListener"], "jalview.javascript.MouseOverStructureListener", ["jalview.api.AlignmentViewPanel", "jalview.appletgui.FeatureRenderer", "jalview.ext.jmol.JmolCommands", "jalview.structure.StructureSelectionManager", "java.net.URL", "java.util.ArrayList"], function () {\r
3 c$ = Clazz.decorateAsClass (function () {\r
4 this._listenerfn = null;\r
5 this.modelSet = null;\r
6 Clazz.instantialize (this, arguments);\r
7 }, jalview.javascript, "MouseOverStructureListener", jalview.javascript.JSFunctionExec, [jalview.javascript.JsCallBack, jalview.structure.StructureListener]);\r
8 Clazz.makeConstructor (c$, \r
9 function (jalviewLite, listener, modelList) {\r
10 Clazz.superConstructor (this, jalview.javascript.MouseOverStructureListener, [jalviewLite]);\r
11 this._listenerfn = listener;\r
12 this.modelSet = modelList;\r
13 if (this.modelSet != null) {\r
14 for (var i = 0; i < this.modelSet.length; i++) {\r
15 try {\r
16 if ( new java.net.URL (this.modelSet[i]).openConnection () != null) {\r
17 continue;\r
18 }} catch (x) {\r
19 if (Clazz.exceptionOf (x, Exception)) {\r
20 } else {\r
21 throw x;\r
22 }\r
23 }\r
24 ;try {\r
25 var db = this.jvlite.getDocumentBase ().toString ();\r
26 db = db.substring (0, db.lastIndexOf ("/"));\r
27 if ( new java.net.URL (db + "/" + this.modelSet[i]).openConnection () != null) {\r
28 this.modelSet[i] = db + "/" + this.modelSet[i];\r
29 continue;\r
30 }} catch (x) {\r
31 if (Clazz.exceptionOf (x, Exception)) {\r
32 } else {\r
33 throw x;\r
34 }\r
35 }\r
36 ;try {\r
37 if ( new java.net.URL (this.jvlite.getCodeBase () + this.modelSet[i]).openConnection () != null) {\r
38 this.modelSet[i] = this.jvlite.getCodeBase () + this.modelSet[i];\r
39 continue;\r
40 }} catch (x) {\r
41 if (Clazz.exceptionOf (x, Exception)) {\r
42 } else {\r
43 throw x;\r
44 }\r
45 }\r
46 ;}\r
47 }}, "jalview.bin.JalviewLite,~S,~A");\r
48 Clazz.overrideMethod (c$, "getPdbFile", \r
49 function () {\r
50 return this.modelSet;\r
51 });\r
52 Clazz.defineMethod (c$, "mouseOverStructure", \r
53 function (atomIndex, strInfo) {\r
54 }, "~N,~S");\r
55 Clazz.overrideMethod (c$, "highlightAtoms", \r
56 function (atoms) {\r
57 for (var atom, $atom = atoms.iterator (); $atom.hasNext () && ((atom = $atom.next ()) || true);) {\r
58 try {\r
59 this.executeJavascriptFunction (this._listenerfn,  Clazz.newArray (-1, ["mouseover", "" + atom.getPdbFile (), "" + atom.getChain (), "" + (atom.getPdbResNum ()), "" + atom.getAtomIndex ()]));\r
60 } catch (ex) {\r
61 if (Clazz.exceptionOf (ex, Exception)) {\r
62 System.err.println ("Couldn't execute callback with " + this._listenerfn + " for atomSpec: " + atom);\r
63 ex.printStackTrace ();\r
64 } else {\r
65 throw ex;\r
66 }\r
67 }\r
68 }\r
69 }, "java.util.List");\r
70 Clazz.overrideMethod (c$, "updateColours", \r
71 function (srce) {\r
72 var source = srce;\r
73 var ssm = jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.jvlite);\r
74 if (Clazz.instanceOf (source, jalview.api.AlignmentViewPanel)) {\r
75 var sequence =  new Array (this.modelSet.length);\r
76 for (var m = 0; m < this.modelSet.length; m++) {\r
77 var sm = ssm.getMapping (this.modelSet[m]);\r
78 if (sm != null && sm.length > 0) {\r
79 sequence[m] =  new Array (sm.length);\r
80 for (var i = 0; i < sm.length; i++) {\r
81 sequence[m][i] = sm[i].getSequence ();\r
82 }\r
83 } else {\r
84 sequence[m] =  new Array (0);\r
85 }}\r
86 var sr = (source).getSequenceRenderer ();\r
87 var fr = (source).av.isShowSequenceFeatures () ?  new jalview.appletgui.FeatureRenderer ((source).av) : null;\r
88 if (fr != null) {\r
89 (fr).transferSettings ((source).getFeatureRenderer ());\r
90 };var ccomands =  new java.util.ArrayList ();\r
91 var pdbfn =  new java.util.ArrayList ();\r
92 var colcommands = jalview.ext.jmol.JmolCommands.getColourBySequenceCommand (ssm, this.modelSet, sequence, sr, fr, (source).getAlignment ());\r
93 if (colcommands == null) {\r
94 return;\r
95 }var sz = 0;\r
96 for (var ccset, $ccset = 0, $$ccset = colcommands; $ccset < $$ccset.length && ((ccset = $$ccset[$ccset]) || true); $ccset++) {\r
97 sz += ccset.commands.length;\r
98 ccomands.add (ccset.commands);\r
99 pdbfn.add (ccset.mapping);\r
100 }\r
101 var mclass;\r
102 var mhandle;\r
103 var ccomandset =  new Array (sz);\r
104 sz = 0;\r
105 for (var ccset, $ccset = ccomands.iterator (); $ccset.hasNext () && ((ccset = $ccset.next ()) || true);) {\r
106 System.arraycopy (ccset, 0, ccomandset, sz, ccset.length);\r
107 sz += ccset.length;\r
108 }\r
109 if (this.jvlite.isJsMessageSetChanged (mclass = "colourstruct", mhandle = (source).av.getViewId (), ccomandset)) {\r
110 this.jvlite.setJsMessageSet (mclass, mhandle, ccomandset);\r
111 var st =  Clazz.newArray (-1, ["colourstruct", "" + (source).av.getViewId (), "" + ccomandset.length, this.jvlite.arrayToSeparatorList (pdbfn.toArray ( new Array (pdbfn.size ())))]);\r
112 try {\r
113 this.executeJavascriptFunction (true, this._listenerfn, st);\r
114 } catch (ex) {\r
115 if (Clazz.exceptionOf (ex, Exception)) {\r
116 System.err.println ("Couldn't execute callback with " + this._listenerfn + " using args { " + st[0] + ", " + st[1] + ", " + st[2] + "," + st[3] + "}");\r
117 ex.printStackTrace ();\r
118 } else {\r
119 throw ex;\r
120 }\r
121 }\r
122 }}}, "~O");\r
123 Clazz.overrideMethod (c$, "getAlignFrame", \r
124 function () {\r
125 return null;\r
126 });\r
127 Clazz.overrideMethod (c$, "getListenerFunction", \r
128 function () {\r
129 return this._listenerfn;\r
130 });\r
131 Clazz.defineMethod (c$, "finalise", \r
132 function () {\r
133 this.jvlite = null;\r
134 Clazz.superCall (this, jalview.javascript.MouseOverStructureListener, "finalize", []);\r
135 });\r
136 Clazz.overrideMethod (c$, "releaseReferences", \r
137 function (svl) {\r
138 }, "~O");\r
139 Clazz.overrideMethod (c$, "isListeningFor", \r
140 function (seq) {\r
141 return true;\r
142 }, "jalview.datamodel.SequenceI");\r
143 });\r