JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / site / j2s / jalview / appletgui / AlignmentPanel.js
1 Clazz.declarePackage ("jalview.appletgui");\r
2 Clazz.load (["awt2swing.Panel", "jalview.api.AlignmentViewPanel", "java.awt.event.AdjustmentListener", "awt2swing.Scrollbar"], "jalview.appletgui.AlignmentPanel", ["awt2swing.Frame", "jalview.analysis.AnnotationSorter", "jalview.appletgui.AnnotationLabels", "$.AnnotationPanel", "$.FeatureRenderer", "$.IdPanel", "$.IdwidthAdjuster", "$.PaintRefresher", "$.ScalePanel", "$.SeqPanel", "jalview.bin.JalviewLite", "jalview.structure.StructureSelectionManager", "java.awt.BorderLayout", "$.Color", "$.Dimension", "java.awt.event.ComponentAdapter", "java.beans.PropertyChangeListener"], function () {\r
3 c$ = Clazz.decorateAsClass (function () {\r
4 this.av = null;\r
5 this.overviewPanel = null;\r
6 this.seqPanel = null;\r
7 this.idPanel = null;\r
8 this.idwidthAdjuster = null;\r
9 this.alignFrame = null;\r
10 this.scalePanel = null;\r
11 this.annotationPanel = null;\r
12 this.alabels = null;\r
13 this.fastPaint = true;\r
14 this.hextent = 0;\r
15 this.vextent = 0;\r
16 this.sequenceHolderPanel = null;\r
17 this.vscroll = null;\r
18 this.hscroll = null;\r
19 this.seqPanelHolder = null;\r
20 this.scalePanelHolder = null;\r
21 this.idPanelHolder = null;\r
22 this.idSpaceFillerPanel1 = null;\r
23 this.annotationSpaceFillerHolder = null;\r
24 this.hscrollFillerPanel = null;\r
25 this.annotationPanelHolder = null;\r
26 this.apvscroll = null;\r
27 this.followingComplementScroll = false;\r
28 Clazz.instantialize (this, arguments);\r
29 }, jalview.appletgui, "AlignmentPanel", awt2swing.Panel, [java.awt.event.AdjustmentListener, jalview.api.AlignmentViewPanel]);\r
30 Clazz.prepareFields (c$, function () {\r
31 this.sequenceHolderPanel =  new awt2swing.Panel ();\r
32 this.vscroll =  new awt2swing.Scrollbar ();\r
33 this.hscroll =  new awt2swing.Scrollbar ();\r
34 this.seqPanelHolder =  new awt2swing.Panel ();\r
35 this.scalePanelHolder =  new awt2swing.Panel ();\r
36 this.idPanelHolder =  new awt2swing.Panel ();\r
37 this.idSpaceFillerPanel1 =  new awt2swing.Panel ();\r
38 this.annotationSpaceFillerHolder =  new awt2swing.Panel ();\r
39 this.hscrollFillerPanel =  new awt2swing.Panel ();\r
40 this.annotationPanelHolder =  new awt2swing.Panel ();\r
41 this.apvscroll =  new awt2swing.Scrollbar ();\r
42 });\r
43 Clazz.overrideMethod (c$, "finalize", \r
44 function () {\r
45 this.alignFrame = null;\r
46 this.av = null;\r
47 this.seqPanel = null;\r
48 this.seqPanelHolder = null;\r
49 this.sequenceHolderPanel = null;\r
50 this.scalePanel = null;\r
51 this.scalePanelHolder = null;\r
52 this.annotationPanel = null;\r
53 this.annotationPanelHolder = null;\r
54 this.annotationSpaceFillerHolder = null;\r
55 });\r
56 Clazz.makeConstructor (c$, \r
57 function (af, av) {\r
58 Clazz.superConstructor (this, jalview.appletgui.AlignmentPanel, []);\r
59 this.setName ("alignmentPanel");\r
60 try {\r
61 this.jbInit ();\r
62 } catch (e) {\r
63 if (Clazz.exceptionOf (e, Exception)) {\r
64 e.printStackTrace ();\r
65 } else {\r
66 throw e;\r
67 }\r
68 }\r
69 this.alignFrame = af;\r
70 this.av = av;\r
71 this.seqPanel =  new jalview.appletgui.SeqPanel (av, this);\r
72 this.idPanel =  new jalview.appletgui.IdPanel (av, this);\r
73 this.scalePanel =  new jalview.appletgui.ScalePanel (av, this);\r
74 this.idwidthAdjuster =  new jalview.appletgui.IdwidthAdjuster (this);\r
75 this.annotationPanel =  new jalview.appletgui.AnnotationPanel (this);\r
76 this.annotationPanelHolder.add (this.annotationPanel, "Center");\r
77 this.sequenceHolderPanel.add (this.annotationPanelHolder, "South");\r
78 this.alabels =  new jalview.appletgui.AnnotationLabels (this);\r
79 this.setAnnotationVisible (av.isShowAnnotation ());\r
80 this.idPanelHolder.add (this.idPanel, "Center");\r
81 this.idSpaceFillerPanel1.add (this.idwidthAdjuster, "Center");\r
82 this.annotationSpaceFillerHolder.add (this.alabels, "Center");\r
83 this.scalePanelHolder.add (this.scalePanel, "Center");\r
84 this.seqPanelHolder.add (this.seqPanel, "Center");\r
85 this.fontChanged ();\r
86 this.setScrollValues (0, 0);\r
87 this.apvscroll.addAdjustmentListener (this);\r
88 this.hscroll.addAdjustmentListener (this);\r
89 this.vscroll.addAdjustmentListener (this);\r
90 this.addComponentListener (((Clazz.isClassDefined ("jalview.appletgui.AlignmentPanel$1") ? 0 : jalview.appletgui.AlignmentPanel.$AlignmentPanel$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.AlignmentPanel$1, this, Clazz.cloneFinals ("av", av))));\r
91 var d = this.calculateIdWidth ();\r
92 this.idPanel.idCanvas.setSize (d);\r
93 this.hscrollFillerPanel.setSize (d.width, this.annotationPanel.getSize ().height);\r
94 this.idPanel.idCanvas.setSize (d.width, this.seqPanel.seqCanvas.getSize ().height);\r
95 this.annotationSpaceFillerHolder.setSize (d.width, this.annotationPanel.getSize ().height);\r
96 this.alabels.setSize (d.width, this.annotationPanel.getSize ().height);\r
97 var ap = this;\r
98 av.addPropertyChangeListener (((Clazz.isClassDefined ("jalview.appletgui.AlignmentPanel$2") ? 0 : jalview.appletgui.AlignmentPanel.$AlignmentPanel$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.AlignmentPanel$2, this, Clazz.cloneFinals ("ap", ap, "av", av))));\r
99 }, "jalview.appletgui.AlignFrame,jalview.appletgui.AlignViewport");\r
100 Clazz.overrideMethod (c$, "getAlignViewport", \r
101 function () {\r
102 return this.av;\r
103 });\r
104 Clazz.defineMethod (c$, "getSequenceRenderer", \r
105 function () {\r
106 return this.seqPanel.seqCanvas.sr;\r
107 });\r
108 Clazz.overrideMethod (c$, "getFeatureRenderer", \r
109 function () {\r
110 return this.seqPanel.seqCanvas.fr;\r
111 });\r
112 Clazz.overrideMethod (c$, "cloneFeatureRenderer", \r
113 function () {\r
114 var nfr =  new jalview.appletgui.FeatureRenderer (this.av);\r
115 nfr.transferSettings (this.seqPanel.seqCanvas.fr);\r
116 return nfr;\r
117 });\r
118 Clazz.defineMethod (c$, "alignmentChanged", \r
119 function () {\r
120 this.av.alignmentChanged (this);\r
121 if (this.overviewPanel != null) {\r
122 this.overviewPanel.updateOverviewImage ();\r
123 }this.alignFrame.updateEditMenuBar ();\r
124 this.repaint ();\r
125 });\r
126 Clazz.defineMethod (c$, "fontChanged", \r
127 function () {\r
128 this.idPanel.idCanvas.image = null;\r
129 var fm = this.getFontMetrics (this.av.getFont ());\r
130 this.scalePanel.setSize ( new java.awt.Dimension (10, this.av.getCharHeight () + fm.getDescent ()));\r
131 this.idwidthAdjuster.setSize ( new java.awt.Dimension (10, this.av.getCharHeight () + fm.getDescent ()));\r
132 this.av.updateSequenceIdColours ();\r
133 this.annotationPanel.image = null;\r
134 var ap = this.annotationPanel.adjustPanelHeight (false);\r
135 var d = this.calculateIdWidth ();\r
136 d.setSize (d.width + 4, this.seqPanel.seqCanvas.getSize ().height);\r
137 this.alabels.setSize (d.width + 4, ap);\r
138 this.idPanel.idCanvas.setSize (d);\r
139 this.hscrollFillerPanel.setSize (d);\r
140 this.validateAnnotationDimensions (false);\r
141 this.annotationPanel.repaint ();\r
142 this.validate ();\r
143 this.repaint ();\r
144 if (this.overviewPanel != null) {\r
145 this.overviewPanel.updateOverviewImage ();\r
146 }});\r
147 Clazz.defineMethod (c$, "setIdWidth", \r
148 function (w, h) {\r
149 this.idPanel.idCanvas.setSize (w, h);\r
150 this.idPanelHolder.setSize (w, this.idPanelHolder.getSize ().height);\r
151 this.annotationSpaceFillerHolder.setSize (w, this.annotationSpaceFillerHolder.getSize ().height);\r
152 this.alabels.setSize (w, this.alabels.getSize ().height);\r
153 this.validate ();\r
154 }, "~N,~N");\r
155 Clazz.defineMethod (c$, "calculateIdWidth", \r
156 function () {\r
157 if (this.av.nullFrame == null) {\r
158 this.av.nullFrame =  new awt2swing.Frame ();\r
159 this.av.nullFrame.addNotify ();\r
160 this.av.nullFrame.setFont (this.av.font);\r
161 }var g = this.av.nullFrame.getGraphics ();\r
162 var fm = g.getFontMetrics (this.av.font);\r
163 var al = this.av.getAlignment ();\r
164 var i = 0;\r
165 var idWidth = 0;\r
166 var id;\r
167 while (i < al.getHeight () && al.getSequenceAt (i) != null) {\r
168 var s = al.getSequenceAt (i);\r
169 id = s.getDisplayId (this.av.getShowJVSuffix ());\r
170 if (fm.stringWidth (id) > idWidth) {\r
171 idWidth = fm.stringWidth (id);\r
172 }i++;\r
173 }\r
174 i = 0;\r
175 if (al.getAlignmentAnnotation () != null) {\r
176 fm = g.getFontMetrics (this.av.nullFrame.getFont ());\r
177 while (i < al.getAlignmentAnnotation ().length) {\r
178 var label = al.getAlignmentAnnotation ()[i].label;\r
179 if (fm.stringWidth (label) > idWidth) {\r
180 idWidth = fm.stringWidth (label);\r
181 }i++;\r
182 }\r
183 }return  new java.awt.Dimension (idWidth, this.idPanel.idCanvas.getSize ().height);\r
184 });\r
185 Clazz.defineMethod (c$, "highlightSearchResults", \r
186 function (results) {\r
187 this.scrollToPosition (results);\r
188 this.seqPanel.seqCanvas.highlightSearchResults (results);\r
189 }, "jalview.datamodel.SearchResults");\r
190 Clazz.defineMethod (c$, "scrollToPosition", \r
191 function (results) {\r
192 return this.scrollToPosition (results, true);\r
193 }, "jalview.datamodel.SearchResults");\r
194 Clazz.defineMethod (c$, "scrollToPosition", \r
195 function (results, redrawOverview) {\r
196 return this.scrollToPosition (results, redrawOverview, false);\r
197 }, "jalview.datamodel.SearchResults,~B");\r
198 Clazz.defineMethod (c$, "scrollToPosition", \r
199 function (results, redrawOverview, centre) {\r
200 if (results != null && results.getSize () > 0) {\r
201 var alignment = this.av.getAlignment ();\r
202 var seqIndex = alignment.findIndex (results);\r
203 if (seqIndex == -1) {\r
204 return false;\r
205 }var seq = alignment.getSequenceAt (seqIndex);\r
206 var r = results.getResults (seq, 0, alignment.getWidth ());\r
207 if (r == null) {\r
208 if (jalview.bin.JalviewLite.debug) {\r
209 System.out.println ("DEBUG: scroll didn't happen - results not within alignment : " + seq.getStart () + "," + seq.getEnd ());\r
210 }return false;\r
211 }if (jalview.bin.JalviewLite.debug) {\r
212 }var start = r[0];\r
213 var end = r[1];\r
214 if (centre) {\r
215 var offset = Clazz.doubleToInt ((this.av.getEndRes () - this.av.getStartRes () + 1) / 2) - 1;\r
216 start = Math.max (start - offset, 0);\r
217 end = Math.min (end + offset, seq.getEnd () - 1);\r
218 }if (start < 0) {\r
219 return false;\r
220 }if (end == seq.getEnd ()) {\r
221 return false;\r
222 }return this.scrollTo (start, end, seqIndex, false, redrawOverview);\r
223 }return true;\r
224 }, "jalview.datamodel.SearchResults,~B,~B");\r
225 Clazz.defineMethod (c$, "scrollTo", \r
226 function (ostart, end, seqIndex, scrollToNearest, redrawOverview) {\r
227 var startv;\r
228 var endv;\r
229 var starts;\r
230 var ends;\r
231 var width;\r
232 var start = -1;\r
233 if (this.av.hasHiddenColumns ()) {\r
234 start = this.av.getColumnSelection ().findColumnPosition (ostart);\r
235 end = this.av.getColumnSelection ().findColumnPosition (end);\r
236 if (start == end) {\r
237 if (!scrollToNearest && !this.av.getColumnSelection ().isVisible (ostart)) {\r
238 return false;\r
239 }}} else {\r
240 start = ostart;\r
241 }if (!this.av.getWrapAlignment ()) {\r
242 if ((startv = this.av.getStartRes ()) >= start) {\r
243 this.setScrollValues (start - 1, seqIndex);\r
244 } else if ((endv = this.av.getEndRes ()) <= end) {\r
245 this.setScrollValues (startv + 1 + end - endv, seqIndex);\r
246 } else if ((starts = this.av.getStartSeq ()) > seqIndex) {\r
247 this.setScrollValues (this.av.getStartRes (), seqIndex);\r
248 } else if ((ends = this.av.getEndSeq ()) <= seqIndex) {\r
249 this.setScrollValues (this.av.getStartRes (), starts + seqIndex - ends + 1);\r
250 }} else {\r
251 this.scrollToWrappedVisible (start);\r
252 }if (redrawOverview && this.overviewPanel != null) {\r
253 this.overviewPanel.setBoxPosition ();\r
254 }this.paintAlignment (redrawOverview);\r
255 return true;\r
256 }, "~N,~N,~N,~B,~B");\r
257 Clazz.defineMethod (c$, "scrollToWrappedVisible", \r
258 function (res) {\r
259 var cwidth = this.seqPanel.seqCanvas.getWrappedCanvasWidth (this.seqPanel.seqCanvas.getSize ().width);\r
260 if (res <= this.av.getStartRes () || res >= (this.av.getStartRes () + cwidth)) {\r
261 this.vscroll.setValue (Clazz.doubleToInt (res / cwidth));\r
262 this.av.startRes = this.vscroll.getValue () * cwidth;\r
263 }}, "~N");\r
264 Clazz.defineMethod (c$, "getOverviewPanel", \r
265 function () {\r
266 return this.overviewPanel;\r
267 });\r
268 Clazz.defineMethod (c$, "setOverviewPanel", \r
269 function (op) {\r
270 this.overviewPanel = op;\r
271 }, "jalview.appletgui.OverviewPanel");\r
272 Clazz.defineMethod (c$, "setAnnotationVisible", \r
273 function (b) {\r
274 if (!this.av.getWrapAlignment ()) {\r
275 this.annotationSpaceFillerHolder.setVisible (b);\r
276 this.annotationPanelHolder.setVisible (b);\r
277 } else {\r
278 this.annotationSpaceFillerHolder.setVisible (false);\r
279 this.annotationPanelHolder.setVisible (false);\r
280 }this.validate ();\r
281 this.repaint ();\r
282 }, "~B");\r
283 Clazz.overrideMethod (c$, "adjustAnnotationHeight", \r
284 function () {\r
285 if (this.alignFrame.getSize ().height == 0) {\r
286 System.out.println ("adjustAnnotationHeight frame size zero NEEDS FIXING");\r
287 }this.fontChanged ();\r
288 this.validateAnnotationDimensions (true);\r
289 this.apvscroll.addNotify ();\r
290 this.hscroll.addNotify ();\r
291 this.validate ();\r
292 this.paintAlignment (true);\r
293 });\r
294 Clazz.defineMethod (c$, "validateAnnotationDimensions", \r
295 function (adjustPanelHeight) {\r
296 var rowHeight = this.av.getCharHeight ();\r
297 var alignmentHeight = rowHeight * this.av.getAlignment ().getHeight ();\r
298 var annotationHeight = this.av.calcPanelHeight ();\r
299 var mheight = annotationHeight;\r
300 var d = this.sequenceHolderPanel.getSize ();\r
301 var availableHeight = d.height - this.scalePanelHolder.getHeight ();\r
302 if (adjustPanelHeight) {\r
303 if (annotationHeight + alignmentHeight > availableHeight) {\r
304 annotationHeight = Math.min (annotationHeight, availableHeight - 2 * rowHeight);\r
305 }} else {\r
306 annotationHeight = this.annotationPanelHolder.getSize ().height;\r
307 }if (availableHeight - annotationHeight < 5) {\r
308 annotationHeight = availableHeight;\r
309 }this.annotationPanel.setSize ( new java.awt.Dimension (d.width, annotationHeight));\r
310 this.annotationPanelHolder.setSize ( new java.awt.Dimension (d.width, annotationHeight));\r
311 this.seqPanel.seqCanvas.setSize (d.width, this.seqPanel.seqCanvas.getSize ().height);\r
312 var e = this.idPanel.getSize ();\r
313 this.alabels.setSize ( new java.awt.Dimension (e.width, annotationHeight));\r
314 this.annotationSpaceFillerHolder.setSize ( new java.awt.Dimension (e.width, annotationHeight));\r
315 var s = this.apvscroll.getValue ();\r
316 if (s > mheight - annotationHeight) {\r
317 s = 0;\r
318 }this.apvscroll.setValues (s, annotationHeight, 0, mheight);\r
319 this.annotationPanel.setScrollOffset (this.apvscroll.getValue (), false);\r
320 this.alabels.setScrollOffset (this.apvscroll.getValue (), false);\r
321 }, "~B");\r
322 Clazz.defineMethod (c$, "setWrapAlignment", \r
323 function (wrap) {\r
324 this.av.startSeq = 0;\r
325 this.av.startRes = 0;\r
326 this.scalePanelHolder.setVisible (!wrap);\r
327 this.hscroll.setVisible (!wrap);\r
328 this.idwidthAdjuster.setVisible (!wrap);\r
329 if (wrap) {\r
330 this.annotationPanelHolder.setVisible (false);\r
331 this.annotationSpaceFillerHolder.setVisible (false);\r
332 } else if (this.av.isShowAnnotation ()) {\r
333 this.annotationPanelHolder.setVisible (true);\r
334 this.annotationSpaceFillerHolder.setVisible (true);\r
335 }this.idSpaceFillerPanel1.setVisible (!wrap);\r
336 this.fontChanged ();\r
337 this.validate ();\r
338 this.sequenceHolderPanel.validate ();\r
339 this.repaint ();\r
340 }, "~B");\r
341 Clazz.defineMethod (c$, "scrollUp", \r
342 function (up) {\r
343 if (up) {\r
344 if (this.vscroll.getValue () < 1) {\r
345 return false;\r
346 }this.setScrollValues (this.hscroll.getValue (), this.vscroll.getValue () - 1);\r
347 } else {\r
348 if (this.vextent + this.vscroll.getValue () >= this.av.getAlignment ().getHeight ()) {\r
349 return false;\r
350 }this.setScrollValues (this.hscroll.getValue (), this.vscroll.getValue () + 1);\r
351 }this.repaint ();\r
352 return true;\r
353 }, "~B");\r
354 Clazz.defineMethod (c$, "scrollRight", \r
355 function (right) {\r
356 if (!right) {\r
357 if (this.hscroll.getValue () < 1) {\r
358 return false;\r
359 }this.setScrollValues (this.hscroll.getValue () - 1, this.vscroll.getValue ());\r
360 } else {\r
361 if (this.hextent + this.hscroll.getValue () >= this.av.getAlignment ().getWidth ()) {\r
362 return false;\r
363 }this.setScrollValues (this.hscroll.getValue () + 1, this.vscroll.getValue ());\r
364 }this.repaint ();\r
365 return true;\r
366 }, "~B");\r
367 Clazz.defineMethod (c$, "setScrollValues", \r
368 function (x, y) {\r
369 var width = this.av.getAlignment ().getWidth ();\r
370 var height = this.av.getAlignment ().getHeight ();\r
371 if (this.av.hasHiddenColumns ()) {\r
372 width = this.av.getColumnSelection ().findColumnPosition (width);\r
373 }if (x < 0) {\r
374 x = 0;\r
375 };this.hextent = Clazz.doubleToInt (this.seqPanel.seqCanvas.getSize ().width / this.av.getCharWidth ());\r
376 this.vextent = Clazz.doubleToInt (this.seqPanel.seqCanvas.getSize ().height / this.av.getCharHeight ());\r
377 if (this.hextent > width) {\r
378 this.hextent = width;\r
379 }if (this.vextent > height) {\r
380 this.vextent = height;\r
381 }if ((this.hextent + x) > width) {\r
382 System.err.println ("hextent was " + this.hextent + " and x was " + x);\r
383 x = width - this.hextent;\r
384 }if ((this.vextent + y) > height) {\r
385 y = height - this.vextent;\r
386 }if (y < 0) {\r
387 y = 0;\r
388 }if (x < 0) {\r
389 System.err.println ("x was " + x);\r
390 x = 0;\r
391 }this.av.setStartSeq (y);\r
392 var endSeq = y + this.vextent;\r
393 if (endSeq > this.av.getAlignment ().getHeight ()) {\r
394 endSeq = this.av.getAlignment ().getHeight ();\r
395 }this.av.setEndSeq (endSeq);\r
396 this.av.setStartRes (x);\r
397 this.av.setEndRes ((x + (Clazz.doubleToInt (this.seqPanel.seqCanvas.getSize ().width / this.av.getCharWidth ()))) - 1);\r
398 this.hscroll.setValues (x, this.hextent, 0, width);\r
399 this.vscroll.setValues (y, this.vextent, 0, height);\r
400 if (this.overviewPanel != null) {\r
401 this.overviewPanel.setBoxPosition ();\r
402 }this.sendViewPosition ();\r
403 }, "~N,~N");\r
404 Clazz.overrideMethod (c$, "adjustmentValueChanged", \r
405 function (evt) {\r
406 if (this.annotationPanel == null) return;\r
407 var oldX = this.av.getStartRes ();\r
408 var oldY = this.av.getStartSeq ();\r
409 if (evt == null || evt.getSource () === this.apvscroll) {\r
410 this.annotationPanel.setScrollOffset (this.apvscroll.getValue (), false);\r
411 this.alabels.setScrollOffset (this.apvscroll.getValue (), false);\r
412 }if (evt == null || evt.getSource () === this.hscroll) {\r
413 var x = this.hscroll.getValue ();\r
414 this.av.setStartRes (x);\r
415 this.av.setEndRes (x + Clazz.doubleToInt (this.seqPanel.seqCanvas.getSize ().width / this.av.getCharWidth ()) - 1);\r
416 }if (evt == null || evt.getSource () === this.vscroll) {\r
417 var offy = this.vscroll.getValue ();\r
418 if (this.av.getWrapAlignment ()) {\r
419 var rowSize = this.seqPanel.seqCanvas.getWrappedCanvasWidth (this.seqPanel.seqCanvas.getSize ().width);\r
420 this.av.setStartRes (this.vscroll.getValue () * rowSize);\r
421 this.av.setEndRes ((this.vscroll.getValue () + 1) * rowSize);\r
422 } else {\r
423 this.av.setStartSeq (offy);\r
424 this.av.setEndSeq (offy + Clazz.doubleToInt (this.seqPanel.seqCanvas.getSize ().height / this.av.getCharHeight ()));\r
425 }}if (this.overviewPanel != null) {\r
426 this.overviewPanel.setBoxPosition ();\r
427 }var scrollX = this.av.startRes - oldX;\r
428 var scrollY = this.av.startSeq - oldY;\r
429 if (this.av.getWrapAlignment () || !this.fastPaint || this.av.MAC) {\r
430 this.repaint ();\r
431 } else {\r
432 if (scrollX > this.av.endRes - this.av.startRes) {\r
433 scrollX = this.av.endRes - this.av.startRes;\r
434 } else if (scrollX < this.av.startRes - this.av.endRes) {\r
435 scrollX = this.av.startRes - this.av.endRes;\r
436 }this.idPanel.idCanvas.fastPaint (scrollY);\r
437 this.seqPanel.seqCanvas.fastPaint (scrollX, scrollY);\r
438 this.scalePanel.repaint ();\r
439 if (this.av.isShowAnnotation ()) {\r
440 this.annotationPanel.fastPaint (this.av.getStartRes () - oldX);\r
441 }}this.sendViewPosition ();\r
442 if (this.isFollowingComplementScroll ()) {\r
443 this.setFollowingComplementScroll (false);\r
444 } else {\r
445 var ap = this.getComplementPanel ();\r
446 this.av.scrollComplementaryAlignment (ap);\r
447 }}, "java.awt.event.AdjustmentEvent");\r
448 Clazz.defineMethod (c$, "getComplementPanel", \r
449  function () {\r
450 var ap = null;\r
451 if (this.alignFrame != null) {\r
452 var sf = this.alignFrame.getSplitFrame ();\r
453 if (sf != null) {\r
454 var other = sf.getComplement (this.alignFrame);\r
455 if (other != null) {\r
456 ap = other.alignPanel;\r
457 }}}return ap;\r
458 });\r
459 Clazz.defineMethod (c$, "scrollToCentre", \r
460 function (sr, seqOffset) {\r
461 var mappedTo = sr.getResultSequence (0);\r
462 var seqs = this.av.getAlignment ().getSequences ();\r
463 var sequenceIndex = 0;\r
464 var matched = false;\r
465 for (var seq, $seq = seqs.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {\r
466 if (mappedTo === seq.getDatasetSequence ()) {\r
467 matched = true;\r
468 break;\r
469 }sequenceIndex++;\r
470 }\r
471 if (!matched) {\r
472 return;\r
473 }sequenceIndex = Math.max (0, sequenceIndex - seqOffset);\r
474 sr.getResults ().get (0).setSequence (this.av.getAlignment ().getSequenceAt (sequenceIndex));\r
475 this.setFollowingComplementScroll (true);\r
476 this.scrollToPosition (sr, true, true);\r
477 }, "jalview.datamodel.SearchResults,~N");\r
478 Clazz.defineMethod (c$, "sendViewPosition", \r
479  function () {\r
480 jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.av.applet).sendViewPosition (this, this.av.startRes, this.av.endRes, this.av.startSeq, this.av.endSeq);\r
481 });\r
482 Clazz.overrideMethod (c$, "paintAlignment", \r
483 function (updateOverview) {\r
484 var sorter =  new jalview.analysis.AnnotationSorter (this.getAlignment (), this.av.isShowAutocalculatedAbove ());\r
485 sorter.sort (this.getAlignment ().getAlignmentAnnotation (), this.av.getSortAnnotationsBy ());\r
486 this.repaint ();\r
487 if (updateOverview) {\r
488 jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.av.applet).sequenceColoursChanged (this);\r
489 if (this.overviewPanel != null) {\r
490 this.overviewPanel.updateOverviewImage ();\r
491 }}}, "~B");\r
492 Clazz.overrideMethod (c$, "paintComponent", \r
493 function (g) {\r
494 System.out.println ("alignframe paintcomp");\r
495 this.invalidate ();\r
496 var d = this.idPanel.idCanvas.getSize ();\r
497 var canvasHeight = this.seqPanel.seqCanvas.getSize ().height;\r
498 if (canvasHeight != d.height) {\r
499 this.idPanel.idCanvas.setSize (d.width, canvasHeight);\r
500 }if (this.av.getWrapAlignment ()) {\r
501 var maxwidth = this.av.getAlignment ().getWidth ();\r
502 if (this.av.hasHiddenColumns ()) {\r
503 maxwidth = this.av.getColumnSelection ().findColumnPosition (maxwidth) - 1;\r
504 }var canvasWidth = this.seqPanel.seqCanvas.getWrappedCanvasWidth (this.seqPanel.seqCanvas.getSize ().width);\r
505 if (canvasWidth > 0) {\r
506 var max = Clazz.doubleToInt (maxwidth / canvasWidth);\r
507 this.vscroll.setMaximum (1 + max);\r
508 this.vscroll.setUnitIncrement (1);\r
509 this.vscroll.setVisibleAmount (1);\r
510 }} else {\r
511 this.setScrollValues (this.av.getStartRes (), this.av.getStartSeq ());\r
512 }}, "java.awt.Graphics");\r
513 Clazz.defineMethod (c$, "jbInit", \r
514  function () {\r
515 this.setLayout ( new java.awt.BorderLayout ());\r
516 this.sequenceHolderPanel.setLayout ( new java.awt.BorderLayout ());\r
517 this.seqPanelHolder.setLayout ( new java.awt.BorderLayout ());\r
518 this.scalePanelHolder.setBackground (java.awt.Color.white);\r
519 this.scalePanelHolder.setLayout ( new java.awt.BorderLayout ());\r
520 this.idPanelHolder.setLayout ( new java.awt.BorderLayout ());\r
521 this.idSpaceFillerPanel1.setBackground (java.awt.Color.white);\r
522 this.idSpaceFillerPanel1.setLayout ( new java.awt.BorderLayout ());\r
523 this.annotationSpaceFillerHolder.setBackground (java.awt.Color.white);\r
524 this.annotationSpaceFillerHolder.setLayout ( new java.awt.BorderLayout ());\r
525 this.hscroll.setOrientation (0);\r
526 var hscrollHolder =  new awt2swing.Panel ();\r
527 hscrollHolder.setLayout ( new java.awt.BorderLayout ());\r
528 this.hscrollFillerPanel.setBackground (java.awt.Color.white);\r
529 this.apvscroll.setOrientation (1);\r
530 this.apvscroll.setVisible (true);\r
531 this.apvscroll.addAdjustmentListener (this);\r
532 this.annotationPanelHolder.setBackground (java.awt.Color.white);\r
533 this.annotationPanelHolder.setLayout ( new java.awt.BorderLayout ());\r
534 this.annotationPanelHolder.add (this.apvscroll, "East");\r
535 hscrollHolder.setBackground (java.awt.Color.white);\r
536 this.seqPanelHolder.setBackground (java.awt.Color.white);\r
537 this.idPanelHolder.setBackground (java.awt.Color.white);\r
538 this.sequenceHolderPanel.add (this.scalePanelHolder, "North");\r
539 this.sequenceHolderPanel.add (this.seqPanelHolder, "Center");\r
540 this.seqPanelHolder.add (this.vscroll, "East");\r
541 this.add (this.idPanelHolder, "West");\r
542 this.idPanelHolder.add (this.idSpaceFillerPanel1, "North");\r
543 this.idPanelHolder.add (this.annotationSpaceFillerHolder, "South");\r
544 this.add (hscrollHolder, "South");\r
545 hscrollHolder.add (this.hscroll, "Center");\r
546 hscrollHolder.add (this.hscrollFillerPanel, "West");\r
547 this.add (this.sequenceHolderPanel, "Center");\r
548 });\r
549 Clazz.defineMethod (c$, "updateAnnotation", \r
550 function () {\r
551 this.updateAnnotation (false);\r
552 });\r
553 Clazz.defineMethod (c$, "updateAnnotation", \r
554 function (applyGlobalSettings) {\r
555 this.updateAnnotation (applyGlobalSettings, false);\r
556 }, "~B");\r
557 Clazz.defineMethod (c$, "updateAnnotation", \r
558 function (applyGlobalSettings, preserveNewGroupSettings) {\r
559 this.av.updateGroupAnnotationSettings (applyGlobalSettings, preserveNewGroupSettings);\r
560 this.adjustAnnotationHeight ();\r
561 }, "~B,~B");\r
562 Clazz.overrideMethod (c$, "getAlignment", \r
563 function () {\r
564 return this.av.getAlignment ();\r
565 });\r
566 Clazz.overrideMethod (c$, "getViewName", \r
567 function () {\r
568 return this.getName ();\r
569 });\r
570 Clazz.overrideMethod (c$, "getStructureSelectionManager", \r
571 function () {\r
572 return jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.av.applet);\r
573 });\r
574 Clazz.overrideMethod (c$, "raiseOOMWarning", \r
575 function (string, error) {\r
576 System.err.println ("Out of memory whilst '" + string + "'");\r
577 error.printStackTrace ();\r
578 }, "~S,OutOfMemoryError");\r
579 Clazz.defineMethod (c$, "setFollowingComplementScroll", \r
580 function (b) {\r
581 this.followingComplementScroll = b;\r
582 }, "~B");\r
583 Clazz.defineMethod (c$, "isFollowingComplementScroll", \r
584 function () {\r
585 return this.followingComplementScroll;\r
586 });\r
587 c$.$AlignmentPanel$1$ = function () {\r
588 Clazz.pu$h(self.c$);\r
589 c$ = Clazz.declareAnonymous (jalview.appletgui, "AlignmentPanel$1", java.awt.event.ComponentAdapter);\r
590 Clazz.overrideMethod (c$, "componentResized", \r
591 function (evt) {\r
592 this.b$["jalview.appletgui.AlignmentPanel"].setScrollValues (this.f$.av.getStartRes (), this.f$.av.getStartSeq ());\r
593 if (this.b$["jalview.appletgui.AlignmentPanel"].getSize ().height > 0 && this.b$["jalview.appletgui.AlignmentPanel"].annotationPanelHolder.getSize ().height > 0) {\r
594 this.b$["jalview.appletgui.AlignmentPanel"].validateAnnotationDimensions (false);\r
595 }this.b$["jalview.appletgui.AlignmentPanel"].repaint ();\r
596 }, "java.awt.event.ComponentEvent");\r
597 c$ = Clazz.p0p ();\r
598 };\r
599 c$.$AlignmentPanel$2$ = function () {\r
600 Clazz.pu$h(self.c$);\r
601 c$ = Clazz.declareAnonymous (jalview.appletgui, "AlignmentPanel$2", null, java.beans.PropertyChangeListener);\r
602 Clazz.overrideMethod (c$, "propertyChange", \r
603 function (evt) {\r
604 if (evt.getPropertyName ().equals ("alignment")) {\r
605 jalview.appletgui.PaintRefresher.Refresh (this.f$.ap, this.f$.av.getSequenceSetId (), true, true);\r
606 this.b$["jalview.appletgui.AlignmentPanel"].alignmentChanged ();\r
607 }}, "java.beans.PropertyChangeEvent");\r
608 c$ = Clazz.p0p ();\r
609 };\r
610 });\r