Merge branch 'master' of https://source.jalview.org/git/jalviewjs.git
[jalviewjs.git] / site / j2s / jalview / appletgui / AnnotationLabels.js
index 13d260e..ed2a66e 100644 (file)
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["awt2swing.Panel", "java.awt.event.ActionListener", "$.MouseListener", "$.MouseMotionListener"], "jalview.appletgui.AnnotationLabels", ["awt2swing.Checkbox", "$.CheckboxMenuItem", "$.Frame", "$.MenuItem", "$.PopupMenu", "jalview.analysis.AlignmentUtils", "jalview.appletgui.AlignFrame", "$.CutAndPasteTransfer", "$.EditNameDialog", "$.PaintRefresher", "$.Tooltip", "jalview.bin.JalviewLite", "jalview.datamodel.AlignmentAnnotation", "$.SequenceGroup", "jalview.util.MessageManager", "$.ParseHtmlBodyAndLinks", "java.awt.Color", "$.Dimension", "$.FlowLayout", "java.awt.event.ItemListener", "java.lang.StringBuffer", "java.util.Arrays", "$.Collections", "$.Vector"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.image = null;\r
-this.active = false;\r
-this.ap = null;\r
-this.av = null;\r
-this.resizing = false;\r
-this.oldY = 0;\r
-this.mouseX = 0;\r
-this.scrollOffset = 0;\r
-this.selectedRow = -1;\r
-this.tooltip = null;\r
-this.hasHiddenRows = false;\r
-this.resizePanel = false;\r
-this.dragEvent = null;\r
-this.dragCancelled = false;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "AnnotationLabels", awt2swing.Panel, [java.awt.event.ActionListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener]);\r
-Clazz.makeConstructor (c$, \r
-function (ap) {\r
-Clazz.superConstructor (this, jalview.appletgui.AnnotationLabels, []);\r
-this.ap = ap;\r
-this.av = ap.av;\r
-this.setLayout (null);\r
-this.addMouseListener (this);\r
-this.addMouseMotionListener (this);\r
-}, "jalview.appletgui.AlignmentPanel");\r
-Clazz.makeConstructor (c$, \r
-function (av) {\r
-Clazz.superConstructor (this, jalview.appletgui.AnnotationLabels, []);\r
-this.av = av;\r
-}, "jalview.appletgui.AlignViewport");\r
-Clazz.defineMethod (c$, "setScrollOffset", \r
-function (y, repaint) {\r
-this.scrollOffset = y;\r
-if (repaint) {\r
-this.repaint ();\r
-}}, "~N,~B");\r
-Clazz.defineMethod (c$, "getSelectedRow", \r
-function (y) {\r
-var row = -2;\r
-var aa = this.ap.av.getAlignment ().getAlignmentAnnotation ();\r
-if (aa == null) {\r
-return row;\r
-}var height = 0;\r
-for (var i = 0; i < aa.length; i++) {\r
-row = -1;\r
-if (!aa[i].visible) {\r
-continue;\r
-}height += aa[i].height;\r
-if (y < height) {\r
-row = i;\r
-break;\r
-}}\r
-return row;\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (evt) {\r
-var aa = this.av.getAlignment ().getAlignmentAnnotation ();\r
-if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.ADDNEW)) {\r
-var newAnnotation =  new jalview.datamodel.AlignmentAnnotation ("", null,  new Array (this.ap.av.getAlignment ().getWidth ()));\r
-if (!this.editLabelDescription (newAnnotation)) {\r
-return;\r
-}this.ap.av.getAlignment ().addAnnotation (newAnnotation);\r
-this.ap.av.getAlignment ().setAnnotationIndex (newAnnotation, 0);\r
-} else if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.EDITNAME)) {\r
-this.editLabelDescription (aa[this.selectedRow]);\r
-} else if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.HIDE)) {\r
-aa[this.selectedRow].visible = false;\r
-} else if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.SHOWALL)) {\r
-for (var i = 0; i < aa.length; i++) {\r
-aa[i].visible = (aa[i].annotations == null) ? false : true;\r
-}\r
-} else if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.OUTPUT_TEXT)) {\r
-var cap =  new jalview.appletgui.CutAndPasteTransfer (false, this.ap.alignFrame);\r
-var frame =  new awt2swing.Frame ();\r
-frame.add (cap);\r
-jalview.bin.JalviewLite.addFrame (frame, this.ap.alignFrame.getTitle () + " - " + aa[this.selectedRow].label, 500, 100);\r
-cap.setText (aa[this.selectedRow].toString ());\r
-} else if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.COPYCONS_SEQ)) {\r
-var cons = this.av.getConsensusSeq ();\r
-if (cons != null) {\r
-this.copy_annotseqtoclipboard (cons);\r
-}}this.refresh ();\r
-}, "java.awt.event.ActionEvent");\r
-Clazz.defineMethod (c$, "refresh", \r
-function () {\r
-this.ap.annotationPanel.adjustPanelHeight ();\r
-this.setSize (this.getSize ().width, this.ap.annotationPanel.getSize ().height);\r
-this.ap.validate ();\r
-this.ap.paintAlignment (true);\r
-});\r
-Clazz.defineMethod (c$, "editLabelDescription", \r
-function (annotation) {\r
-var padGaps =  new awt2swing.Checkbox ("Fill Empty Gaps With \"" + this.ap.av.getGapCharacter () + "\"", annotation.padGaps);\r
-var dialog =  new jalview.appletgui.EditNameDialog (annotation.label, annotation.description, "      Annotation Label", "Annotation Description", this.ap.alignFrame, "Edit Annotation Name / Description", 500, 180, false);\r
-var empty =  new awt2swing.Panel ( new java.awt.FlowLayout ());\r
-empty.add (padGaps);\r
-dialog.add (empty);\r
-dialog.pack ();\r
-dialog.setVisible (true);\r
-if (dialog.accept) {\r
-annotation.label = dialog.getName ();\r
-annotation.description = dialog.getDescription ();\r
-annotation.setPadGaps (padGaps.getState (), this.av.getGapCharacter ());\r
-this.repaint ();\r
-return true;\r
-} else {\r
-return false;\r
-}}, "jalview.datamodel.AlignmentAnnotation");\r
-Clazz.overrideMethod (c$, "mouseMoved", \r
-function (evt) {\r
-this.resizePanel = evt.getY () < 10 && evt.getX () < 14;\r
-var row = this.getSelectedRow (evt.getY () + this.scrollOffset);\r
-if (row > -1) {\r
-var phb =  new jalview.util.ParseHtmlBodyAndLinks (this.av.getAlignment ().getAlignmentAnnotation ()[row].getDescription (true), true, "\n");\r
-if (this.tooltip == null) {\r
-this.tooltip =  new jalview.appletgui.Tooltip (phb.getNonHtmlContent (), this);\r
-} else {\r
-this.tooltip.setTip (phb.getNonHtmlContent ());\r
-}} else if (this.tooltip != null) {\r
-this.tooltip.setTip ("");\r
-}}, "java.awt.event.MouseEvent");\r
-Clazz.defineMethod (c$, "cancelDrag", \r
-function () {\r
-this.dragEvent = null;\r
-this.dragCancelled = true;\r
-});\r
-Clazz.overrideMethod (c$, "mouseDragged", \r
-function (evt) {\r
-if (this.dragCancelled) {\r
-return;\r
-};this.dragEvent = evt;\r
-if (this.resizePanel) {\r
-var d = this.ap.annotationPanelHolder.getSize ();\r
-var e = this.ap.annotationSpaceFillerHolder.getSize ();\r
-var f = this.ap.seqPanelHolder.getSize ();\r
-var dif = evt.getY () - this.oldY;\r
-dif /= this.ap.av.getCharHeight ();\r
-dif *= this.ap.av.getCharHeight ();\r
-if ((d.height - dif) > 20 && (f.height + dif) > 20) {\r
-this.ap.annotationPanel.setSize (d.width, d.height - dif);\r
-this.setSize ( new java.awt.Dimension (e.width, d.height - dif));\r
-this.ap.annotationSpaceFillerHolder.setSize ( new java.awt.Dimension (e.width, d.height - dif));\r
-this.ap.annotationPanelHolder.setSize ( new java.awt.Dimension (d.width, d.height - dif));\r
-this.ap.apvscroll.setValues (this.ap.apvscroll.getValue (), d.height - dif, 0, this.av.calcPanelHeight ());\r
-f.height += dif;\r
-this.ap.seqPanelHolder.setPreferredSize (f);\r
-this.ap.setScrollValues (this.av.getStartRes (), this.av.getStartSeq ());\r
-this.ap.validate ();\r
-this.ap.addNotify ();\r
-}} else {\r
-var diff;\r
-if ((diff = 6 - evt.getY ()) > 0) {\r
-this.ap.apvscroll.setValue (this.ap.apvscroll.getValue () - diff);\r
-this.ap.adjustmentValueChanged (null);\r
-} else if ((0 < (diff = 6 - this.ap.annotationSpaceFillerHolder.getSize ().height + evt.getY ()))) {\r
-this.ap.apvscroll.setValue (this.ap.apvscroll.getValue () + diff);\r
-this.ap.adjustmentValueChanged (null);\r
-}this.repaint ();\r
-}}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseClicked", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseReleased", \r
-function (evt) {\r
-if (!this.resizePanel && !this.dragCancelled) {\r
-var start = this.selectedRow;\r
-var end = this.getSelectedRow (evt.getY () + this.scrollOffset);\r
-if (start > -1 && start != end) {\r
-var startAA = this.ap.av.getAlignment ().getAlignmentAnnotation ()[start];\r
-if (end == -1) {\r
-end = this.ap.av.getAlignment ().getAlignmentAnnotation ().length - 1;\r
-}var endAA = this.ap.av.getAlignment ().getAlignmentAnnotation ()[end];\r
-this.ap.av.getAlignment ().getAlignmentAnnotation ()[end] = startAA;\r
-this.ap.av.getAlignment ().getAlignmentAnnotation ()[start] = endAA;\r
-}}this.resizePanel = false;\r
-this.dragEvent = null;\r
-this.dragCancelled = false;\r
-this.repaint ();\r
-this.ap.annotationPanel.repaint ();\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseEntered", \r
-function (evt) {\r
-if (evt.getY () < 10 && evt.getX () < 14) {\r
-this.resizePanel = true;\r
-this.repaint ();\r
-}}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseExited", \r
-function (evt) {\r
-this.dragCancelled = false;\r
-if (this.dragEvent == null) {\r
-this.resizePanel = false;\r
-} else {\r
-if (!this.resizePanel) {\r
-this.dragEvent = null;\r
-}}this.repaint ();\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mousePressed", \r
-function (evt) {\r
-this.oldY = evt.getY ();\r
-if (this.resizePanel) {\r
-return;\r
-}this.dragCancelled = false;\r
-this.selectedRow = this.getSelectedRow (evt.getY () + this.scrollOffset);\r
-var aa = this.ap.av.getAlignment ().getAlignmentAnnotation ();\r
-if ((evt.getModifiers () & 4) == 4) {\r
-var popup =  new awt2swing.PopupMenu (jalview.util.MessageManager.getString ("label.annotations"));\r
-var item =  new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.ADDNEW);\r
-item.addActionListener (this);\r
-popup.add (item);\r
-if (this.selectedRow < 0) {\r
-if (this.hasHiddenRows) {\r
-item =  new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.SHOWALL);\r
-item.addActionListener (this);\r
-popup.add (item);\r
-}this.add (popup);\r
-popup.show (this, evt.getX (), evt.getY ());\r
-return;\r
-}item =  new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.EDITNAME);\r
-item.addActionListener (this);\r
-popup.add (item);\r
-item =  new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.HIDE);\r
-item.addActionListener (this);\r
-popup.add (item);\r
-if (this.selectedRow < aa.length) {\r
-if (aa[this.selectedRow].sequenceRef != null) {\r
-var label = aa[this.selectedRow].label;\r
-var hideType =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.hide_all") + " " + label);\r
-hideType.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$1") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$1, this, Clazz.cloneFinals ("label", label))));\r
-popup.add (hideType);\r
-}}if (this.hasHiddenRows) {\r
-item =  new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.SHOWALL);\r
-item.addActionListener (this);\r
-popup.add (item);\r
-}this.add (popup);\r
-item =  new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.OUTPUT_TEXT);\r
-item.addActionListener (this);\r
-popup.add (item);\r
-if (this.selectedRow < aa.length) {\r
-if (aa[this.selectedRow].autoCalculated) {\r
-if (aa[this.selectedRow].label.indexOf ("Consensus") > -1) {\r
-popup.addSeparator ();\r
-var cbmi =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.ignore_gaps_consensus"), (aa[this.selectedRow].groupRef != null) ? aa[this.selectedRow].groupRef.getIgnoreGapsConsensus () : this.ap.av.isIgnoreGapsConsensus ());\r
-var aaa = aa[this.selectedRow];\r
-cbmi.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$2") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$2, this, Clazz.cloneFinals ("aaa", aaa, "cbmi", cbmi))));\r
-popup.add (cbmi);\r
-if (aaa.groupRef != null) {\r
-var chist =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_group_histogram"), aa[this.selectedRow].groupRef.isShowConsensusHistogram ());\r
-chist.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$3") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$3$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$3, this, Clazz.cloneFinals ("aaa", aaa, "chist", chist))));\r
-popup.add (chist);\r
-var cprofl =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_group_logo"), aa[this.selectedRow].groupRef.isShowSequenceLogo ());\r
-cprofl.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$4") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$4$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$4, this, Clazz.cloneFinals ("aaa", aaa, "cprofl", cprofl))));\r
-popup.add (cprofl);\r
-var cprofn =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.normalise_group_logo"), aa[this.selectedRow].groupRef.isNormaliseSequenceLogo ());\r
-cprofn.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$5") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$5$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$5, this, Clazz.cloneFinals ("aaa", aaa, "cprofn", cprofn))));\r
-popup.add (cprofn);\r
-} else {\r
-var chist =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_histogram"), this.av.isShowConsensusHistogram ());\r
-chist.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$6") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$6$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$6, this, Clazz.cloneFinals ("chist", chist))));\r
-popup.add (chist);\r
-var cprof =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_logo"), this.av.isShowSequenceLogo ());\r
-cprof.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$7") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$7$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$7, this, Clazz.cloneFinals ("cprof", cprof))));\r
-popup.add (cprof);\r
-var cprofn =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.normalise_logo"), this.av.isNormaliseSequenceLogo ());\r
-cprofn.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$8") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$8$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$8, this, Clazz.cloneFinals ("cprofn", cprofn))));\r
-popup.add (cprofn);\r
-}item =  new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.COPYCONS_SEQ);\r
-item.addActionListener (this);\r
-popup.add (item);\r
-}}}popup.show (this, evt.getX (), evt.getY ());\r
-} else {\r
-if (this.selectedRow > -1 && this.selectedRow < aa.length) {\r
-if (aa[this.selectedRow].groupRef != null) {\r
-if (evt.getClickCount () >= 2) {\r
-this.ap.seqPanel.ap.idPanel.highlightSearchResults (null);\r
-this.ap.av.setSelectionGroup (aa[this.selectedRow].groupRef);\r
-this.ap.av.sendSelection ();\r
-this.ap.paintAlignment (false);\r
-jalview.appletgui.PaintRefresher.Refresh (this.ap, this.ap.av.getSequenceSetId ());\r
-} else {\r
-this.ap.seqPanel.ap.idPanel.highlightSearchResults (aa[this.selectedRow].groupRef.getSequences (null));\r
-}return;\r
-} else if (aa[this.selectedRow].sequenceRef != null) {\r
-if (evt.getClickCount () == 1) {\r
-this.ap.seqPanel.ap.idPanel.highlightSearchResults (java.util.Arrays.asList ( Clazz.newArray (-1, [aa[this.selectedRow].sequenceRef])));\r
-} else if (evt.getClickCount () >= 2) {\r
-this.ap.seqPanel.ap.idPanel.highlightSearchResults (null);\r
-var sg = this.ap.av.getSelectionGroup ();\r
-if (sg != null) {\r
-if (!(evt.isControlDown () || evt.isShiftDown ())) {\r
-sg =  new jalview.datamodel.SequenceGroup (sg);\r
-sg.clear ();\r
-sg.addSequence (aa[this.selectedRow].sequenceRef, false);\r
-} else {\r
-if (evt.isControlDown ()) {\r
-sg.addOrRemove (aa[this.selectedRow].sequenceRef, true);\r
-} else {\r
-sg.addSequence (aa[this.selectedRow].sequenceRef, true);\r
-}}} else {\r
-sg =  new jalview.datamodel.SequenceGroup ();\r
-sg.setStartRes (0);\r
-sg.setEndRes (this.ap.av.getAlignment ().getWidth () - 1);\r
-sg.addSequence (aa[this.selectedRow].sequenceRef, false);\r
-}this.ap.av.setSelectionGroup (sg);\r
-this.ap.paintAlignment (false);\r
-jalview.appletgui.PaintRefresher.Refresh (this.ap, this.ap.av.getSequenceSetId ());\r
-this.ap.av.sendSelection ();\r
-}}}}}, "java.awt.event.MouseEvent");\r
-Clazz.defineMethod (c$, "copy_annotseqtoclipboard", \r
-function (sq) {\r
-if (sq == null || sq.getLength () < 1) {\r
-return;\r
-}jalview.appletgui.AlignFrame.copiedSequences =  new StringBuffer ();\r
-jalview.appletgui.AlignFrame.copiedSequences.append (sq.getName () + "\t" + sq.getStart () + "\t" + sq.getEnd () + "\t" + sq.getSequenceAsString () + "\n");\r
-if (this.av.hasHiddenColumns ()) {\r
-jalview.appletgui.AlignFrame.copiedHiddenColumns =  new java.util.Vector ();\r
-for (var region, $region = this.av.getColumnSelection ().getHiddenColumns ().iterator (); $region.hasNext () && ((region = $region.next ()) || true);) {\r
-jalview.appletgui.AlignFrame.copiedHiddenColumns.addElement ( Clazz.newIntArray (-1, [region[0], region[1]]));\r
-}\r
-}}, "jalview.datamodel.SequenceI");\r
-Clazz.overrideMethod (c$, "paintComponent", \r
-function (g) {\r
-if (this.av.getWrapAlignment () || !this.av.isShowAnnotation ()) return;\r
-var w = this.getSize ().width;\r
-var h = this.getSize ().height;\r
-if (this.image == null || w != this.image.getWidth (this) || h != this.image.getHeight (this)) {\r
-this.image = this.createImage (w, this.ap.annotationPanel.getSize ().height);\r
-}this.drawComponent (this.image.getGraphics (), w);\r
-g.drawImage (this.image, 0, 0, this);\r
-}, "java.awt.Graphics");\r
-Clazz.defineMethod (c$, "drawComponent", \r
-function (g, width) {\r
-g.setFont (this.av.getFont ());\r
-var fm = g.getFontMetrics (this.av.getFont ());\r
-g.setColor (java.awt.Color.white);\r
-g.fillRect (0, 0, this.getSize ().width, this.getSize ().height);\r
-g.translate (0, -this.scrollOffset);\r
-g.setColor (java.awt.Color.black);\r
-var aa = this.av.getAlignment ().getAlignmentAnnotation ();\r
-var y = 0;\r
-var fy = g.getFont ().getSize ();\r
-var x = 0;\r
-var offset;\r
-if (aa != null) {\r
-this.hasHiddenRows = false;\r
-for (var i = 0; i < aa.length; i++) {\r
-if (!aa[i].visible) {\r
-this.hasHiddenRows = true;\r
-continue;\r
-}x = width - fm.stringWidth (aa[i].label) - 3;\r
-y += aa[i].height;\r
-offset = Clazz.doubleToInt (-(aa[i].height - fy) / 2);\r
-g.drawString (aa[i].label, x, y + offset);\r
-}\r
-}g.translate (0, +this.scrollOffset);\r
-if (this.resizePanel) {\r
-g.setColor (java.awt.Color.red);\r
-g.setPaintMode ();\r
-g.drawLine (2, 8, 5, 2);\r
-g.drawLine (5, 2, 8, 8);\r
-} else if (!this.dragCancelled && this.dragEvent != null && aa != null) {\r
-g.setColor (java.awt.Color.lightGray);\r
-g.drawString (aa[this.selectedRow].label, this.dragEvent.getX (), this.dragEvent.getY ());\r
-}if (!this.av.getWrapAlignment () && ((aa == null) || (aa.length < 1))) {\r
-g.setColor (java.awt.Color.black);\r
-g.drawString (jalview.util.MessageManager.getString ("label.right_click"), 2, 8);\r
-g.drawString (jalview.util.MessageManager.getString ("label.to_add_annotation"), 2, 18);\r
-}}, "java.awt.Graphics,~N");\r
-c$.$AnnotationLabels$1$ = function () {\r
-Clazz.pu$h(self.c$);\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$1", null, java.awt.event.ActionListener);\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (e) {\r
-jalview.analysis.AlignmentUtils.showOrHideSequenceAnnotations (this.b$["jalview.appletgui.AnnotationLabels"].ap.av.getAlignment (), java.util.Collections.singleton (this.f$.label), null, false, false);\r
-this.b$["jalview.appletgui.AnnotationLabels"].refresh ();\r
-}, "java.awt.event.ActionEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$AnnotationLabels$2$ = function () {\r
-Clazz.pu$h(self.c$);\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$2", null, java.awt.event.ItemListener);\r
-Clazz.overrideMethod (c$, "itemStateChanged", \r
-function (e) {\r
-if (this.f$.aaa.groupRef != null) {\r
-this.f$.aaa.groupRef.setIgnoreGapsConsensus (this.f$.cbmi.getState ());\r
-} else {\r
-this.b$["jalview.appletgui.AnnotationLabels"].ap.av.setIgnoreGapsConsensus (this.f$.cbmi.getState (), this.b$["jalview.appletgui.AnnotationLabels"].ap);\r
-}this.b$["jalview.appletgui.AnnotationLabels"].ap.paintAlignment (true);\r
-}, "java.awt.event.ItemEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$AnnotationLabels$3$ = function () {\r
-Clazz.pu$h(self.c$);\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$3", null, java.awt.event.ItemListener);\r
-Clazz.overrideMethod (c$, "itemStateChanged", \r
-function (e) {\r
-this.f$.aaa.groupRef.setShowConsensusHistogram (this.f$.chist.getState ());\r
-this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();\r
-}, "java.awt.event.ItemEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$AnnotationLabels$4$ = function () {\r
-Clazz.pu$h(self.c$);\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$4", null, java.awt.event.ItemListener);\r
-Clazz.overrideMethod (c$, "itemStateChanged", \r
-function (e) {\r
-this.f$.aaa.groupRef.setshowSequenceLogo (this.f$.cprofl.getState ());\r
-this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();\r
-}, "java.awt.event.ItemEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$AnnotationLabels$5$ = function () {\r
-Clazz.pu$h(self.c$);\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$5", null, java.awt.event.ItemListener);\r
-Clazz.overrideMethod (c$, "itemStateChanged", \r
-function (e) {\r
-this.f$.aaa.groupRef.setshowSequenceLogo (true);\r
-this.f$.aaa.groupRef.setNormaliseSequenceLogo (this.f$.cprofn.getState ());\r
-this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();\r
-}, "java.awt.event.ItemEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$AnnotationLabels$6$ = function () {\r
-Clazz.pu$h(self.c$);\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$6", null, java.awt.event.ItemListener);\r
-Clazz.overrideMethod (c$, "itemStateChanged", \r
-function (e) {\r
-this.b$["jalview.appletgui.AnnotationLabels"].av.setShowConsensusHistogram (this.f$.chist.getState ());\r
-this.b$["jalview.appletgui.AnnotationLabels"].ap.alignFrame.showConsensusHistogram.setState (this.f$.chist.getState ());\r
-this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();\r
-}, "java.awt.event.ItemEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$AnnotationLabels$7$ = function () {\r
-Clazz.pu$h(self.c$);\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$7", null, java.awt.event.ItemListener);\r
-Clazz.overrideMethod (c$, "itemStateChanged", \r
-function (e) {\r
-this.b$["jalview.appletgui.AnnotationLabels"].av.setShowSequenceLogo (this.f$.cprof.getState ());\r
-this.b$["jalview.appletgui.AnnotationLabels"].ap.alignFrame.showSequenceLogo.setState (this.f$.cprof.getState ());\r
-this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();\r
-}, "java.awt.event.ItemEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$AnnotationLabels$8$ = function () {\r
-Clazz.pu$h(self.c$);\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$8", null, java.awt.event.ItemListener);\r
-Clazz.overrideMethod (c$, "itemStateChanged", \r
-function (e) {\r
-this.b$["jalview.appletgui.AnnotationLabels"].av.setShowSequenceLogo (true);\r
-this.b$["jalview.appletgui.AnnotationLabels"].ap.alignFrame.normSequenceLogo.setState (this.f$.cprofn.getState ());\r
-this.b$["jalview.appletgui.AnnotationLabels"].av.setNormaliseSequenceLogo (this.f$.cprofn.getState ());\r
-this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();\r
-}, "java.awt.event.ItemEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-Clazz.defineStatics (c$,\r
-"ADDNEW", "Add New Row",\r
-"EDITNAME", "Edit Label/Description",\r
-"HIDE", "Hide This Row",\r
-"SHOWALL", "Show All Hidden Rows",\r
-"OUTPUT_TEXT", "Show Values In Textbox",\r
-"COPYCONS_SEQ", "Copy Consensus Sequence");\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "java.awt.event.ActionListener", "$.MouseListener", "$.MouseMotionListener"], "jalview.appletgui.AnnotationLabels", ["awt2swing.Checkbox", "$.CheckboxMenuItem", "$.Frame", "$.MenuItem", "$.PopupMenu", "jalview.analysis.AlignmentUtils", "jalview.appletgui.AlignFrame", "$.CutAndPasteTransfer", "$.EditNameDialog", "$.PaintRefresher", "$.Tooltip", "jalview.bin.JalviewLite", "jalview.datamodel.AlignmentAnnotation", "$.SequenceGroup", "jalview.util.MessageManager", "$.ParseHtmlBodyAndLinks", "java.awt.Color", "$.Dimension", "$.FlowLayout", "java.awt.event.ItemListener", "java.lang.StringBuffer", "java.util.Arrays", "$.Collections", "$.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.image = null;
+this.active = false;
+this.ap = null;
+this.av = null;
+this.resizing = false;
+this.oldY = 0;
+this.mouseX = 0;
+this.scrollOffset = 0;
+this.selectedRow = -1;
+this.tooltip = null;
+this.hasHiddenRows = false;
+this.resizePanel = false;
+this.dragEvent = null;
+this.dragCancelled = false;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "AnnotationLabels", awt2swing.Panel, [java.awt.event.ActionListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener]);
+Clazz.makeConstructor (c$, 
+function (ap) {
+Clazz.superConstructor (this, jalview.appletgui.AnnotationLabels, []);
+this.ap = ap;
+this.av = ap.av;
+this.setLayout (null);
+this.addMouseListener (this);
+this.addMouseMotionListener (this);
+}, "jalview.appletgui.AlignmentPanel");
+Clazz.makeConstructor (c$, 
+function (av) {
+Clazz.superConstructor (this, jalview.appletgui.AnnotationLabels, []);
+this.av = av;
+}, "jalview.appletgui.AlignViewport");
+Clazz.defineMethod (c$, "setScrollOffset", 
+function (y, repaint) {
+this.scrollOffset = y;
+if (repaint) {
+this.repaint ();
+}}, "~N,~B");
+Clazz.defineMethod (c$, "getSelectedRow", 
+function (y) {
+var row = -2;
+var aa = this.ap.av.getAlignment ().getAlignmentAnnotation ();
+if (aa == null) {
+return row;
+}var height = 0;
+for (var i = 0; i < aa.length; i++) {
+row = -1;
+if (!aa[i].visible) {
+continue;
+}height += aa[i].height;
+if (y < height) {
+row = i;
+break;
+}}
+return row;
+}, "~N");
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (evt) {
+var aa = this.av.getAlignment ().getAlignmentAnnotation ();
+if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.ADDNEW)) {
+var newAnnotation =  new jalview.datamodel.AlignmentAnnotation ("", null,  new Array (this.ap.av.getAlignment ().getWidth ()));
+if (!this.editLabelDescription (newAnnotation)) {
+return;
+}this.ap.av.getAlignment ().addAnnotation (newAnnotation);
+this.ap.av.getAlignment ().setAnnotationIndex (newAnnotation, 0);
+} else if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.EDITNAME)) {
+this.editLabelDescription (aa[this.selectedRow]);
+} else if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.HIDE)) {
+aa[this.selectedRow].visible = false;
+} else if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.SHOWALL)) {
+for (var i = 0; i < aa.length; i++) {
+aa[i].visible = (aa[i].annotations == null) ? false : true;
+}
+} else if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.OUTPUT_TEXT)) {
+var cap =  new jalview.appletgui.CutAndPasteTransfer (false, this.ap.alignFrame);
+var frame =  new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, this.ap.alignFrame.getTitle () + " - " + aa[this.selectedRow].label, 500, 100);
+cap.setText (aa[this.selectedRow].toString ());
+} else if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.COPYCONS_SEQ)) {
+var cons = this.av.getConsensusSeq ();
+if (cons != null) {
+this.copy_annotseqtoclipboard (cons);
+}}this.refresh ();
+}, "java.awt.event.ActionEvent");
+Clazz.defineMethod (c$, "refresh", 
+function () {
+this.ap.annotationPanel.adjustPanelHeight ();
+this.setSize (this.getSize ().width, this.ap.annotationPanel.getSize ().height);
+this.ap.validate ();
+this.ap.paintAlignment (true);
+});
+Clazz.defineMethod (c$, "editLabelDescription", 
+function (annotation) {
+var padGaps =  new awt2swing.Checkbox ("Fill Empty Gaps With \"" + this.ap.av.getGapCharacter () + "\"", annotation.padGaps);
+var dialog =  new jalview.appletgui.EditNameDialog (annotation.label, annotation.description, "      Annotation Label", "Annotation Description", this.ap.alignFrame, "Edit Annotation Name / Description", 500, 180, false);
+var empty =  new awt2swing.Panel ( new java.awt.FlowLayout ());
+empty.add (padGaps);
+dialog.add (empty);
+dialog.pack ();
+dialog.setVisible (true);
+if (dialog.accept) {
+annotation.label = dialog.getName ();
+annotation.description = dialog.getDescription ();
+annotation.setPadGaps (padGaps.getState (), this.av.getGapCharacter ());
+this.repaint ();
+return true;
+} else {
+return false;
+}}, "jalview.datamodel.AlignmentAnnotation");
+Clazz.overrideMethod (c$, "mouseMoved", 
+function (evt) {
+this.resizePanel = evt.getY () < 10 && evt.getX () < 14;
+var row = this.getSelectedRow (evt.getY () + this.scrollOffset);
+if (row > -1) {
+var phb =  new jalview.util.ParseHtmlBodyAndLinks (this.av.getAlignment ().getAlignmentAnnotation ()[row].getDescription (true), true, "\n");
+if (this.tooltip == null) {
+this.tooltip =  new jalview.appletgui.Tooltip (phb.getNonHtmlContent (), this);
+} else {
+this.tooltip.setTip (phb.getNonHtmlContent ());
+}} else if (this.tooltip != null) {
+this.tooltip.setTip ("");
+}}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "cancelDrag", 
+function () {
+this.dragEvent = null;
+this.dragCancelled = true;
+});
+Clazz.overrideMethod (c$, "mouseDragged", 
+function (evt) {
+if (this.dragCancelled) {
+return;
+};this.dragEvent = evt;
+if (this.resizePanel) {
+var d = this.ap.annotationPanelHolder.getSize ();
+var e = this.ap.annotationSpaceFillerHolder.getSize ();
+var f = this.ap.seqPanelHolder.getSize ();
+var dif = evt.getY () - this.oldY;
+dif /= this.ap.av.getCharHeight ();
+dif *= this.ap.av.getCharHeight ();
+if ((d.height - dif) > 20 && (f.height + dif) > 20) {
+this.ap.annotationPanel.setSize (d.width, d.height - dif);
+this.setSize ( new java.awt.Dimension (e.width, d.height - dif));
+this.ap.annotationSpaceFillerHolder.setSize ( new java.awt.Dimension (e.width, d.height - dif));
+this.ap.annotationPanelHolder.setSize ( new java.awt.Dimension (d.width, d.height - dif));
+this.ap.apvscroll.setValues (this.ap.apvscroll.getValue (), d.height - dif, 0, this.av.calcPanelHeight ());
+f.height += dif;
+this.ap.seqPanelHolder.setPreferredSize (f);
+this.ap.setScrollValues (this.av.getStartRes (), this.av.getStartSeq ());
+this.ap.validate ();
+this.ap.addNotify ();
+}} else {
+var diff;
+if ((diff = 6 - evt.getY ()) > 0) {
+this.ap.apvscroll.setValue (this.ap.apvscroll.getValue () - diff);
+this.ap.adjustmentValueChanged (null);
+} else if ((0 < (diff = 6 - this.ap.annotationSpaceFillerHolder.getSize ().height + evt.getY ()))) {
+this.ap.apvscroll.setValue (this.ap.apvscroll.getValue () + diff);
+this.ap.adjustmentValueChanged (null);
+}this.repaint ();
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseClicked", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseReleased", 
+function (evt) {
+if (!this.resizePanel && !this.dragCancelled) {
+var start = this.selectedRow;
+var end = this.getSelectedRow (evt.getY () + this.scrollOffset);
+if (start > -1 && start != end) {
+var startAA = this.ap.av.getAlignment ().getAlignmentAnnotation ()[start];
+if (end == -1) {
+end = this.ap.av.getAlignment ().getAlignmentAnnotation ().length - 1;
+}var endAA = this.ap.av.getAlignment ().getAlignmentAnnotation ()[end];
+this.ap.av.getAlignment ().getAlignmentAnnotation ()[end] = startAA;
+this.ap.av.getAlignment ().getAlignmentAnnotation ()[start] = endAA;
+}}this.resizePanel = false;
+this.dragEvent = null;
+this.dragCancelled = false;
+this.repaint ();
+this.ap.annotationPanel.repaint ();
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseEntered", 
+function (evt) {
+if (evt.getY () < 10 && evt.getX () < 14) {
+this.resizePanel = true;
+this.repaint ();
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseExited", 
+function (evt) {
+this.dragCancelled = false;
+if (this.dragEvent == null) {
+this.resizePanel = false;
+} else {
+if (!this.resizePanel) {
+this.dragEvent = null;
+}}this.repaint ();
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mousePressed", 
+function (evt) {
+this.oldY = evt.getY ();
+if (this.resizePanel) {
+return;
+}this.dragCancelled = false;
+this.selectedRow = this.getSelectedRow (evt.getY () + this.scrollOffset);
+var aa = this.ap.av.getAlignment ().getAlignmentAnnotation ();
+if ((evt.getModifiers () & 4) == 4) {
+var popup =  new awt2swing.PopupMenu (jalview.util.MessageManager.getString ("label.annotations"));
+var item =  new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.ADDNEW);
+item.addActionListener (this);
+popup.add (item);
+if (this.selectedRow < 0) {
+if (this.hasHiddenRows) {
+item =  new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.SHOWALL);
+item.addActionListener (this);
+popup.add (item);
+}this.add (popup);
+popup.show (this, evt.getX (), evt.getY ());
+return;
+}item =  new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.EDITNAME);
+item.addActionListener (this);
+popup.add (item);
+item =  new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.HIDE);
+item.addActionListener (this);
+popup.add (item);
+if (this.selectedRow < aa.length) {
+if (aa[this.selectedRow].sequenceRef != null) {
+var label = aa[this.selectedRow].label;
+var hideType =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.hide_all") + " " + label);
+hideType.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$1") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$1, this, Clazz.cloneFinals ("label", label))));
+popup.add (hideType);
+}}if (this.hasHiddenRows) {
+item =  new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.SHOWALL);
+item.addActionListener (this);
+popup.add (item);
+}this.add (popup);
+item =  new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.OUTPUT_TEXT);
+item.addActionListener (this);
+popup.add (item);
+if (this.selectedRow < aa.length) {
+if (aa[this.selectedRow].autoCalculated) {
+if (aa[this.selectedRow].label.indexOf ("Consensus") > -1) {
+popup.addSeparator ();
+var cbmi =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.ignore_gaps_consensus"), (aa[this.selectedRow].groupRef != null) ? aa[this.selectedRow].groupRef.getIgnoreGapsConsensus () : this.ap.av.isIgnoreGapsConsensus ());
+var aaa = aa[this.selectedRow];
+cbmi.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$2") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$2, this, Clazz.cloneFinals ("aaa", aaa, "cbmi", cbmi))));
+popup.add (cbmi);
+if (aaa.groupRef != null) {
+var chist =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_group_histogram"), aa[this.selectedRow].groupRef.isShowConsensusHistogram ());
+chist.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$3") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$3$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$3, this, Clazz.cloneFinals ("aaa", aaa, "chist", chist))));
+popup.add (chist);
+var cprofl =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_group_logo"), aa[this.selectedRow].groupRef.isShowSequenceLogo ());
+cprofl.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$4") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$4$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$4, this, Clazz.cloneFinals ("aaa", aaa, "cprofl", cprofl))));
+popup.add (cprofl);
+var cprofn =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.normalise_group_logo"), aa[this.selectedRow].groupRef.isNormaliseSequenceLogo ());
+cprofn.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$5") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$5$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$5, this, Clazz.cloneFinals ("aaa", aaa, "cprofn", cprofn))));
+popup.add (cprofn);
+} else {
+var chist =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_histogram"), this.av.isShowConsensusHistogram ());
+chist.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$6") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$6$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$6, this, Clazz.cloneFinals ("chist", chist))));
+popup.add (chist);
+var cprof =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_logo"), this.av.isShowSequenceLogo ());
+cprof.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$7") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$7$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$7, this, Clazz.cloneFinals ("cprof", cprof))));
+popup.add (cprof);
+var cprofn =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.normalise_logo"), this.av.isNormaliseSequenceLogo ());
+cprofn.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$8") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$8$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$8, this, Clazz.cloneFinals ("cprofn", cprofn))));
+popup.add (cprofn);
+}item =  new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.COPYCONS_SEQ);
+item.addActionListener (this);
+popup.add (item);
+}}}popup.show (this, evt.getX (), evt.getY ());
+} else {
+if (this.selectedRow > -1 && this.selectedRow < aa.length) {
+if (aa[this.selectedRow].groupRef != null) {
+if (evt.getClickCount () >= 2) {
+this.ap.seqPanel.ap.idPanel.highlightSearchResults (null);
+this.ap.av.setSelectionGroup (aa[this.selectedRow].groupRef);
+this.ap.av.sendSelection ();
+this.ap.paintAlignment (false);
+jalview.appletgui.PaintRefresher.Refresh (this.ap, this.ap.av.getSequenceSetId ());
+} else {
+this.ap.seqPanel.ap.idPanel.highlightSearchResults (aa[this.selectedRow].groupRef.getSequences (null));
+}return;
+} else if (aa[this.selectedRow].sequenceRef != null) {
+if (evt.getClickCount () == 1) {
+this.ap.seqPanel.ap.idPanel.highlightSearchResults (java.util.Arrays.asList ( Clazz.newArray (-1, [aa[this.selectedRow].sequenceRef])));
+} else if (evt.getClickCount () >= 2) {
+this.ap.seqPanel.ap.idPanel.highlightSearchResults (null);
+var sg = this.ap.av.getSelectionGroup ();
+if (sg != null) {
+if (!(evt.isControlDown () || evt.isShiftDown ())) {
+sg =  new jalview.datamodel.SequenceGroup (sg);
+sg.clear ();
+sg.addSequence (aa[this.selectedRow].sequenceRef, false);
+} else {
+if (evt.isControlDown ()) {
+sg.addOrRemove (aa[this.selectedRow].sequenceRef, true);
+} else {
+sg.addSequence (aa[this.selectedRow].sequenceRef, true);
+}}} else {
+sg =  new jalview.datamodel.SequenceGroup ();
+sg.setStartRes (0);
+sg.setEndRes (this.ap.av.getAlignment ().getWidth () - 1);
+sg.addSequence (aa[this.selectedRow].sequenceRef, false);
+}this.ap.av.setSelectionGroup (sg);
+this.ap.paintAlignment (false);
+jalview.appletgui.PaintRefresher.Refresh (this.ap, this.ap.av.getSequenceSetId ());
+this.ap.av.sendSelection ();
+}}}}}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "copy_annotseqtoclipboard", 
+function (sq) {
+if (sq == null || sq.getLength () < 1) {
+return;
+}jalview.appletgui.AlignFrame.copiedSequences =  new StringBuffer ();
+jalview.appletgui.AlignFrame.copiedSequences.append (sq.getName () + "\t" + sq.getStart () + "\t" + sq.getEnd () + "\t" + sq.getSequenceAsString () + "\n");
+if (this.av.hasHiddenColumns ()) {
+jalview.appletgui.AlignFrame.copiedHiddenColumns =  new java.util.Vector ();
+for (var region, $region = this.av.getColumnSelection ().getHiddenColumns ().iterator (); $region.hasNext () && ((region = $region.next ()) || true);) {
+jalview.appletgui.AlignFrame.copiedHiddenColumns.addElement ( Clazz.newIntArray (-1, [region[0], region[1]]));
+}
+}}, "jalview.datamodel.SequenceI");
+Clazz.overrideMethod (c$, "paintComponent", 
+function (g) {
+if (this.av.getWrapAlignment () || !this.av.isShowAnnotation ()) return;
+var w = this.getSize ().width;
+var h = this.getSize ().height;
+if (this.image == null || w != this.image.getWidth (this) || h != this.image.getHeight (this)) {
+this.image = this.createImage (w, this.ap.annotationPanel.getSize ().height);
+}this.drawComponent (this.image.getGraphics (), w);
+g.drawImage (this.image, 0, 0, this);
+}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "drawComponent", 
+function (g, width) {
+g.setFont (this.av.getFont ());
+var fm = g.getFontMetrics (this.av.getFont ());
+g.setColor (java.awt.Color.white);
+g.fillRect (0, 0, this.getSize ().width, this.getSize ().height);
+g.translate (0, -this.scrollOffset);
+g.setColor (java.awt.Color.black);
+var aa = this.av.getAlignment ().getAlignmentAnnotation ();
+var y = 0;
+var fy = g.getFont ().getSize ();
+var x = 0;
+var offset;
+if (aa != null) {
+this.hasHiddenRows = false;
+for (var i = 0; i < aa.length; i++) {
+if (!aa[i].visible) {
+this.hasHiddenRows = true;
+continue;
+}x = width - fm.stringWidth (aa[i].label) - 3;
+y += aa[i].height;
+offset = Clazz.doubleToInt (-(aa[i].height - fy) / 2);
+g.drawString (aa[i].label, x, y + offset);
+}
+}g.translate (0, +this.scrollOffset);
+if (this.resizePanel) {
+g.setColor (java.awt.Color.red);
+g.setPaintMode ();
+g.drawLine (2, 8, 5, 2);
+g.drawLine (5, 2, 8, 8);
+} else if (!this.dragCancelled && this.dragEvent != null && aa != null) {
+g.setColor (java.awt.Color.lightGray);
+g.drawString (aa[this.selectedRow].label, this.dragEvent.getX (), this.dragEvent.getY ());
+}if (!this.av.getWrapAlignment () && ((aa == null) || (aa.length < 1))) {
+g.setColor (java.awt.Color.black);
+g.drawString (jalview.util.MessageManager.getString ("label.right_click"), 2, 8);
+g.drawString (jalview.util.MessageManager.getString ("label.to_add_annotation"), 2, 18);
+}}, "java.awt.Graphics,~N");
+c$.$AnnotationLabels$1$ = function () {
+Clazz.pu$h(self.c$);
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$1", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (e) {
+jalview.analysis.AlignmentUtils.showOrHideSequenceAnnotations (this.b$["jalview.appletgui.AnnotationLabels"].ap.av.getAlignment (), java.util.Collections.singleton (this.f$.label), null, false, false);
+this.b$["jalview.appletgui.AnnotationLabels"].refresh ();
+}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+c$.$AnnotationLabels$2$ = function () {
+Clazz.pu$h(self.c$);
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$2", null, java.awt.event.ItemListener);
+Clazz.overrideMethod (c$, "itemStateChanged", 
+function (e) {
+if (this.f$.aaa.groupRef != null) {
+this.f$.aaa.groupRef.setIgnoreGapsConsensus (this.f$.cbmi.getState ());
+} else {
+this.b$["jalview.appletgui.AnnotationLabels"].ap.av.setIgnoreGapsConsensus (this.f$.cbmi.getState (), this.b$["jalview.appletgui.AnnotationLabels"].ap);
+}this.b$["jalview.appletgui.AnnotationLabels"].ap.paintAlignment (true);
+}, "java.awt.event.ItemEvent");
+c$ = Clazz.p0p ();
+};
+c$.$AnnotationLabels$3$ = function () {
+Clazz.pu$h(self.c$);
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$3", null, java.awt.event.ItemListener);
+Clazz.overrideMethod (c$, "itemStateChanged", 
+function (e) {
+this.f$.aaa.groupRef.setShowConsensusHistogram (this.f$.chist.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();
+}, "java.awt.event.ItemEvent");
+c$ = Clazz.p0p ();
+};
+c$.$AnnotationLabels$4$ = function () {
+Clazz.pu$h(self.c$);
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$4", null, java.awt.event.ItemListener);
+Clazz.overrideMethod (c$, "itemStateChanged", 
+function (e) {
+this.f$.aaa.groupRef.setshowSequenceLogo (this.f$.cprofl.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();
+}, "java.awt.event.ItemEvent");
+c$ = Clazz.p0p ();
+};
+c$.$AnnotationLabels$5$ = function () {
+Clazz.pu$h(self.c$);
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$5", null, java.awt.event.ItemListener);
+Clazz.overrideMethod (c$, "itemStateChanged", 
+function (e) {
+this.f$.aaa.groupRef.setshowSequenceLogo (true);
+this.f$.aaa.groupRef.setNormaliseSequenceLogo (this.f$.cprofn.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();
+}, "java.awt.event.ItemEvent");
+c$ = Clazz.p0p ();
+};
+c$.$AnnotationLabels$6$ = function () {
+Clazz.pu$h(self.c$);
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$6", null, java.awt.event.ItemListener);
+Clazz.overrideMethod (c$, "itemStateChanged", 
+function (e) {
+this.b$["jalview.appletgui.AnnotationLabels"].av.setShowConsensusHistogram (this.f$.chist.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].ap.alignFrame.showConsensusHistogram.setState (this.f$.chist.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();
+}, "java.awt.event.ItemEvent");
+c$ = Clazz.p0p ();
+};
+c$.$AnnotationLabels$7$ = function () {
+Clazz.pu$h(self.c$);
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$7", null, java.awt.event.ItemListener);
+Clazz.overrideMethod (c$, "itemStateChanged", 
+function (e) {
+this.b$["jalview.appletgui.AnnotationLabels"].av.setShowSequenceLogo (this.f$.cprof.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].ap.alignFrame.showSequenceLogo.setState (this.f$.cprof.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();
+}, "java.awt.event.ItemEvent");
+c$ = Clazz.p0p ();
+};
+c$.$AnnotationLabels$8$ = function () {
+Clazz.pu$h(self.c$);
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$8", null, java.awt.event.ItemListener);
+Clazz.overrideMethod (c$, "itemStateChanged", 
+function (e) {
+this.b$["jalview.appletgui.AnnotationLabels"].av.setShowSequenceLogo (true);
+this.b$["jalview.appletgui.AnnotationLabels"].ap.alignFrame.normSequenceLogo.setState (this.f$.cprofn.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].av.setNormaliseSequenceLogo (this.f$.cprofn.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();
+}, "java.awt.event.ItemEvent");
+c$ = Clazz.p0p ();
+};
+Clazz.defineStatics (c$,
+"ADDNEW", "Add New Row",
+"EDITNAME", "Edit Label/Description",
+"HIDE", "Hide This Row",
+"SHOWALL", "Show All Hidden Rows",
+"OUTPUT_TEXT", "Show Values In Textbox",
+"COPYCONS_SEQ", "Copy Consensus Sequence");
+});