X-Git-Url: http://source.jalview.org/gitweb/?p=jalviewjs.git;a=blobdiff_plain;f=site%2Fj2s%2Fjalview%2Fappletgui%2FAlignmentPanel.js;h=678377880f7133a36c7100a3fce3b840a666638e;hp=f5102723a211fc08a1a1224fe3927ec20e3504cf;hb=b9b7a352eee79b7764c3b09c9d19663075061d8c;hpb=8ffd05b3abe52c0b6b79b011c0966361f82d5fe6 diff --git a/site/j2s/jalview/appletgui/AlignmentPanel.js b/site/j2s/jalview/appletgui/AlignmentPanel.js index f510272..6783778 100644 --- a/site/j2s/jalview/appletgui/AlignmentPanel.js +++ b/site/j2s/jalview/appletgui/AlignmentPanel.js @@ -1,610 +1,610 @@ -Clazz.declarePackage ("jalview.appletgui"); -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 () { -c$ = Clazz.decorateAsClass (function () { -this.av = null; -this.overviewPanel = null; -this.seqPanel = null; -this.idPanel = null; -this.idwidthAdjuster = null; -this.alignFrame = null; -this.scalePanel = null; -this.annotationPanel = null; -this.alabels = null; -this.fastPaint = true; -this.hextent = 0; -this.vextent = 0; -this.sequenceHolderPanel = null; -this.vscroll = null; -this.hscroll = null; -this.seqPanelHolder = null; -this.scalePanelHolder = null; -this.idPanelHolder = null; -this.idSpaceFillerPanel1 = null; -this.annotationSpaceFillerHolder = null; -this.hscrollFillerPanel = null; -this.annotationPanelHolder = null; -this.apvscroll = null; -this.followingComplementScroll = false; -Clazz.instantialize (this, arguments); -}, jalview.appletgui, "AlignmentPanel", awt2swing.Panel, [java.awt.event.AdjustmentListener, jalview.api.AlignmentViewPanel]); -Clazz.prepareFields (c$, function () { -this.sequenceHolderPanel = new awt2swing.Panel (); -this.vscroll = new awt2swing.Scrollbar (); -this.hscroll = new awt2swing.Scrollbar (); -this.seqPanelHolder = new awt2swing.Panel (); -this.scalePanelHolder = new awt2swing.Panel (); -this.idPanelHolder = new awt2swing.Panel (); -this.idSpaceFillerPanel1 = new awt2swing.Panel (); -this.annotationSpaceFillerHolder = new awt2swing.Panel (); -this.hscrollFillerPanel = new awt2swing.Panel (); -this.annotationPanelHolder = new awt2swing.Panel (); -this.apvscroll = new awt2swing.Scrollbar (); -}); -Clazz.overrideMethod (c$, "finalize", -function () { -this.alignFrame = null; -this.av = null; -this.seqPanel = null; -this.seqPanelHolder = null; -this.sequenceHolderPanel = null; -this.scalePanel = null; -this.scalePanelHolder = null; -this.annotationPanel = null; -this.annotationPanelHolder = null; -this.annotationSpaceFillerHolder = null; -}); -Clazz.makeConstructor (c$, -function (af, av) { -Clazz.superConstructor (this, jalview.appletgui.AlignmentPanel, []); -this.setName ("alignmentPanel"); -try { -this.jbInit (); -} catch (e) { -if (Clazz.exceptionOf (e, Exception)) { -e.printStackTrace (); -} else { -throw e; -} -} -this.alignFrame = af; -this.av = av; -this.seqPanel = new jalview.appletgui.SeqPanel (av, this); -this.idPanel = new jalview.appletgui.IdPanel (av, this); -this.scalePanel = new jalview.appletgui.ScalePanel (av, this); -this.idwidthAdjuster = new jalview.appletgui.IdwidthAdjuster (this); -this.annotationPanel = new jalview.appletgui.AnnotationPanel (this); -this.annotationPanelHolder.add (this.annotationPanel, "Center"); -this.sequenceHolderPanel.add (this.annotationPanelHolder, "South"); -this.alabels = new jalview.appletgui.AnnotationLabels (this); -this.setAnnotationVisible (av.isShowAnnotation ()); -this.idPanelHolder.add (this.idPanel, "Center"); -this.idSpaceFillerPanel1.add (this.idwidthAdjuster, "Center"); -this.annotationSpaceFillerHolder.add (this.alabels, "Center"); -this.scalePanelHolder.add (this.scalePanel, "Center"); -this.seqPanelHolder.add (this.seqPanel, "Center"); -this.fontChanged (); -this.setScrollValues (0, 0); -this.apvscroll.addAdjustmentListener (this); -this.hscroll.addAdjustmentListener (this); -this.vscroll.addAdjustmentListener (this); -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)))); -var d = this.calculateIdWidth (); -this.idPanel.idCanvas.setSize (d); -this.hscrollFillerPanel.setSize (d.width, this.annotationPanel.getSize ().height); -this.idPanel.idCanvas.setSize (d.width, this.seqPanel.seqCanvas.getSize ().height); -this.annotationSpaceFillerHolder.setSize (d.width, this.annotationPanel.getSize ().height); -this.alabels.setSize (d.width, this.annotationPanel.getSize ().height); -var ap = this; -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)))); -}, "jalview.appletgui.AlignFrame,jalview.appletgui.AlignViewport"); -Clazz.overrideMethod (c$, "getAlignViewport", -function () { -return this.av; -}); -Clazz.defineMethod (c$, "getSequenceRenderer", -function () { -return this.seqPanel.seqCanvas.sr; -}); -Clazz.overrideMethod (c$, "getFeatureRenderer", -function () { -return this.seqPanel.seqCanvas.fr; -}); -Clazz.overrideMethod (c$, "cloneFeatureRenderer", -function () { -var nfr = new jalview.appletgui.FeatureRenderer (this.av); -nfr.transferSettings (this.seqPanel.seqCanvas.fr); -return nfr; -}); -Clazz.defineMethod (c$, "alignmentChanged", -function () { -this.av.alignmentChanged (this); -if (this.overviewPanel != null) { -this.overviewPanel.updateOverviewImage (); -}this.alignFrame.updateEditMenuBar (); -this.repaint (); -}); -Clazz.defineMethod (c$, "fontChanged", -function () { -this.idPanel.idCanvas.image = null; -var fm = this.getFontMetrics (this.av.getFont ()); -this.scalePanel.setSize ( new java.awt.Dimension (10, this.av.getCharHeight () + fm.getDescent ())); -this.idwidthAdjuster.setSize ( new java.awt.Dimension (10, this.av.getCharHeight () + fm.getDescent ())); -this.av.updateSequenceIdColours (); -this.annotationPanel.image = null; -var ap = this.annotationPanel.adjustPanelHeight (false); -var d = this.calculateIdWidth (); -d.setSize (d.width + 4, this.seqPanel.seqCanvas.getSize ().height); -this.alabels.setSize (d.width + 4, ap); -this.idPanel.idCanvas.setSize (d); -this.hscrollFillerPanel.setSize (d); -this.validateAnnotationDimensions (false); -this.annotationPanel.repaint (); -this.validate (); -this.repaint (); -if (this.overviewPanel != null) { -this.overviewPanel.updateOverviewImage (); -}}); -Clazz.defineMethod (c$, "setIdWidth", -function (w, h) { -this.idPanel.idCanvas.setSize (w, h); -this.idPanelHolder.setSize (w, this.idPanelHolder.getSize ().height); -this.annotationSpaceFillerHolder.setSize (w, this.annotationSpaceFillerHolder.getSize ().height); -this.alabels.setSize (w, this.alabels.getSize ().height); -this.validate (); -}, "~N,~N"); -Clazz.defineMethod (c$, "calculateIdWidth", -function () { -if (this.av.nullFrame == null) { -this.av.nullFrame = new awt2swing.Frame (); -this.av.nullFrame.addNotify (); -this.av.nullFrame.setFont (this.av.font); -}var g = this.av.nullFrame.getGraphics (); -var fm = g.getFontMetrics (this.av.font); -var al = this.av.getAlignment (); -var i = 0; -var idWidth = 0; -var id; -while (i < al.getHeight () && al.getSequenceAt (i) != null) { -var s = al.getSequenceAt (i); -id = s.getDisplayId (this.av.getShowJVSuffix ()); -if (fm.stringWidth (id) > idWidth) { -idWidth = fm.stringWidth (id); -}i++; -} -i = 0; -if (al.getAlignmentAnnotation () != null) { -fm = g.getFontMetrics (this.av.nullFrame.getFont ()); -while (i < al.getAlignmentAnnotation ().length) { -var label = al.getAlignmentAnnotation ()[i].label; -if (fm.stringWidth (label) > idWidth) { -idWidth = fm.stringWidth (label); -}i++; -} -}return new java.awt.Dimension (idWidth, this.idPanel.idCanvas.getSize ().height); -}); -Clazz.defineMethod (c$, "highlightSearchResults", -function (results) { -this.scrollToPosition (results); -this.seqPanel.seqCanvas.highlightSearchResults (results); -}, "jalview.datamodel.SearchResults"); -Clazz.defineMethod (c$, "scrollToPosition", -function (results) { -return this.scrollToPosition (results, true); -}, "jalview.datamodel.SearchResults"); -Clazz.defineMethod (c$, "scrollToPosition", -function (results, redrawOverview) { -return this.scrollToPosition (results, redrawOverview, false); -}, "jalview.datamodel.SearchResults,~B"); -Clazz.defineMethod (c$, "scrollToPosition", -function (results, redrawOverview, centre) { -if (results != null && results.getSize () > 0) { -var alignment = this.av.getAlignment (); -var seqIndex = alignment.findIndex (results); -if (seqIndex == -1) { -return false; -}var seq = alignment.getSequenceAt (seqIndex); -var r = results.getResults (seq, 0, alignment.getWidth ()); -if (r == null) { -if (jalview.bin.JalviewLite.debug) { -System.out.println ("DEBUG: scroll didn't happen - results not within alignment : " + seq.getStart () + "," + seq.getEnd ()); -}return false; -}if (jalview.bin.JalviewLite.debug) { -}var start = r[0]; -var end = r[1]; -if (centre) { -var offset = Clazz.doubleToInt ((this.av.getEndRes () - this.av.getStartRes () + 1) / 2) - 1; -start = Math.max (start - offset, 0); -end = Math.min (end + offset, seq.getEnd () - 1); -}if (start < 0) { -return false; -}if (end == seq.getEnd ()) { -return false; -}return this.scrollTo (start, end, seqIndex, false, redrawOverview); -}return true; -}, "jalview.datamodel.SearchResults,~B,~B"); -Clazz.defineMethod (c$, "scrollTo", -function (ostart, end, seqIndex, scrollToNearest, redrawOverview) { -var startv; -var endv; -var starts; -var ends; -var width; -var start = -1; -if (this.av.hasHiddenColumns ()) { -start = this.av.getColumnSelection ().findColumnPosition (ostart); -end = this.av.getColumnSelection ().findColumnPosition (end); -if (start == end) { -if (!scrollToNearest && !this.av.getColumnSelection ().isVisible (ostart)) { -return false; -}}} else { -start = ostart; -}if (!this.av.getWrapAlignment ()) { -if ((startv = this.av.getStartRes ()) >= start) { -this.setScrollValues (start - 1, seqIndex); -} else if ((endv = this.av.getEndRes ()) <= end) { -this.setScrollValues (startv + 1 + end - endv, seqIndex); -} else if ((starts = this.av.getStartSeq ()) > seqIndex) { -this.setScrollValues (this.av.getStartRes (), seqIndex); -} else if ((ends = this.av.getEndSeq ()) <= seqIndex) { -this.setScrollValues (this.av.getStartRes (), starts + seqIndex - ends + 1); -}} else { -this.scrollToWrappedVisible (start); -}if (redrawOverview && this.overviewPanel != null) { -this.overviewPanel.setBoxPosition (); -}this.paintAlignment (redrawOverview); -return true; -}, "~N,~N,~N,~B,~B"); -Clazz.defineMethod (c$, "scrollToWrappedVisible", -function (res) { -var cwidth = this.seqPanel.seqCanvas.getWrappedCanvasWidth (this.seqPanel.seqCanvas.getSize ().width); -if (res <= this.av.getStartRes () || res >= (this.av.getStartRes () + cwidth)) { -this.vscroll.setValue (Clazz.doubleToInt (res / cwidth)); -this.av.startRes = this.vscroll.getValue () * cwidth; -}}, "~N"); -Clazz.defineMethod (c$, "getOverviewPanel", -function () { -return this.overviewPanel; -}); -Clazz.defineMethod (c$, "setOverviewPanel", -function (op) { -this.overviewPanel = op; -}, "jalview.appletgui.OverviewPanel"); -Clazz.defineMethod (c$, "setAnnotationVisible", -function (b) { -if (!this.av.getWrapAlignment ()) { -this.annotationSpaceFillerHolder.setVisible (b); -this.annotationPanelHolder.setVisible (b); -} else { -this.annotationSpaceFillerHolder.setVisible (false); -this.annotationPanelHolder.setVisible (false); -}this.validate (); -this.repaint (); -}, "~B"); -Clazz.overrideMethod (c$, "adjustAnnotationHeight", -function () { -if (this.alignFrame.getSize ().height == 0) { -System.out.println ("adjustAnnotationHeight frame size zero NEEDS FIXING"); -}this.fontChanged (); -this.validateAnnotationDimensions (true); -this.apvscroll.addNotify (); -this.hscroll.addNotify (); -this.validate (); -this.paintAlignment (true); -}); -Clazz.defineMethod (c$, "validateAnnotationDimensions", -function (adjustPanelHeight) { -var rowHeight = this.av.getCharHeight (); -var alignmentHeight = rowHeight * this.av.getAlignment ().getHeight (); -var annotationHeight = this.av.calcPanelHeight (); -var mheight = annotationHeight; -var d = this.sequenceHolderPanel.getSize (); -var availableHeight = d.height - this.scalePanelHolder.getHeight (); -if (adjustPanelHeight) { -if (annotationHeight + alignmentHeight > availableHeight) { -annotationHeight = Math.min (annotationHeight, availableHeight - 2 * rowHeight); -}} else { -annotationHeight = this.annotationPanelHolder.getSize ().height; -}if (availableHeight - annotationHeight < 5) { -annotationHeight = availableHeight; -}this.annotationPanel.setSize ( new java.awt.Dimension (d.width, annotationHeight)); -this.annotationPanelHolder.setSize ( new java.awt.Dimension (d.width, annotationHeight)); -this.seqPanel.seqCanvas.setSize (d.width, this.seqPanel.seqCanvas.getSize ().height); -var e = this.idPanel.getSize (); -this.alabels.setSize ( new java.awt.Dimension (e.width, annotationHeight)); -this.annotationSpaceFillerHolder.setSize ( new java.awt.Dimension (e.width, annotationHeight)); -var s = this.apvscroll.getValue (); -if (s > mheight - annotationHeight) { -s = 0; -}this.apvscroll.setValues (s, annotationHeight, 0, mheight); -this.annotationPanel.setScrollOffset (this.apvscroll.getValue (), false); -this.alabels.setScrollOffset (this.apvscroll.getValue (), false); -}, "~B"); -Clazz.defineMethod (c$, "setWrapAlignment", -function (wrap) { -this.av.startSeq = 0; -this.av.startRes = 0; -this.scalePanelHolder.setVisible (!wrap); -this.hscroll.setVisible (!wrap); -this.idwidthAdjuster.setVisible (!wrap); -if (wrap) { -this.annotationPanelHolder.setVisible (false); -this.annotationSpaceFillerHolder.setVisible (false); -} else if (this.av.isShowAnnotation ()) { -this.annotationPanelHolder.setVisible (true); -this.annotationSpaceFillerHolder.setVisible (true); -}this.idSpaceFillerPanel1.setVisible (!wrap); -this.fontChanged (); -this.validate (); -this.sequenceHolderPanel.validate (); -this.repaint (); -}, "~B"); -Clazz.defineMethod (c$, "scrollUp", -function (up) { -if (up) { -if (this.vscroll.getValue () < 1) { -return false; -}this.setScrollValues (this.hscroll.getValue (), this.vscroll.getValue () - 1); -} else { -if (this.vextent + this.vscroll.getValue () >= this.av.getAlignment ().getHeight ()) { -return false; -}this.setScrollValues (this.hscroll.getValue (), this.vscroll.getValue () + 1); -}this.repaint (); -return true; -}, "~B"); -Clazz.defineMethod (c$, "scrollRight", -function (right) { -if (!right) { -if (this.hscroll.getValue () < 1) { -return false; -}this.setScrollValues (this.hscroll.getValue () - 1, this.vscroll.getValue ()); -} else { -if (this.hextent + this.hscroll.getValue () >= this.av.getAlignment ().getWidth ()) { -return false; -}this.setScrollValues (this.hscroll.getValue () + 1, this.vscroll.getValue ()); -}this.repaint (); -return true; -}, "~B"); -Clazz.defineMethod (c$, "setScrollValues", -function (x, y) { -var width = this.av.getAlignment ().getWidth (); -var height = this.av.getAlignment ().getHeight (); -if (this.av.hasHiddenColumns ()) { -width = this.av.getColumnSelection ().findColumnPosition (width); -}if (x < 0) { -x = 0; -};this.hextent = Clazz.doubleToInt (this.seqPanel.seqCanvas.getSize ().width / this.av.getCharWidth ()); -this.vextent = Clazz.doubleToInt (this.seqPanel.seqCanvas.getSize ().height / this.av.getCharHeight ()); -if (this.hextent > width) { -this.hextent = width; -}if (this.vextent > height) { -this.vextent = height; -}if ((this.hextent + x) > width) { -System.err.println ("hextent was " + this.hextent + " and x was " + x); -x = width - this.hextent; -}if ((this.vextent + y) > height) { -y = height - this.vextent; -}if (y < 0) { -y = 0; -}if (x < 0) { -System.err.println ("x was " + x); -x = 0; -}this.av.setStartSeq (y); -var endSeq = y + this.vextent; -if (endSeq > this.av.getAlignment ().getHeight ()) { -endSeq = this.av.getAlignment ().getHeight (); -}this.av.setEndSeq (endSeq); -this.av.setStartRes (x); -this.av.setEndRes ((x + (Clazz.doubleToInt (this.seqPanel.seqCanvas.getSize ().width / this.av.getCharWidth ()))) - 1); -this.hscroll.setValues (x, this.hextent, 0, width); -this.vscroll.setValues (y, this.vextent, 0, height); -if (this.overviewPanel != null) { -this.overviewPanel.setBoxPosition (); -}this.sendViewPosition (); -}, "~N,~N"); -Clazz.overrideMethod (c$, "adjustmentValueChanged", -function (evt) { -if (this.annotationPanel == null) return; -var oldX = this.av.getStartRes (); -var oldY = this.av.getStartSeq (); -if (evt == null || evt.getSource () === this.apvscroll) { -this.annotationPanel.setScrollOffset (this.apvscroll.getValue (), false); -this.alabels.setScrollOffset (this.apvscroll.getValue (), false); -}if (evt == null || evt.getSource () === this.hscroll) { -var x = this.hscroll.getValue (); -this.av.setStartRes (x); -this.av.setEndRes (x + Clazz.doubleToInt (this.seqPanel.seqCanvas.getSize ().width / this.av.getCharWidth ()) - 1); -}if (evt == null || evt.getSource () === this.vscroll) { -var offy = this.vscroll.getValue (); -if (this.av.getWrapAlignment ()) { -var rowSize = this.seqPanel.seqCanvas.getWrappedCanvasWidth (this.seqPanel.seqCanvas.getSize ().width); -this.av.setStartRes (this.vscroll.getValue () * rowSize); -this.av.setEndRes ((this.vscroll.getValue () + 1) * rowSize); -} else { -this.av.setStartSeq (offy); -this.av.setEndSeq (offy + Clazz.doubleToInt (this.seqPanel.seqCanvas.getSize ().height / this.av.getCharHeight ())); -}}if (this.overviewPanel != null) { -this.overviewPanel.setBoxPosition (); -}var scrollX = this.av.startRes - oldX; -var scrollY = this.av.startSeq - oldY; -if (this.av.getWrapAlignment () || !this.fastPaint || this.av.MAC) { -this.repaint (); -} else { -if (scrollX > this.av.endRes - this.av.startRes) { -scrollX = this.av.endRes - this.av.startRes; -} else if (scrollX < this.av.startRes - this.av.endRes) { -scrollX = this.av.startRes - this.av.endRes; -}this.idPanel.idCanvas.fastPaint (scrollY); -this.seqPanel.seqCanvas.fastPaint (scrollX, scrollY); -this.scalePanel.repaint (); -if (this.av.isShowAnnotation ()) { -this.annotationPanel.fastPaint (this.av.getStartRes () - oldX); -}}this.sendViewPosition (); -if (this.isFollowingComplementScroll ()) { -this.setFollowingComplementScroll (false); -} else { -var ap = this.getComplementPanel (); -this.av.scrollComplementaryAlignment (ap); -}}, "java.awt.event.AdjustmentEvent"); -Clazz.defineMethod (c$, "getComplementPanel", - function () { -var ap = null; -if (this.alignFrame != null) { -var sf = this.alignFrame.getSplitFrame (); -if (sf != null) { -var other = sf.getComplement (this.alignFrame); -if (other != null) { -ap = other.alignPanel; -}}}return ap; -}); -Clazz.defineMethod (c$, "scrollToCentre", -function (sr, seqOffset) { -var mappedTo = sr.getResultSequence (0); -var seqs = this.av.getAlignment ().getSequences (); -var sequenceIndex = 0; -var matched = false; -for (var seq, $seq = seqs.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) { -if (mappedTo === seq.getDatasetSequence ()) { -matched = true; -break; -}sequenceIndex++; -} -if (!matched) { -return; -}sequenceIndex = Math.max (0, sequenceIndex - seqOffset); -sr.getResults ().get (0).setSequence (this.av.getAlignment ().getSequenceAt (sequenceIndex)); -this.setFollowingComplementScroll (true); -this.scrollToPosition (sr, true, true); -}, "jalview.datamodel.SearchResults,~N"); -Clazz.defineMethod (c$, "sendViewPosition", - function () { -jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.av.applet).sendViewPosition (this, this.av.startRes, this.av.endRes, this.av.startSeq, this.av.endSeq); -}); -Clazz.overrideMethod (c$, "paintAlignment", -function (updateOverview) { -var sorter = new jalview.analysis.AnnotationSorter (this.getAlignment (), this.av.isShowAutocalculatedAbove ()); -sorter.sort (this.getAlignment ().getAlignmentAnnotation (), this.av.getSortAnnotationsBy ()); -this.repaint (); -if (updateOverview) { -jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.av.applet).sequenceColoursChanged (this); -if (this.overviewPanel != null) { -this.overviewPanel.updateOverviewImage (); -}}}, "~B"); -Clazz.overrideMethod (c$, "paintComponent", -function (g) { -System.out.println ("alignframe paintcomp"); -this.invalidate (); -var d = this.idPanel.idCanvas.getSize (); -var canvasHeight = this.seqPanel.seqCanvas.getSize ().height; -if (canvasHeight != d.height) { -this.idPanel.idCanvas.setSize (d.width, canvasHeight); -}if (this.av.getWrapAlignment ()) { -var maxwidth = this.av.getAlignment ().getWidth (); -if (this.av.hasHiddenColumns ()) { -maxwidth = this.av.getColumnSelection ().findColumnPosition (maxwidth) - 1; -}var canvasWidth = this.seqPanel.seqCanvas.getWrappedCanvasWidth (this.seqPanel.seqCanvas.getSize ().width); -if (canvasWidth > 0) { -var max = Clazz.doubleToInt (maxwidth / canvasWidth); -this.vscroll.setMaximum (1 + max); -this.vscroll.setUnitIncrement (1); -this.vscroll.setVisibleAmount (1); -}} else { -this.setScrollValues (this.av.getStartRes (), this.av.getStartSeq ()); -}}, "java.awt.Graphics"); -Clazz.defineMethod (c$, "jbInit", - function () { -this.setLayout ( new java.awt.BorderLayout ()); -this.sequenceHolderPanel.setLayout ( new java.awt.BorderLayout ()); -this.seqPanelHolder.setLayout ( new java.awt.BorderLayout ()); -this.scalePanelHolder.setBackground (java.awt.Color.white); -this.scalePanelHolder.setLayout ( new java.awt.BorderLayout ()); -this.idPanelHolder.setLayout ( new java.awt.BorderLayout ()); -this.idSpaceFillerPanel1.setBackground (java.awt.Color.white); -this.idSpaceFillerPanel1.setLayout ( new java.awt.BorderLayout ()); -this.annotationSpaceFillerHolder.setBackground (java.awt.Color.white); -this.annotationSpaceFillerHolder.setLayout ( new java.awt.BorderLayout ()); -this.hscroll.setOrientation (0); -var hscrollHolder = new awt2swing.Panel (); -hscrollHolder.setLayout ( new java.awt.BorderLayout ()); -this.hscrollFillerPanel.setBackground (java.awt.Color.white); -this.apvscroll.setOrientation (1); -this.apvscroll.setVisible (true); -this.apvscroll.addAdjustmentListener (this); -this.annotationPanelHolder.setBackground (java.awt.Color.white); -this.annotationPanelHolder.setLayout ( new java.awt.BorderLayout ()); -this.annotationPanelHolder.add (this.apvscroll, "East"); -hscrollHolder.setBackground (java.awt.Color.white); -this.seqPanelHolder.setBackground (java.awt.Color.white); -this.idPanelHolder.setBackground (java.awt.Color.white); -this.sequenceHolderPanel.add (this.scalePanelHolder, "North"); -this.sequenceHolderPanel.add (this.seqPanelHolder, "Center"); -this.seqPanelHolder.add (this.vscroll, "East"); -this.add (this.idPanelHolder, "West"); -this.idPanelHolder.add (this.idSpaceFillerPanel1, "North"); -this.idPanelHolder.add (this.annotationSpaceFillerHolder, "South"); -this.add (hscrollHolder, "South"); -hscrollHolder.add (this.hscroll, "Center"); -hscrollHolder.add (this.hscrollFillerPanel, "West"); -this.add (this.sequenceHolderPanel, "Center"); -}); -Clazz.defineMethod (c$, "updateAnnotation", -function () { -this.updateAnnotation (false); -}); -Clazz.defineMethod (c$, "updateAnnotation", -function (applyGlobalSettings) { -this.updateAnnotation (applyGlobalSettings, false); -}, "~B"); -Clazz.defineMethod (c$, "updateAnnotation", -function (applyGlobalSettings, preserveNewGroupSettings) { -this.av.updateGroupAnnotationSettings (applyGlobalSettings, preserveNewGroupSettings); -this.adjustAnnotationHeight (); -}, "~B,~B"); -Clazz.overrideMethod (c$, "getAlignment", -function () { -return this.av.getAlignment (); -}); -Clazz.overrideMethod (c$, "getViewName", -function () { -return this.getName (); -}); -Clazz.overrideMethod (c$, "getStructureSelectionManager", -function () { -return jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.av.applet); -}); -Clazz.overrideMethod (c$, "raiseOOMWarning", -function (string, error) { -System.err.println ("Out of memory whilst '" + string + "'"); -error.printStackTrace (); -}, "~S,OutOfMemoryError"); -Clazz.defineMethod (c$, "setFollowingComplementScroll", -function (b) { -this.followingComplementScroll = b; -}, "~B"); -Clazz.defineMethod (c$, "isFollowingComplementScroll", -function () { -return this.followingComplementScroll; -}); -c$.$AlignmentPanel$1$ = function () { -Clazz.pu$h(self.c$); -c$ = Clazz.declareAnonymous (jalview.appletgui, "AlignmentPanel$1", java.awt.event.ComponentAdapter); -Clazz.overrideMethod (c$, "componentResized", -function (evt) { -this.b$["jalview.appletgui.AlignmentPanel"].setScrollValues (this.f$.av.getStartRes (), this.f$.av.getStartSeq ()); -if (this.b$["jalview.appletgui.AlignmentPanel"].getSize ().height > 0 && this.b$["jalview.appletgui.AlignmentPanel"].annotationPanelHolder.getSize ().height > 0) { -this.b$["jalview.appletgui.AlignmentPanel"].validateAnnotationDimensions (false); -}this.b$["jalview.appletgui.AlignmentPanel"].repaint (); -}, "java.awt.event.ComponentEvent"); -c$ = Clazz.p0p (); -}; -c$.$AlignmentPanel$2$ = function () { -Clazz.pu$h(self.c$); -c$ = Clazz.declareAnonymous (jalview.appletgui, "AlignmentPanel$2", null, java.beans.PropertyChangeListener); -Clazz.overrideMethod (c$, "propertyChange", -function (evt) { -if (evt.getPropertyName ().equals ("alignment")) { -jalview.appletgui.PaintRefresher.Refresh (this.f$.ap, this.f$.av.getSequenceSetId (), true, true); -this.b$["jalview.appletgui.AlignmentPanel"].alignmentChanged (); -}}, "java.beans.PropertyChangeEvent"); -c$ = Clazz.p0p (); -}; -}); +Clazz.declarePackage ("jalview.appletgui"); +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 () { +c$ = Clazz.decorateAsClass (function () { +this.av = null; +this.overviewPanel = null; +this.seqPanel = null; +this.idPanel = null; +this.idwidthAdjuster = null; +this.alignFrame = null; +this.scalePanel = null; +this.annotationPanel = null; +this.alabels = null; +this.fastPaint = true; +this.hextent = 0; +this.vextent = 0; +this.sequenceHolderPanel = null; +this.vscroll = null; +this.hscroll = null; +this.seqPanelHolder = null; +this.scalePanelHolder = null; +this.idPanelHolder = null; +this.idSpaceFillerPanel1 = null; +this.annotationSpaceFillerHolder = null; +this.hscrollFillerPanel = null; +this.annotationPanelHolder = null; +this.apvscroll = null; +this.followingComplementScroll = false; +Clazz.instantialize (this, arguments); +}, jalview.appletgui, "AlignmentPanel", awt2swing.Panel, [java.awt.event.AdjustmentListener, jalview.api.AlignmentViewPanel]); +Clazz.prepareFields (c$, function () { +this.sequenceHolderPanel = new awt2swing.Panel (); +this.vscroll = new awt2swing.Scrollbar (); +this.hscroll = new awt2swing.Scrollbar (); +this.seqPanelHolder = new awt2swing.Panel (); +this.scalePanelHolder = new awt2swing.Panel (); +this.idPanelHolder = new awt2swing.Panel (); +this.idSpaceFillerPanel1 = new awt2swing.Panel (); +this.annotationSpaceFillerHolder = new awt2swing.Panel (); +this.hscrollFillerPanel = new awt2swing.Panel (); +this.annotationPanelHolder = new awt2swing.Panel (); +this.apvscroll = new awt2swing.Scrollbar (); +}); +Clazz.overrideMethod (c$, "finalize", +function () { +this.alignFrame = null; +this.av = null; +this.seqPanel = null; +this.seqPanelHolder = null; +this.sequenceHolderPanel = null; +this.scalePanel = null; +this.scalePanelHolder = null; +this.annotationPanel = null; +this.annotationPanelHolder = null; +this.annotationSpaceFillerHolder = null; +}); +Clazz.makeConstructor (c$, +function (af, av) { +Clazz.superConstructor (this, jalview.appletgui.AlignmentPanel, []); +this.setName ("alignmentPanel"); +try { +this.jbInit (); +} catch (e) { +if (Clazz.exceptionOf (e, Exception)) { +e.printStackTrace (); +} else { +throw e; +} +} +this.alignFrame = af; +this.av = av; +this.seqPanel = new jalview.appletgui.SeqPanel (av, this); +this.idPanel = new jalview.appletgui.IdPanel (av, this); +this.scalePanel = new jalview.appletgui.ScalePanel (av, this); +this.idwidthAdjuster = new jalview.appletgui.IdwidthAdjuster (this); +this.annotationPanel = new jalview.appletgui.AnnotationPanel (this); +this.annotationPanelHolder.add (this.annotationPanel, "Center"); +this.sequenceHolderPanel.add (this.annotationPanelHolder, "South"); +this.alabels = new jalview.appletgui.AnnotationLabels (this); +this.setAnnotationVisible (av.isShowAnnotation ()); +this.idPanelHolder.add (this.idPanel, "Center"); +this.idSpaceFillerPanel1.add (this.idwidthAdjuster, "Center"); +this.annotationSpaceFillerHolder.add (this.alabels, "Center"); +this.scalePanelHolder.add (this.scalePanel, "Center"); +this.seqPanelHolder.add (this.seqPanel, "Center"); +this.fontChanged (); +this.setScrollValues (0, 0); +this.apvscroll.addAdjustmentListener (this); +this.hscroll.addAdjustmentListener (this); +this.vscroll.addAdjustmentListener (this); +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)))); +var d = this.calculateIdWidth (); +this.idPanel.idCanvas.setSize (d); +this.hscrollFillerPanel.setSize (d.width, this.annotationPanel.getSize ().height); +this.idPanel.idCanvas.setSize (d.width, this.seqPanel.seqCanvas.getSize ().height); +this.annotationSpaceFillerHolder.setSize (d.width, this.annotationPanel.getSize ().height); +this.alabels.setSize (d.width, this.annotationPanel.getSize ().height); +var ap = this; +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)))); +}, "jalview.appletgui.AlignFrame,jalview.appletgui.AlignViewport"); +Clazz.overrideMethod (c$, "getAlignViewport", +function () { +return this.av; +}); +Clazz.defineMethod (c$, "getSequenceRenderer", +function () { +return this.seqPanel.seqCanvas.sr; +}); +Clazz.overrideMethod (c$, "getFeatureRenderer", +function () { +return this.seqPanel.seqCanvas.fr; +}); +Clazz.overrideMethod (c$, "cloneFeatureRenderer", +function () { +var nfr = new jalview.appletgui.FeatureRenderer (this.av); +nfr.transferSettings (this.seqPanel.seqCanvas.fr); +return nfr; +}); +Clazz.defineMethod (c$, "alignmentChanged", +function () { +this.av.alignmentChanged (this); +if (this.overviewPanel != null) { +this.overviewPanel.updateOverviewImage (); +}this.alignFrame.updateEditMenuBar (); +this.repaint (); +}); +Clazz.defineMethod (c$, "fontChanged", +function () { +this.idPanel.idCanvas.image = null; +var fm = this.getFontMetrics (this.av.getFont ()); +this.scalePanel.setSize ( new java.awt.Dimension (10, this.av.getCharHeight () + fm.getDescent ())); +this.idwidthAdjuster.setSize ( new java.awt.Dimension (10, this.av.getCharHeight () + fm.getDescent ())); +this.av.updateSequenceIdColours (); +this.annotationPanel.image = null; +var ap = this.annotationPanel.adjustPanelHeight (false); +var d = this.calculateIdWidth (); +d.setSize (d.width + 4, this.seqPanel.seqCanvas.getSize ().height); +this.alabels.setSize (d.width + 4, ap); +this.idPanel.idCanvas.setSize (d); +this.hscrollFillerPanel.setSize (d); +this.validateAnnotationDimensions (false); +this.annotationPanel.repaint (); +this.validate (); +this.repaint (); +if (this.overviewPanel != null) { +this.overviewPanel.updateOverviewImage (); +}}); +Clazz.defineMethod (c$, "setIdWidth", +function (w, h) { +this.idPanel.idCanvas.setSize (w, h); +this.idPanelHolder.setSize (w, this.idPanelHolder.getSize ().height); +this.annotationSpaceFillerHolder.setSize (w, this.annotationSpaceFillerHolder.getSize ().height); +this.alabels.setSize (w, this.alabels.getSize ().height); +this.validate (); +}, "~N,~N"); +Clazz.defineMethod (c$, "calculateIdWidth", +function () { +if (this.av.nullFrame == null) { +this.av.nullFrame = new awt2swing.Frame (); +this.av.nullFrame.addNotify (); +this.av.nullFrame.setFont (this.av.font); +}var g = this.av.nullFrame.getGraphics (); +var fm = g.getFontMetrics (this.av.font); +var al = this.av.getAlignment (); +var i = 0; +var idWidth = 0; +var id; +while (i < al.getHeight () && al.getSequenceAt (i) != null) { +var s = al.getSequenceAt (i); +id = s.getDisplayId (this.av.getShowJVSuffix ()); +if (fm.stringWidth (id) > idWidth) { +idWidth = fm.stringWidth (id); +}i++; +} +i = 0; +if (al.getAlignmentAnnotation () != null) { +fm = g.getFontMetrics (this.av.nullFrame.getFont ()); +while (i < al.getAlignmentAnnotation ().length) { +var label = al.getAlignmentAnnotation ()[i].label; +if (fm.stringWidth (label) > idWidth) { +idWidth = fm.stringWidth (label); +}i++; +} +}return new java.awt.Dimension (idWidth, this.idPanel.idCanvas.getSize ().height); +}); +Clazz.defineMethod (c$, "highlightSearchResults", +function (results) { +this.scrollToPosition (results); +this.seqPanel.seqCanvas.highlightSearchResults (results); +}, "jalview.datamodel.SearchResults"); +Clazz.defineMethod (c$, "scrollToPosition", +function (results) { +return this.scrollToPosition (results, true); +}, "jalview.datamodel.SearchResults"); +Clazz.defineMethod (c$, "scrollToPosition", +function (results, redrawOverview) { +return this.scrollToPosition (results, redrawOverview, false); +}, "jalview.datamodel.SearchResults,~B"); +Clazz.defineMethod (c$, "scrollToPosition", +function (results, redrawOverview, centre) { +if (results != null && results.getSize () > 0) { +var alignment = this.av.getAlignment (); +var seqIndex = alignment.findIndex (results); +if (seqIndex == -1) { +return false; +}var seq = alignment.getSequenceAt (seqIndex); +var r = results.getResults (seq, 0, alignment.getWidth ()); +if (r == null) { +if (jalview.bin.JalviewLite.debug) { +System.out.println ("DEBUG: scroll didn't happen - results not within alignment : " + seq.getStart () + "," + seq.getEnd ()); +}return false; +}if (jalview.bin.JalviewLite.debug) { +}var start = r[0]; +var end = r[1]; +if (centre) { +var offset = Clazz.doubleToInt ((this.av.getEndRes () - this.av.getStartRes () + 1) / 2) - 1; +start = Math.max (start - offset, 0); +end = Math.min (end + offset, seq.getEnd () - 1); +}if (start < 0) { +return false; +}if (end == seq.getEnd ()) { +return false; +}return this.scrollTo (start, end, seqIndex, false, redrawOverview); +}return true; +}, "jalview.datamodel.SearchResults,~B,~B"); +Clazz.defineMethod (c$, "scrollTo", +function (ostart, end, seqIndex, scrollToNearest, redrawOverview) { +var startv; +var endv; +var starts; +var ends; +var width; +var start = -1; +if (this.av.hasHiddenColumns ()) { +start = this.av.getColumnSelection ().findColumnPosition (ostart); +end = this.av.getColumnSelection ().findColumnPosition (end); +if (start == end) { +if (!scrollToNearest && !this.av.getColumnSelection ().isVisible (ostart)) { +return false; +}}} else { +start = ostart; +}if (!this.av.getWrapAlignment ()) { +if ((startv = this.av.getStartRes ()) >= start) { +this.setScrollValues (start - 1, seqIndex); +} else if ((endv = this.av.getEndRes ()) <= end) { +this.setScrollValues (startv + 1 + end - endv, seqIndex); +} else if ((starts = this.av.getStartSeq ()) > seqIndex) { +this.setScrollValues (this.av.getStartRes (), seqIndex); +} else if ((ends = this.av.getEndSeq ()) <= seqIndex) { +this.setScrollValues (this.av.getStartRes (), starts + seqIndex - ends + 1); +}} else { +this.scrollToWrappedVisible (start); +}if (redrawOverview && this.overviewPanel != null) { +this.overviewPanel.setBoxPosition (); +}this.paintAlignment (redrawOverview); +return true; +}, "~N,~N,~N,~B,~B"); +Clazz.defineMethod (c$, "scrollToWrappedVisible", +function (res) { +var cwidth = this.seqPanel.seqCanvas.getWrappedCanvasWidth (this.seqPanel.seqCanvas.getSize ().width); +if (res <= this.av.getStartRes () || res >= (this.av.getStartRes () + cwidth)) { +this.vscroll.setValue (Clazz.doubleToInt (res / cwidth)); +this.av.startRes = this.vscroll.getValue () * cwidth; +}}, "~N"); +Clazz.defineMethod (c$, "getOverviewPanel", +function () { +return this.overviewPanel; +}); +Clazz.defineMethod (c$, "setOverviewPanel", +function (op) { +this.overviewPanel = op; +}, "jalview.appletgui.OverviewPanel"); +Clazz.defineMethod (c$, "setAnnotationVisible", +function (b) { +if (!this.av.getWrapAlignment ()) { +this.annotationSpaceFillerHolder.setVisible (b); +this.annotationPanelHolder.setVisible (b); +} else { +this.annotationSpaceFillerHolder.setVisible (false); +this.annotationPanelHolder.setVisible (false); +}this.validate (); +this.repaint (); +}, "~B"); +Clazz.overrideMethod (c$, "adjustAnnotationHeight", +function () { +if (this.alignFrame.getSize ().height == 0) { +System.out.println ("adjustAnnotationHeight frame size zero NEEDS FIXING"); +}this.fontChanged (); +this.validateAnnotationDimensions (true); +this.apvscroll.addNotify (); +this.hscroll.addNotify (); +this.validate (); +this.paintAlignment (true); +}); +Clazz.defineMethod (c$, "validateAnnotationDimensions", +function (adjustPanelHeight) { +var rowHeight = this.av.getCharHeight (); +var alignmentHeight = rowHeight * this.av.getAlignment ().getHeight (); +var annotationHeight = this.av.calcPanelHeight (); +var mheight = annotationHeight; +var d = this.sequenceHolderPanel.getSize (); +var availableHeight = d.height - this.scalePanelHolder.getHeight (); +if (adjustPanelHeight) { +if (annotationHeight + alignmentHeight > availableHeight) { +annotationHeight = Math.min (annotationHeight, availableHeight - 2 * rowHeight); +}} else { +annotationHeight = this.annotationPanelHolder.getSize ().height; +}if (availableHeight - annotationHeight < 5) { +annotationHeight = availableHeight; +}this.annotationPanel.setSize ( new java.awt.Dimension (d.width, annotationHeight)); +this.annotationPanelHolder.setSize ( new java.awt.Dimension (d.width, annotationHeight)); +this.seqPanel.seqCanvas.setSize (d.width, this.seqPanel.seqCanvas.getSize ().height); +var e = this.idPanel.getSize (); +this.alabels.setSize ( new java.awt.Dimension (e.width, annotationHeight)); +this.annotationSpaceFillerHolder.setSize ( new java.awt.Dimension (e.width, annotationHeight)); +var s = this.apvscroll.getValue (); +if (s > mheight - annotationHeight) { +s = 0; +}this.apvscroll.setValues (s, annotationHeight, 0, mheight); +this.annotationPanel.setScrollOffset (this.apvscroll.getValue (), false); +this.alabels.setScrollOffset (this.apvscroll.getValue (), false); +}, "~B"); +Clazz.defineMethod (c$, "setWrapAlignment", +function (wrap) { +this.av.startSeq = 0; +this.av.startRes = 0; +this.scalePanelHolder.setVisible (!wrap); +this.hscroll.setVisible (!wrap); +this.idwidthAdjuster.setVisible (!wrap); +if (wrap) { +this.annotationPanelHolder.setVisible (false); +this.annotationSpaceFillerHolder.setVisible (false); +} else if (this.av.isShowAnnotation ()) { +this.annotationPanelHolder.setVisible (true); +this.annotationSpaceFillerHolder.setVisible (true); +}this.idSpaceFillerPanel1.setVisible (!wrap); +this.fontChanged (); +this.validate (); +this.sequenceHolderPanel.validate (); +this.repaint (); +}, "~B"); +Clazz.defineMethod (c$, "scrollUp", +function (up) { +if (up) { +if (this.vscroll.getValue () < 1) { +return false; +}this.setScrollValues (this.hscroll.getValue (), this.vscroll.getValue () - 1); +} else { +if (this.vextent + this.vscroll.getValue () >= this.av.getAlignment ().getHeight ()) { +return false; +}this.setScrollValues (this.hscroll.getValue (), this.vscroll.getValue () + 1); +}this.repaint (); +return true; +}, "~B"); +Clazz.defineMethod (c$, "scrollRight", +function (right) { +if (!right) { +if (this.hscroll.getValue () < 1) { +return false; +}this.setScrollValues (this.hscroll.getValue () - 1, this.vscroll.getValue ()); +} else { +if (this.hextent + this.hscroll.getValue () >= this.av.getAlignment ().getWidth ()) { +return false; +}this.setScrollValues (this.hscroll.getValue () + 1, this.vscroll.getValue ()); +}this.repaint (); +return true; +}, "~B"); +Clazz.defineMethod (c$, "setScrollValues", +function (x, y) { +var width = this.av.getAlignment ().getWidth (); +var height = this.av.getAlignment ().getHeight (); +if (this.av.hasHiddenColumns ()) { +width = this.av.getColumnSelection ().findColumnPosition (width); +}if (x < 0) { +x = 0; +};this.hextent = Clazz.doubleToInt (this.seqPanel.seqCanvas.getSize ().width / this.av.getCharWidth ()); +this.vextent = Clazz.doubleToInt (this.seqPanel.seqCanvas.getSize ().height / this.av.getCharHeight ()); +if (this.hextent > width) { +this.hextent = width; +}if (this.vextent > height) { +this.vextent = height; +}if ((this.hextent + x) > width) { +System.err.println ("hextent was " + this.hextent + " and x was " + x); +x = width - this.hextent; +}if ((this.vextent + y) > height) { +y = height - this.vextent; +}if (y < 0) { +y = 0; +}if (x < 0) { +System.err.println ("x was " + x); +x = 0; +}this.av.setStartSeq (y); +var endSeq = y + this.vextent; +if (endSeq > this.av.getAlignment ().getHeight ()) { +endSeq = this.av.getAlignment ().getHeight (); +}this.av.setEndSeq (endSeq); +this.av.setStartRes (x); +this.av.setEndRes ((x + (Clazz.doubleToInt (this.seqPanel.seqCanvas.getSize ().width / this.av.getCharWidth ()))) - 1); +this.hscroll.setValues (x, this.hextent, 0, width); +this.vscroll.setValues (y, this.vextent, 0, height); +if (this.overviewPanel != null) { +this.overviewPanel.setBoxPosition (); +}this.sendViewPosition (); +}, "~N,~N"); +Clazz.overrideMethod (c$, "adjustmentValueChanged", +function (evt) { +if (this.annotationPanel == null) return; +var oldX = this.av.getStartRes (); +var oldY = this.av.getStartSeq (); +if (evt == null || evt.getSource () === this.apvscroll) { +this.annotationPanel.setScrollOffset (this.apvscroll.getValue (), false); +this.alabels.setScrollOffset (this.apvscroll.getValue (), false); +}if (evt == null || evt.getSource () === this.hscroll) { +var x = this.hscroll.getValue (); +this.av.setStartRes (x); +this.av.setEndRes (x + Clazz.doubleToInt (this.seqPanel.seqCanvas.getSize ().width / this.av.getCharWidth ()) - 1); +}if (evt == null || evt.getSource () === this.vscroll) { +var offy = this.vscroll.getValue (); +if (this.av.getWrapAlignment ()) { +var rowSize = this.seqPanel.seqCanvas.getWrappedCanvasWidth (this.seqPanel.seqCanvas.getSize ().width); +this.av.setStartRes (this.vscroll.getValue () * rowSize); +this.av.setEndRes ((this.vscroll.getValue () + 1) * rowSize); +} else { +this.av.setStartSeq (offy); +this.av.setEndSeq (offy + Clazz.doubleToInt (this.seqPanel.seqCanvas.getSize ().height / this.av.getCharHeight ())); +}}if (this.overviewPanel != null) { +this.overviewPanel.setBoxPosition (); +}var scrollX = this.av.startRes - oldX; +var scrollY = this.av.startSeq - oldY; +if (this.av.getWrapAlignment () || !this.fastPaint || this.av.MAC) { +this.repaint (); +} else { +if (scrollX > this.av.endRes - this.av.startRes) { +scrollX = this.av.endRes - this.av.startRes; +} else if (scrollX < this.av.startRes - this.av.endRes) { +scrollX = this.av.startRes - this.av.endRes; +}this.idPanel.idCanvas.fastPaint (scrollY); +this.seqPanel.seqCanvas.fastPaint (scrollX, scrollY); +this.scalePanel.repaint (); +if (this.av.isShowAnnotation ()) { +this.annotationPanel.fastPaint (this.av.getStartRes () - oldX); +}}this.sendViewPosition (); +if (this.isFollowingComplementScroll ()) { +this.setFollowingComplementScroll (false); +} else { +var ap = this.getComplementPanel (); +this.av.scrollComplementaryAlignment (ap); +}}, "java.awt.event.AdjustmentEvent"); +Clazz.defineMethod (c$, "getComplementPanel", + function () { +var ap = null; +if (this.alignFrame != null) { +var sf = this.alignFrame.getSplitFrame (); +if (sf != null) { +var other = sf.getComplement (this.alignFrame); +if (other != null) { +ap = other.alignPanel; +}}}return ap; +}); +Clazz.defineMethod (c$, "scrollToCentre", +function (sr, seqOffset) { +var mappedTo = sr.getResultSequence (0); +var seqs = this.av.getAlignment ().getSequences (); +var sequenceIndex = 0; +var matched = false; +for (var seq, $seq = seqs.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) { +if (mappedTo === seq.getDatasetSequence ()) { +matched = true; +break; +}sequenceIndex++; +} +if (!matched) { +return; +}sequenceIndex = Math.max (0, sequenceIndex - seqOffset); +sr.getResults ().get (0).setSequence (this.av.getAlignment ().getSequenceAt (sequenceIndex)); +this.setFollowingComplementScroll (true); +this.scrollToPosition (sr, true, true); +}, "jalview.datamodel.SearchResults,~N"); +Clazz.defineMethod (c$, "sendViewPosition", + function () { +jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.av.applet).sendViewPosition (this, this.av.startRes, this.av.endRes, this.av.startSeq, this.av.endSeq); +}); +Clazz.overrideMethod (c$, "paintAlignment", +function (updateOverview) { +var sorter = new jalview.analysis.AnnotationSorter (this.getAlignment (), this.av.isShowAutocalculatedAbove ()); +sorter.sort (this.getAlignment ().getAlignmentAnnotation (), this.av.getSortAnnotationsBy ()); +this.repaint (); +if (updateOverview) { +jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.av.applet).sequenceColoursChanged (this); +if (this.overviewPanel != null) { +this.overviewPanel.updateOverviewImage (); +}}}, "~B"); +Clazz.overrideMethod (c$, "paintComponent", +function (g) { +System.out.println ("alignframe paintcomp"); +this.invalidate (); +var d = this.idPanel.idCanvas.getSize (); +var canvasHeight = this.seqPanel.seqCanvas.getSize ().height; +if (canvasHeight != d.height) { +this.idPanel.idCanvas.setSize (d.width, canvasHeight); +}if (this.av.getWrapAlignment ()) { +var maxwidth = this.av.getAlignment ().getWidth (); +if (this.av.hasHiddenColumns ()) { +maxwidth = this.av.getColumnSelection ().findColumnPosition (maxwidth) - 1; +}var canvasWidth = this.seqPanel.seqCanvas.getWrappedCanvasWidth (this.seqPanel.seqCanvas.getSize ().width); +if (canvasWidth > 0) { +var max = Clazz.doubleToInt (maxwidth / canvasWidth); +this.vscroll.setMaximum (1 + max); +this.vscroll.setUnitIncrement (1); +this.vscroll.setVisibleAmount (1); +}} else { +this.setScrollValues (this.av.getStartRes (), this.av.getStartSeq ()); +}}, "java.awt.Graphics"); +Clazz.defineMethod (c$, "jbInit", + function () { +this.setLayout ( new java.awt.BorderLayout ()); +this.sequenceHolderPanel.setLayout ( new java.awt.BorderLayout ()); +this.seqPanelHolder.setLayout ( new java.awt.BorderLayout ()); +this.scalePanelHolder.setBackground (java.awt.Color.white); +this.scalePanelHolder.setLayout ( new java.awt.BorderLayout ()); +this.idPanelHolder.setLayout ( new java.awt.BorderLayout ()); +this.idSpaceFillerPanel1.setBackground (java.awt.Color.white); +this.idSpaceFillerPanel1.setLayout ( new java.awt.BorderLayout ()); +this.annotationSpaceFillerHolder.setBackground (java.awt.Color.white); +this.annotationSpaceFillerHolder.setLayout ( new java.awt.BorderLayout ()); +this.hscroll.setOrientation (0); +var hscrollHolder = new awt2swing.Panel (); +hscrollHolder.setLayout ( new java.awt.BorderLayout ()); +this.hscrollFillerPanel.setBackground (java.awt.Color.white); +this.apvscroll.setOrientation (1); +this.apvscroll.setVisible (true); +this.apvscroll.addAdjustmentListener (this); +this.annotationPanelHolder.setBackground (java.awt.Color.white); +this.annotationPanelHolder.setLayout ( new java.awt.BorderLayout ()); +this.annotationPanelHolder.add (this.apvscroll, "East"); +hscrollHolder.setBackground (java.awt.Color.white); +this.seqPanelHolder.setBackground (java.awt.Color.white); +this.idPanelHolder.setBackground (java.awt.Color.white); +this.sequenceHolderPanel.add (this.scalePanelHolder, "North"); +this.sequenceHolderPanel.add (this.seqPanelHolder, "Center"); +this.seqPanelHolder.add (this.vscroll, "East"); +this.add (this.idPanelHolder, "West"); +this.idPanelHolder.add (this.idSpaceFillerPanel1, "North"); +this.idPanelHolder.add (this.annotationSpaceFillerHolder, "South"); +this.add (hscrollHolder, "South"); +hscrollHolder.add (this.hscroll, "Center"); +hscrollHolder.add (this.hscrollFillerPanel, "West"); +this.add (this.sequenceHolderPanel, "Center"); +}); +Clazz.defineMethod (c$, "updateAnnotation", +function () { +this.updateAnnotation (false); +}); +Clazz.defineMethod (c$, "updateAnnotation", +function (applyGlobalSettings) { +this.updateAnnotation (applyGlobalSettings, false); +}, "~B"); +Clazz.defineMethod (c$, "updateAnnotation", +function (applyGlobalSettings, preserveNewGroupSettings) { +this.av.updateGroupAnnotationSettings (applyGlobalSettings, preserveNewGroupSettings); +this.adjustAnnotationHeight (); +}, "~B,~B"); +Clazz.overrideMethod (c$, "getAlignment", +function () { +return this.av.getAlignment (); +}); +Clazz.overrideMethod (c$, "getViewName", +function () { +return this.getName (); +}); +Clazz.overrideMethod (c$, "getStructureSelectionManager", +function () { +return jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.av.applet); +}); +Clazz.overrideMethod (c$, "raiseOOMWarning", +function (string, error) { +System.err.println ("Out of memory whilst '" + string + "'"); +error.printStackTrace (); +}, "~S,OutOfMemoryError"); +Clazz.defineMethod (c$, "setFollowingComplementScroll", +function (b) { +this.followingComplementScroll = b; +}, "~B"); +Clazz.defineMethod (c$, "isFollowingComplementScroll", +function () { +return this.followingComplementScroll; +}); +c$.$AlignmentPanel$1$ = function () { +Clazz.pu$h(self.c$); +c$ = Clazz.declareAnonymous (jalview.appletgui, "AlignmentPanel$1", java.awt.event.ComponentAdapter); +Clazz.overrideMethod (c$, "componentResized", +function (evt) { +this.b$["jalview.appletgui.AlignmentPanel"].setScrollValues (this.f$.av.getStartRes (), this.f$.av.getStartSeq ()); +if (this.b$["jalview.appletgui.AlignmentPanel"].getSize ().height > 0 && this.b$["jalview.appletgui.AlignmentPanel"].annotationPanelHolder.getSize ().height > 0) { +this.b$["jalview.appletgui.AlignmentPanel"].validateAnnotationDimensions (false); +}this.b$["jalview.appletgui.AlignmentPanel"].repaint (); +}, "java.awt.event.ComponentEvent"); +c$ = Clazz.p0p (); +}; +c$.$AlignmentPanel$2$ = function () { +Clazz.pu$h(self.c$); +c$ = Clazz.declareAnonymous (jalview.appletgui, "AlignmentPanel$2", null, java.beans.PropertyChangeListener); +Clazz.overrideMethod (c$, "propertyChange", +function (evt) { +if (evt.getPropertyName ().equals ("alignment")) { +jalview.appletgui.PaintRefresher.Refresh (this.f$.ap, this.f$.av.getSequenceSetId (), true, true); +this.b$["jalview.appletgui.AlignmentPanel"].alignmentChanged (); +}}, "java.beans.PropertyChangeEvent"); +c$ = Clazz.p0p (); +}; +});