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