JAL-1807 still testing
[jalviewjs.git] / bin / jalview / appletgui / AnnotationLabels.js
index 27cabd2..195bfa5 100644 (file)
-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 ();
-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 ();
-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 ();
-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 ();
-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 ();
-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 ();
-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 ();
-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 ();
-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");
-});
+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 ();\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 ();\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 ();\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 ();\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 ();\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 ();\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 ();\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 ();\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