JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / bin / jalview / structure / StructureSelectionManager.js
1 Clazz.declarePackage ("jalview.structure");\r
2 Clazz.load (["java.util.ArrayList", "$.HashMap", "$.LinkedHashSet", "$.Vector"], "jalview.structure.StructureSelectionManager", ["MCview.PDBfile", "jalview.analysis.AlignSeq", "jalview.commands.EditCommand", "$.OrderCommand", "jalview.datamodel.Mapping", "$.SearchResults", "jalview.io.AppletFormatAdapter", "jalview.structure.AtomSpec", "$.SecondaryStructureListener", "$.SequenceListener", "$.StructureListener", "$.StructureMapping", "$.VamsasListener", "jalview.util.MappingUtils", "$.MessageManager", "java.lang.Error", "$.NullPointerException", "$.StringBuilder", "java.util.Arrays", "$.Collections", "$.IdentityHashMap"], function () {\r
3 c$ = Clazz.decorateAsClass (function () {\r
4 this.mappings = null;\r
5 this.processSecondaryStructure = false;\r
6 this.secStructServices = false;\r
7 this.addTempFacAnnot = false;\r
8 this.seqmappings = null;\r
9 this.seqMappingRefCounts = null;\r
10 this.commandListeners = null;\r
11 this.sel_listeners = null;\r
12 this.pdbIdFileName = null;\r
13 this.pdbFileNameId = null;\r
14 this.relaySeqMappings = true;\r
15 this.listeners = null;\r
16 this.handlingVamsasMo = false;\r
17 this.lastmsg = 0;\r
18 this.view_listeners = null;\r
19 Clazz.instantialize (this, arguments);\r
20 }, jalview.structure, "StructureSelectionManager");\r
21 Clazz.prepareFields (c$, function () {\r
22 this.mappings =  new java.util.ArrayList ();\r
23 this.seqmappings =  new java.util.LinkedHashSet ();\r
24 this.seqMappingRefCounts =  new java.util.HashMap ();\r
25 this.commandListeners =  new java.util.ArrayList ();\r
26 this.sel_listeners =  new java.util.ArrayList ();\r
27 this.pdbIdFileName =  new java.util.HashMap ();\r
28 this.pdbFileNameId =  new java.util.HashMap ();\r
29 this.listeners =  new java.util.Vector ();\r
30 this.view_listeners =  new java.util.Vector ();\r
31 });\r
32 Clazz.defineMethod (c$, "isSecStructServices", \r
33 function () {\r
34 return this.secStructServices;\r
35 });\r
36 Clazz.defineMethod (c$, "setSecStructServices", \r
37 function (secStructServices) {\r
38 this.secStructServices = secStructServices;\r
39 }, "~B");\r
40 Clazz.defineMethod (c$, "isAddTempFacAnnot", \r
41 function () {\r
42 return this.addTempFacAnnot;\r
43 });\r
44 Clazz.defineMethod (c$, "setAddTempFacAnnot", \r
45 function (addTempFacAnnot) {\r
46 this.addTempFacAnnot = addTempFacAnnot;\r
47 }, "~B");\r
48 Clazz.defineMethod (c$, "isProcessSecondaryStructure", \r
49 function () {\r
50 return this.processSecondaryStructure;\r
51 });\r
52 Clazz.defineMethod (c$, "setProcessSecondaryStructure", \r
53 function (enable) {\r
54 this.processSecondaryStructure = enable;\r
55 }, "~B");\r
56 Clazz.defineMethod (c$, "reportMapping", \r
57 function () {\r
58 if (this.mappings.isEmpty ()) {\r
59 System.err.println ("reportMapping: No PDB/Sequence mappings.");\r
60 } else {\r
61 System.err.println ("reportMapping: There are " + this.mappings.size () + " mappings.");\r
62 var i = 0;\r
63 for (var sm, $sm = this.mappings.iterator (); $sm.hasNext () && ((sm = $sm.next ()) || true);) {\r
64 System.err.println ("mapping " + i++ + " : " + sm.pdbfile);\r
65 }\r
66 }});\r
67 Clazz.defineMethod (c$, "registerPDBFile", \r
68 function (idForFile, absoluteFile) {\r
69 this.pdbIdFileName.put (idForFile, absoluteFile);\r
70 this.pdbFileNameId.put (absoluteFile, idForFile);\r
71 }, "~S,~S");\r
72 Clazz.defineMethod (c$, "findIdForPDBFile", \r
73 function (idOrFile) {\r
74 var id = this.pdbFileNameId.get (idOrFile);\r
75 return id;\r
76 }, "~S");\r
77 Clazz.defineMethod (c$, "findFileForPDBId", \r
78 function (idOrFile) {\r
79 var id = this.pdbIdFileName.get (idOrFile);\r
80 return id;\r
81 }, "~S");\r
82 Clazz.defineMethod (c$, "isPDBFileRegistered", \r
83 function (idOrFile) {\r
84 return this.pdbFileNameId.containsKey (idOrFile) || this.pdbIdFileName.containsKey (idOrFile);\r
85 }, "~S");\r
86 c$.getStructureSelectionManager = Clazz.defineMethod (c$, "getStructureSelectionManager", \r
87 function (context) {\r
88 if (context == null) {\r
89 if (jalview.structure.StructureSelectionManager.nullProvider == null) {\r
90 if (jalview.structure.StructureSelectionManager.instances != null) {\r
91 throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_structure_selection_manager_null"),  new NullPointerException (jalview.util.MessageManager.getString ("exception.ssm_context_is_null")));\r
92 } else {\r
93 jalview.structure.StructureSelectionManager.nullProvider =  new jalview.structure.StructureSelectionManager ();\r
94 }return jalview.structure.StructureSelectionManager.nullProvider;\r
95 }}if (jalview.structure.StructureSelectionManager.instances == null) {\r
96 jalview.structure.StructureSelectionManager.instances =  new java.util.IdentityHashMap ();\r
97 }var instance = jalview.structure.StructureSelectionManager.instances.get (context);\r
98 if (instance == null) {\r
99 if (jalview.structure.StructureSelectionManager.nullProvider != null) {\r
100 instance = jalview.structure.StructureSelectionManager.nullProvider;\r
101 } else {\r
102 instance =  new jalview.structure.StructureSelectionManager ();\r
103 }jalview.structure.StructureSelectionManager.instances.put (context, instance);\r
104 }return instance;\r
105 }, "jalview.api.StructureSelectionManagerProvider");\r
106 Clazz.defineMethod (c$, "setRelaySeqMappings", \r
107 function (relay) {\r
108 this.relaySeqMappings = relay;\r
109 }, "~B");\r
110 Clazz.defineMethod (c$, "isRelaySeqMappingsEnabled", \r
111 function () {\r
112 return this.relaySeqMappings;\r
113 });\r
114 Clazz.defineMethod (c$, "addStructureViewerListener", \r
115 function (svl) {\r
116 if (!this.listeners.contains (svl)) {\r
117 this.listeners.addElement (svl);\r
118 }}, "~O");\r
119 Clazz.defineMethod (c$, "alreadyMappedToFile", \r
120 function (pdbid) {\r
121 for (var sm, $sm = this.mappings.iterator (); $sm.hasNext () && ((sm = $sm.next ()) || true);) {\r
122 if (sm.getPdbId ().equals (pdbid)) {\r
123 return sm.pdbfile;\r
124 }}\r
125 return null;\r
126 }, "~S");\r
127 Clazz.defineMethod (c$, "setMapping", \r
128 function (sequence, targetChains, pdbFile, protocol) {\r
129 return this.setMapping (true, sequence, targetChains, pdbFile, protocol);\r
130 }, "~A,~A,~S,~S");\r
131 Clazz.defineMethod (c$, "setMapping", \r
132 function (forStructureView, sequence, targetChains, pdbFile, protocol) {\r
133 var parseSecStr = this.processSecondaryStructure;\r
134 if (this.isPDBFileRegistered (pdbFile)) {\r
135 for (var sq, $sq = 0, $$sq = sequence; $sq < $$sq.length && ((sq = $$sq[$sq]) || true); $sq++) {\r
136 var ds = sq;\r
137 while (ds.getDatasetSequence () != null) {\r
138 ds = ds.getDatasetSequence ();\r
139 }\r
140 ;if (ds.getAnnotation () != null) {\r
141 for (var ala, $ala = 0, $$ala = ds.getAnnotation (); $ala < $$ala.length && ((ala = $$ala[$ala]) || true); $ala++) {\r
142 if (MCview.PDBfile.isCalcIdForFile (ala, this.findIdForPDBFile (pdbFile))) {\r
143 parseSecStr = false;\r
144 }}\r
145 }}\r
146 }var pdb = null;\r
147 try {\r
148 pdb =  new MCview.PDBfile (this.addTempFacAnnot, parseSecStr, this.secStructServices, pdbFile, protocol);\r
149 if (pdb.id != null && pdb.id.trim ().length > 0 && jalview.io.AppletFormatAdapter.FILE.equals (protocol)) {\r
150 this.registerPDBFile (pdb.id.trim (), pdbFile);\r
151 }} catch (ex) {\r
152 if (Clazz.exceptionOf (ex, Exception)) {\r
153 ex.printStackTrace ();\r
154 return null;\r
155 } else {\r
156 throw ex;\r
157 }\r
158 }\r
159 var targetChain;\r
160 for (var s = 0; s < sequence.length; s++) {\r
161 var infChain = true;\r
162 var seq = sequence[s];\r
163 if (targetChains != null && targetChains[s] != null) {\r
164 infChain = false;\r
165 targetChain = targetChains[s];\r
166 } else if (seq.getName ().indexOf ("|") > -1) {\r
167 targetChain = seq.getName ().substring (seq.getName ().lastIndexOf ("|") + 1);\r
168 if (targetChain.length > 1) {\r
169 if (targetChain.trim ().length == 0) {\r
170 targetChain = " ";\r
171 } else {\r
172 targetChain = "";\r
173 }}} else {\r
174 targetChain = "";\r
175 }var max = -10;\r
176 var maxAlignseq = null;\r
177 var maxChainId = " ";\r
178 var maxChain = null;\r
179 var first = true;\r
180 for (var chain, $chain = pdb.chains.iterator (); $chain.hasNext () && ((chain = $chain.next ()) || true);) {\r
181 if (targetChain.length > 0 && !targetChain.equals (chain.id) && !infChain) {\r
182 continue;\r
183 }var type = chain.isNa ? "dna" : "pep";\r
184 var as = jalview.analysis.AlignSeq.doGlobalNWAlignment (seq, chain.sequence, type);\r
185 if (first || as.maxscore > max || (as.maxscore == max && chain.id.equals (targetChain))) {\r
186 first = false;\r
187 maxChain = chain;\r
188 max = as.maxscore;\r
189 maxAlignseq = as;\r
190 maxChainId = chain.id;\r
191 }}\r
192 if (maxChain == null) {\r
193 continue;\r
194 }var mappingDetails =  new StringBuilder (128);\r
195 mappingDetails.append (jalview.structure.StructureSelectionManager.NEWLINE).append ("PDB Sequence is :").append (jalview.structure.StructureSelectionManager.NEWLINE).append ("Sequence = ").append (maxChain.sequence.getSequenceAsString ());\r
196 mappingDetails.append (jalview.structure.StructureSelectionManager.NEWLINE).append ("No of residues = ").append (maxChain.residues.size ()).append (jalview.structure.StructureSelectionManager.NEWLINE).append (jalview.structure.StructureSelectionManager.NEWLINE);\r
197 var ps = ((Clazz.isClassDefined ("jalview.structure.StructureSelectionManager$1") ? 0 : jalview.structure.StructureSelectionManager.$StructureSelectionManager$1$ ()), Clazz.innerTypeInstance (jalview.structure.StructureSelectionManager$1, this, Clazz.cloneFinals ("mappingDetails", mappingDetails), System.out));\r
198 maxAlignseq.printAlignment (ps);\r
199 mappingDetails.append (jalview.structure.StructureSelectionManager.NEWLINE).append ("PDB start/end ");\r
200 mappingDetails.append (String.valueOf (maxAlignseq.seq2start)).append (" ");\r
201 mappingDetails.append (String.valueOf (maxAlignseq.seq2end));\r
202 mappingDetails.append (jalview.structure.StructureSelectionManager.NEWLINE).append ("SEQ start/end ");\r
203 mappingDetails.append (String.valueOf (maxAlignseq.seq1start + seq.getStart () - 1)).append (" ");\r
204 mappingDetails.append (String.valueOf (maxAlignseq.seq1end + seq.getEnd () - 1));\r
205 maxChain.makeExactMapping (maxAlignseq, seq);\r
206 var sqmpping = maxAlignseq.getMappingFromS1 (false);\r
207 var omap =  new jalview.datamodel.Mapping (sqmpping.getMap ().getInverse ());\r
208 maxChain.transferRESNUMFeatures (seq, null);\r
209 var mapping =  Clazz.newIntArray (seq.findPosition (seq.getLength ()) + 2, 2, 0);\r
210 var resNum = -10000;\r
211 var index = 0;\r
212 do {\r
213 var tmp = maxChain.atoms.elementAt (index);\r
214 if (resNum != tmp.resNumber && tmp.alignmentMapping != -1) {\r
215 resNum = tmp.resNumber;\r
216 mapping[tmp.alignmentMapping + 1][0] = tmp.resNumber;\r
217 mapping[tmp.alignmentMapping + 1][1] = tmp.atomIndex;\r
218 }index++;\r
219 } while (index < maxChain.atoms.size ());\r
220 if (protocol.equals (jalview.io.AppletFormatAdapter.PASTE)) {\r
221 pdbFile = "INLINE" + pdb.id;\r
222 }var newMapping =  new jalview.structure.StructureMapping (seq, pdbFile, pdb.id, maxChainId, mapping, mappingDetails.toString ());\r
223 if (forStructureView) {\r
224 this.mappings.add (newMapping);\r
225 }maxChain.transferResidueAnnotation (newMapping, sqmpping);\r
226 }\r
227 return pdb;\r
228 }, "~B,~A,~A,~S,~S");\r
229 Clazz.defineMethod (c$, "removeStructureViewerListener", \r
230 function (svl, pdbfiles) {\r
231 this.listeners.removeElement (svl);\r
232 if (Clazz.instanceOf (svl, jalview.structure.SequenceListener)) {\r
233 for (var i = 0; i < this.listeners.size (); i++) {\r
234 if (Clazz.instanceOf (this.listeners.elementAt (i), jalview.structure.StructureListener)) {\r
235 (this.listeners.elementAt (i)).releaseReferences (svl);\r
236 }}\r
237 }if (pdbfiles == null) {\r
238 return;\r
239 }var pdbs =  new java.util.ArrayList (java.util.Arrays.asList (pdbfiles));\r
240 var sl;\r
241 for (var i = 0; i < this.listeners.size (); i++) {\r
242 if (Clazz.instanceOf (this.listeners.elementAt (i), jalview.structure.StructureListener)) {\r
243 sl = this.listeners.elementAt (i);\r
244 for (var pdbfile, $pdbfile = 0, $$pdbfile = sl.getPdbFile (); $pdbfile < $$pdbfile.length && ((pdbfile = $$pdbfile[$pdbfile]) || true); $pdbfile++) {\r
245 pdbs.remove (pdbfile);\r
246 }\r
247 }}\r
248 if (pdbs.size () > 0) {\r
249 var tmp =  new java.util.ArrayList ();\r
250 for (var sm, $sm = this.mappings.iterator (); $sm.hasNext () && ((sm = $sm.next ()) || true);) {\r
251 if (!pdbs.contains (sm.pdbfile)) {\r
252 tmp.add (sm);\r
253 }}\r
254 this.mappings = tmp;\r
255 }}, "~O,~A");\r
256 Clazz.defineMethod (c$, "mouseOverStructure", \r
257 function (pdbResNum, chain, pdbfile) {\r
258 var atomSpec =  new jalview.structure.AtomSpec (pdbfile, chain, pdbResNum, 0);\r
259 var atoms = java.util.Collections.singletonList (atomSpec);\r
260 this.mouseOverStructure (atoms);\r
261 }, "~N,~S,~S");\r
262 Clazz.defineMethod (c$, "mouseOverStructure", \r
263 function (atoms) {\r
264 if (this.listeners == null) {\r
265 return;\r
266 }var hasSequenceListener = false;\r
267 for (var i = 0; i < this.listeners.size (); i++) {\r
268 if (Clazz.instanceOf (this.listeners.elementAt (i), jalview.structure.SequenceListener)) {\r
269 hasSequenceListener = true;\r
270 }}\r
271 if (!hasSequenceListener) {\r
272 return;\r
273 }var results =  new jalview.datamodel.SearchResults ();\r
274 for (var atom, $atom = atoms.iterator (); $atom.hasNext () && ((atom = $atom.next ()) || true);) {\r
275 var lastseq = null;\r
276 var lastipos = -1;\r
277 for (var sm, $sm = this.mappings.iterator (); $sm.hasNext () && ((sm = $sm.next ()) || true);) {\r
278 if (sm.pdbfile.equals (atom.getPdbFile ()) && sm.pdbchain.equals (atom.getChain ())) {\r
279 var indexpos = sm.getSeqPos (atom.getPdbResNum ());\r
280 if (lastipos != indexpos && lastseq !== sm.sequence) {\r
281 results.addResult (sm.sequence, indexpos, indexpos);\r
282 lastipos = indexpos;\r
283 lastseq = sm.sequence;\r
284 for (var acf, $acf = this.seqmappings.iterator (); $acf.hasNext () && ((acf = $acf.next ()) || true);) {\r
285 acf.markMappedRegion (sm.sequence, indexpos, results);\r
286 }\r
287 }}}\r
288 }\r
289 for (var li, $li = this.listeners.iterator (); $li.hasNext () && ((li = $li.next ()) || true);) {\r
290 if (Clazz.instanceOf (li, jalview.structure.SequenceListener)) {\r
291 (li).highlightSequence (results);\r
292 }}\r
293 }, "java.util.List");\r
294 Clazz.defineMethod (c$, "mouseOverSequence", \r
295 function (seq, indexpos, index, source) {\r
296 var hasSequenceListeners = this.handlingVamsasMo || !this.seqmappings.isEmpty ();\r
297 var results = null;\r
298 if (index == -1) {\r
299 index = seq.findPosition (indexpos);\r
300 }for (var i = 0; i < this.listeners.size (); i++) {\r
301 var listener = this.listeners.elementAt (i);\r
302 if (listener === source) {\r
303 continue;\r
304 }if (Clazz.instanceOf (listener, jalview.structure.StructureListener)) {\r
305 this.highlightStructure (listener, seq, index);\r
306 } else {\r
307 if (Clazz.instanceOf (listener, jalview.structure.SequenceListener)) {\r
308 var seqListener = listener;\r
309 if (hasSequenceListeners && seqListener.getVamsasSource () !== source) {\r
310 if (this.relaySeqMappings) {\r
311 if (results == null) {\r
312 results = jalview.util.MappingUtils.buildSearchResults (seq, index, this.seqmappings);\r
313 }if (this.handlingVamsasMo) {\r
314 results.addResult (seq, index, index);\r
315 }seqListener.highlightSequence (results);\r
316 }}} else if (Clazz.instanceOf (listener, jalview.structure.VamsasListener) && !this.handlingVamsasMo) {\r
317 (listener).mouseOverSequence (seq, indexpos, source);\r
318 } else if (Clazz.instanceOf (listener, jalview.structure.SecondaryStructureListener)) {\r
319 (listener).mouseOverSequence (seq, indexpos, index);\r
320 }}}\r
321 }, "jalview.datamodel.SequenceI,~N,~N,jalview.structure.VamsasSource");\r
322 Clazz.defineMethod (c$, "highlightStructure", \r
323 function (sl, seq, index) {\r
324 if (!sl.isListeningFor (seq)) {\r
325 return;\r
326 }var atomNo;\r
327 var atoms =  new java.util.ArrayList ();\r
328 for (var sm, $sm = this.mappings.iterator (); $sm.hasNext () && ((sm = $sm.next ()) || true);) {\r
329 if (sm.sequence === seq || sm.sequence === seq.getDatasetSequence ()) {\r
330 atomNo = sm.getAtomNum (index);\r
331 if (atomNo > 0) {\r
332 atoms.add ( new jalview.structure.AtomSpec (sm.pdbfile, sm.pdbchain, sm.getPDBResNum (index), atomNo));\r
333 }}}\r
334 sl.highlightAtoms (atoms);\r
335 }, "jalview.structure.StructureListener,jalview.datamodel.SequenceI,~N");\r
336 Clazz.defineMethod (c$, "mouseOverVamsasSequence", \r
337 function (sequenceI, position, source) {\r
338 this.handlingVamsasMo = true;\r
339 var msg = sequenceI.hashCode () * (1 + position);\r
340 if (this.lastmsg != msg) {\r
341 this.lastmsg = msg;\r
342 this.mouseOverSequence (sequenceI, position, -1, source);\r
343 }this.handlingVamsasMo = false;\r
344 }, "jalview.datamodel.SequenceI,~N,jalview.structure.VamsasSource");\r
345 Clazz.defineMethod (c$, "colourSequenceFromStructure", \r
346 function (seq, pdbid) {\r
347 return null;\r
348 }, "jalview.datamodel.SequenceI,~S");\r
349 Clazz.defineMethod (c$, "structureSelectionChanged", \r
350 function () {\r
351 });\r
352 Clazz.defineMethod (c$, "sequenceSelectionChanged", \r
353 function () {\r
354 });\r
355 Clazz.defineMethod (c$, "sequenceColoursChanged", \r
356 function (source) {\r
357 var sl;\r
358 for (var i = 0; i < this.listeners.size (); i++) {\r
359 if (Clazz.instanceOf (this.listeners.elementAt (i), jalview.structure.StructureListener)) {\r
360 sl = this.listeners.elementAt (i);\r
361 sl.updateColours (source);\r
362 }}\r
363 }, "~O");\r
364 Clazz.defineMethod (c$, "getMapping", \r
365 function (pdbfile) {\r
366 var tmp =  new java.util.ArrayList ();\r
367 for (var sm, $sm = this.mappings.iterator (); $sm.hasNext () && ((sm = $sm.next ()) || true);) {\r
368 if (sm.pdbfile.equals (pdbfile)) {\r
369 tmp.add (sm);\r
370 }}\r
371 return tmp.toArray ( new Array (tmp.size ()));\r
372 }, "~S");\r
373 Clazz.defineMethod (c$, "printMappings", \r
374 function (pdbfile, seqs) {\r
375 if (pdbfile == null || seqs == null || seqs.isEmpty ()) {\r
376 return "";\r
377 }var sb =  new StringBuilder (64);\r
378 for (var sm, $sm = this.mappings.iterator (); $sm.hasNext () && ((sm = $sm.next ()) || true);) {\r
379 if (sm.pdbfile.equals (pdbfile) && seqs.contains (sm.sequence)) {\r
380 sb.append (sm.mappingDetails);\r
381 sb.append (jalview.structure.StructureSelectionManager.NEWLINE);\r
382 sb.append ("=====================");\r
383 sb.append (jalview.structure.StructureSelectionManager.NEWLINE);\r
384 }}\r
385 sb.append (jalview.structure.StructureSelectionManager.NEWLINE);\r
386 return sb.toString ();\r
387 }, "~S,java.util.List");\r
388 Clazz.defineMethod (c$, "removeMappings", \r
389 function (set) {\r
390 if (set != null) {\r
391 for (var acf, $acf = set.iterator (); $acf.hasNext () && ((acf = $acf.next ()) || true);) {\r
392 this.removeMapping (acf);\r
393 }\r
394 }}, "java.util.Set");\r
395 Clazz.defineMethod (c$, "removeMapping", \r
396 function (acf) {\r
397 if (acf != null && this.seqmappings.contains (acf)) {\r
398 var count = (this.seqMappingRefCounts.get (acf)).intValue ();\r
399 count--;\r
400 if (count > 0) {\r
401 this.seqMappingRefCounts.put (acf, new Integer (count));\r
402 } else {\r
403 this.seqmappings.remove (acf);\r
404 this.seqMappingRefCounts.remove (acf);\r
405 }}}, "jalview.datamodel.AlignedCodonFrame");\r
406 Clazz.defineMethod (c$, "addMappings", \r
407 function (set) {\r
408 if (set != null) {\r
409 for (var acf, $acf = set.iterator (); $acf.hasNext () && ((acf = $acf.next ()) || true);) {\r
410 this.addMapping (acf);\r
411 }\r
412 }}, "java.util.Set");\r
413 Clazz.defineMethod (c$, "addMapping", \r
414 function (acf) {\r
415 if (acf != null) {\r
416 if (this.seqmappings.contains (acf)) {\r
417 this.seqMappingRefCounts.put (acf, new Integer ((this.seqMappingRefCounts.get (acf)).intValue () + 1));\r
418 } else {\r
419 this.seqmappings.add (acf);\r
420 this.seqMappingRefCounts.put (acf, new Integer (1));\r
421 }}}, "jalview.datamodel.AlignedCodonFrame");\r
422 Clazz.defineMethod (c$, "addSelectionListener", \r
423 function (selecter) {\r
424 if (!this.sel_listeners.contains (selecter)) {\r
425 this.sel_listeners.add (selecter);\r
426 }}, "jalview.structure.SelectionListener");\r
427 Clazz.defineMethod (c$, "removeSelectionListener", \r
428 function (toremove) {\r
429 if (this.sel_listeners.contains (toremove)) {\r
430 this.sel_listeners.remove (toremove);\r
431 }}, "jalview.structure.SelectionListener");\r
432 Clazz.defineMethod (c$, "sendSelection", \r
433 function (selection, colsel, source) {\r
434 for (var slis, $slis = this.sel_listeners.iterator (); $slis.hasNext () && ((slis = $slis.next ()) || true);) {\r
435 if (slis !== source) {\r
436 slis.selection (selection, colsel, source);\r
437 }}\r
438 }, "jalview.datamodel.SequenceGroup,jalview.datamodel.ColumnSelection,jalview.structure.SelectionSource");\r
439 Clazz.defineMethod (c$, "sendViewPosition", \r
440 function (source, startRes, endRes, startSeq, endSeq) {\r
441 if (this.view_listeners != null && this.view_listeners.size () > 0) {\r
442 var listeners = this.view_listeners.elements ();\r
443 while (listeners.hasMoreElements ()) {\r
444 var slis = listeners.nextElement ();\r
445 if (slis !== source) {\r
446 slis.viewPosition (startRes, endRes, startSeq, endSeq, source);\r
447 };}\r
448 }}, "jalview.api.AlignmentViewPanel,~N,~N,~N,~N");\r
449 c$.release = Clazz.defineMethod (c$, "release", \r
450 function (jalviewLite) {\r
451 {\r
452 if (jalview.structure.StructureSelectionManager.instances == null) {\r
453 return;\r
454 }var mnger = (jalview.structure.StructureSelectionManager.instances.get (jalviewLite));\r
455 if (mnger != null) {\r
456 jalview.structure.StructureSelectionManager.instances.remove (jalviewLite);\r
457 try {\r
458 mnger.finalize ();\r
459 } catch (x) {\r
460 }\r
461 }}}, "jalview.api.StructureSelectionManagerProvider");\r
462 Clazz.defineMethod (c$, "registerPDBEntry", \r
463 function (pdbentry) {\r
464 if (pdbentry.getFile () != null && pdbentry.getFile ().trim ().length > 0) {\r
465 this.registerPDBFile (pdbentry.getId (), pdbentry.getFile ());\r
466 }}, "jalview.datamodel.PDBEntry");\r
467 Clazz.defineMethod (c$, "addCommandListener", \r
468 function (cl) {\r
469 if (!this.commandListeners.contains (cl)) {\r
470 this.commandListeners.add (cl);\r
471 }}, "jalview.structure.CommandListener");\r
472 Clazz.defineMethod (c$, "hasCommandListener", \r
473 function (cl) {\r
474 return this.commandListeners.contains (cl);\r
475 }, "jalview.structure.CommandListener");\r
476 Clazz.defineMethod (c$, "removeCommandListener", \r
477 function (l) {\r
478 return this.commandListeners.remove (l);\r
479 }, "jalview.structure.CommandListener");\r
480 Clazz.defineMethod (c$, "commandPerformed", \r
481 function (command, undo, source) {\r
482 for (var listener, $listener = this.commandListeners.iterator (); $listener.hasNext () && ((listener = $listener.next ()) || true);) {\r
483 listener.mirrorCommand (command, undo, this, source);\r
484 }\r
485 }, "jalview.commands.CommandI,~B,jalview.structure.VamsasSource");\r
486 Clazz.defineMethod (c$, "mapCommand", \r
487 function (command, undo, mapTo, gapChar) {\r
488 if (Clazz.instanceOf (command, jalview.commands.EditCommand)) {\r
489 return jalview.util.MappingUtils.mapEditCommand (command, undo, mapTo, gapChar, this.seqmappings);\r
490 } else if (Clazz.instanceOf (command, jalview.commands.OrderCommand)) {\r
491 return jalview.util.MappingUtils.mapOrderCommand (command, undo, mapTo, this.seqmappings);\r
492 }return null;\r
493 }, "jalview.commands.CommandI,~B,jalview.datamodel.AlignmentI,~S");\r
494 c$.$StructureSelectionManager$1$ = function () {\r
495 Clazz.pu$h ();\r
496 c$ = Clazz.declareAnonymous (jalview.structure, "StructureSelectionManager$1", java.io.PrintStream);\r
497 Clazz.defineMethod (c$, "print", \r
498 function (x) {\r
499 this.f$.mappingDetails.append (x);\r
500 }, "~S");\r
501 Clazz.defineMethod (c$, "println", \r
502 function () {\r
503 this.f$.mappingDetails.append (jalview.structure.StructureSelectionManager.NEWLINE);\r
504 });\r
505 c$ = Clazz.p0p ();\r
506 };\r
507 c$.NEWLINE = c$.prototype.NEWLINE = System.lineSeparator ();\r
508 Clazz.defineStatics (c$,\r
509 "instances", null,\r
510 "nullProvider", null);\r
511 });\r