Merge branch 'master' of https://source.jalview.org/git/jalviewjs.git
[jalviewjs.git] / site / j2s / jalview / appletgui / ScalePanel.js
index 69ce5ea..42830b7 100644 (file)
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["awt2swing.Panel", "java.awt.event.MouseListener", "$.MouseMotionListener"], "jalview.appletgui.ScalePanel", ["awt2swing.MenuItem", "$.PopupMenu", "jalview.datamodel.SequenceGroup", "jalview.util.MessageManager", "java.awt.Color", "java.awt.event.ActionListener"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.offy = 4;\r
-this.$width = 0;\r
-this.av = null;\r
-this.ap = null;\r
-this.stretchingGroup = false;\r
-this.min = 0;\r
-this.max = 0;\r
-this.mouseDragging = false;\r
-this.reveal = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "ScalePanel", awt2swing.Panel, [java.awt.event.MouseMotionListener, java.awt.event.MouseListener]);\r
-Clazz.makeConstructor (c$, \r
-function (av, ap) {\r
-Clazz.superConstructor (this, jalview.appletgui.ScalePanel, []);\r
-this.setName ("scalePanel");\r
-this.setLayout (null);\r
-this.av = av;\r
-this.ap = ap;\r
-this.addMouseListener (this);\r
-this.addMouseMotionListener (this);\r
-}, "jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");\r
-Clazz.overrideMethod (c$, "mousePressed", \r
-function (evt) {\r
-var x = (Clazz.doubleToInt (evt.getX () / this.av.getCharWidth ())) + this.av.getStartRes ();\r
-var res;\r
-if (this.av.hasHiddenColumns ()) {\r
-res = this.av.getColumnSelection ().adjustForHiddenColumns (x);\r
-} else {\r
-res = x;\r
-}this.min = res;\r
-this.max = res;\r
-if ((evt.getModifiers () & 4) == 4) {\r
-var pop =  new awt2swing.PopupMenu ();\r
-if (this.reveal != null) {\r
-var item =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.reveal"));\r
-item.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.ScalePanel$1") ? 0 : jalview.appletgui.ScalePanel.$ScalePanel$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.ScalePanel$1, this, null)));\r
-pop.add (item);\r
-if (this.av.getColumnSelection ().hasManyHiddenColumns ()) {\r
-item =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("action.reveal_all"));\r
-item.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.ScalePanel$2") ? 0 : jalview.appletgui.ScalePanel.$ScalePanel$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.ScalePanel$2, this, null)));\r
-pop.add (item);\r
-}this.add (pop);\r
-pop.show (this, evt.getX (), evt.getY ());\r
-} else if (this.av.getColumnSelection ().contains (res)) {\r
-var item =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.hide_columns"));\r
-item.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.ScalePanel$3") ? 0 : jalview.appletgui.ScalePanel.$ScalePanel$3$ ()), Clazz.innerTypeInstance (jalview.appletgui.ScalePanel$3, this, Clazz.cloneFinals ("res", res))));\r
-pop.add (item);\r
-this.add (pop);\r
-pop.show (this, evt.getX (), evt.getY ());\r
-}} else {\r
-if (!evt.isControlDown () && !evt.isShiftDown ()) {\r
-this.av.getColumnSelection ().clear ();\r
-}this.av.getColumnSelection ().addElement (res);\r
-var sg =  new jalview.datamodel.SequenceGroup ();\r
-for (var i = 0; i < this.av.getAlignment ().getSequences ().size (); i++) {\r
-sg.addSequence (this.av.getAlignment ().getSequenceAt (i), false);\r
-}\r
-sg.setStartRes (res);\r
-sg.setEndRes (res);\r
-this.av.setSelectionGroup (sg);\r
-if (evt.isShiftDown ()) {\r
-var min = Math.min (this.av.getColumnSelection ().getMin (), res);\r
-var max = Math.max (this.av.getColumnSelection ().getMax (), res);\r
-for (var i = min; i < max; i++) {\r
-this.av.getColumnSelection ().addElement (i);\r
-}\r
-sg.setStartRes (min);\r
-sg.setEndRes (max);\r
-}}this.ap.paintAlignment (true);\r
-this.av.sendSelection ();\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseReleased", \r
-function (evt) {\r
-this.mouseDragging = false;\r
-var res = (Clazz.doubleToInt (evt.getX () / this.av.getCharWidth ())) + this.av.getStartRes ();\r
-if (res > this.av.getAlignment ().getWidth ()) {\r
-res = this.av.getAlignment ().getWidth () - 1;\r
-}if (this.av.hasHiddenColumns ()) {\r
-res = this.av.getColumnSelection ().adjustForHiddenColumns (res);\r
-}if (!this.stretchingGroup) {\r
-this.ap.paintAlignment (false);\r
-return;\r
-}var sg = this.av.getSelectionGroup ();\r
-if (res > sg.getStartRes ()) {\r
-sg.setEndRes (res);\r
-} else if (res < sg.getStartRes ()) {\r
-sg.setStartRes (res);\r
-}this.stretchingGroup = false;\r
-this.ap.paintAlignment (false);\r
-this.av.sendSelection ();\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseDragged", \r
-function (evt) {\r
-this.mouseDragging = true;\r
-var res = (Clazz.doubleToInt (evt.getX () / this.av.getCharWidth ())) + this.av.getStartRes ();\r
-if (res < 0) {\r
-res = 0;\r
-}if (this.av.hasHiddenColumns ()) {\r
-res = this.av.getColumnSelection ().adjustForHiddenColumns (res);\r
-}if (res > this.av.getAlignment ().getWidth ()) {\r
-res = this.av.getAlignment ().getWidth () - 1;\r
-}if (res < this.min) {\r
-this.min = res;\r
-}if (res > this.max) {\r
-this.max = res;\r
-}var sg = this.av.getSelectionGroup ();\r
-if (sg != null) {\r
-this.stretchingGroup = true;\r
-if (!this.av.getColumnSelection ().contains (res)) {\r
-this.av.getColumnSelection ().addElement (res);\r
-}if (res > sg.getStartRes ()) {\r
-sg.setEndRes (res);\r
-}if (res < sg.getStartRes ()) {\r
-sg.setStartRes (res);\r
-}var col;\r
-for (var i = this.min; i <= this.max; i++) {\r
-col = this.av.getColumnSelection ().adjustForHiddenColumns (i);\r
-if ((col < sg.getStartRes ()) || (col > sg.getEndRes ())) {\r
-this.av.getColumnSelection ().removeElement (col);\r
-} else {\r
-this.av.getColumnSelection ().addElement (col);\r
-}}\r
-this.ap.paintAlignment (false);\r
-}}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseEntered", \r
-function (evt) {\r
-if (this.mouseDragging) {\r
-this.ap.seqPanel.scrollCanvas (null);\r
-}}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseExited", \r
-function (evt) {\r
-if (this.mouseDragging) {\r
-this.ap.seqPanel.scrollCanvas (evt);\r
-}}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseClicked", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseMoved", \r
-function (evt) {\r
-if (!this.av.hasHiddenColumns ()) {\r
-return;\r
-}var res = (Clazz.doubleToInt (evt.getX () / this.av.getCharWidth ())) + this.av.getStartRes ();\r
-res = this.av.getColumnSelection ().adjustForHiddenColumns (res);\r
-this.reveal = null;\r
-for (var region, $region = this.av.getColumnSelection ().getHiddenColumns ().iterator (); $region.hasNext () && ((region = $region.next ()) || true);) {\r
-if (res + 1 == region[0] || res - 1 == region[1]) {\r
-this.reveal = region;\r
-break;\r
-}}\r
-this.repaint ();\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "paintComponent", \r
-function (g) {\r
-if (this.av.getWrapAlignment ()) return;\r
-this.drawScale (g, this.av.getStartRes (), this.av.getEndRes (), this.getSize ().width, this.getSize ().height);\r
-}, "java.awt.Graphics");\r
-Clazz.defineMethod (c$, "drawScale", \r
-function (gg, startx, endx, width, height) {\r
-gg.setFont (this.av.getFont ());\r
-gg.setColor (java.awt.Color.white);\r
-gg.fillRect (0, 0, width, height);\r
-gg.setColor (java.awt.Color.black);\r
-var cs = this.av.getColumnSelection ();\r
-gg.setColor ( new java.awt.Color (220, 0, 0));\r
-var avcharWidth = this.av.getCharWidth ();\r
-var avcharHeight = this.av.getCharHeight ();\r
-for (var i = 0; i < cs.size (); i++) {\r
-var sel = cs.columnAt (i);\r
-if (this.av.hasHiddenColumns ()) {\r
-sel = this.av.getColumnSelection ().findColumnPosition (sel);\r
-}if ((sel >= startx) && (sel <= endx)) {\r
-gg.fillRect ((sel - startx) * avcharWidth, 0, avcharWidth, this.getSize ().height);\r
-}}\r
-gg.setColor (java.awt.Color.black);\r
-var scalestartx = (Clazz.doubleToInt (startx / 10)) * 10;\r
-var fm = gg.getFontMetrics (this.av.getFont ());\r
-var y = avcharHeight - fm.getDescent ();\r
-if ((scalestartx % 10) == 0) {\r
-scalestartx += 5;\r
-}var string;\r
-var maxX = 0;\r
-for (var i = scalestartx; i < endx; i += 5) {\r
-if ((i % 10) == 0) {\r
-string = String.valueOf (this.av.getColumnSelection ().adjustForHiddenColumns (i));\r
-if ((i - startx - 1) * avcharWidth > maxX) {\r
-gg.drawString (string, (i - startx - 1) * avcharWidth, y);\r
-maxX = (i - startx + 1) * avcharWidth + fm.stringWidth (string);\r
-}gg.drawLine (((i - startx - 1) * avcharWidth) + (Clazz.doubleToInt (avcharWidth / 2)), y + 2, ((i - startx - 1) * avcharWidth) + (Clazz.doubleToInt (avcharWidth / 2)), y + (fm.getDescent () * 2));\r
-} else {\r
-gg.drawLine (((i - startx - 1) * avcharWidth) + (Clazz.doubleToInt (avcharWidth / 2)), y + fm.getDescent (), ((i - startx - 1) * avcharWidth) + (Clazz.doubleToInt (avcharWidth / 2)), y + (fm.getDescent () * 2));\r
-}}\r
-if (this.av.hasHiddenColumns ()) {\r
-gg.setColor (java.awt.Color.blue);\r
-var res;\r
-if (this.av.getShowHiddenMarkers ()) {\r
-for (var i = 0; i < this.av.getColumnSelection ().getHiddenColumns ().size (); i++) {\r
-res = this.av.getColumnSelection ().findHiddenRegionPosition (i) - startx;\r
-if (res < 0 || res > endx - scalestartx) {\r
-continue;\r
-}gg.fillPolygon ( Clazz.newIntArray (-1, [res * avcharWidth - Clazz.doubleToInt (avcharHeight / 4), res * avcharWidth + Clazz.doubleToInt (avcharHeight / 4), res * avcharWidth]),  Clazz.newIntArray (-1, [y - Clazz.doubleToInt (avcharHeight / 2), y - Clazz.doubleToInt (avcharHeight / 2), y + 8]), 3);\r
-}\r
-}if (this.reveal != null && this.reveal[0] > startx && this.reveal[0] < endx) {\r
-gg.drawString (jalview.util.MessageManager.getString ("label.reveal_columns"), this.reveal[0] * avcharWidth, 0);\r
-}}}, "java.awt.Graphics,~N,~N,~N,~N");\r
-c$.$ScalePanel$1$ = function () {\r
-Clazz.pu$h(self.c$);\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "ScalePanel$1", null, java.awt.event.ActionListener);\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (e) {\r
-this.b$["jalview.appletgui.ScalePanel"].av.showColumn (this.b$["jalview.appletgui.ScalePanel"].reveal[0]);\r
-this.b$["jalview.appletgui.ScalePanel"].reveal = null;\r
-this.b$["jalview.appletgui.ScalePanel"].ap.paintAlignment (true);\r
-if (this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel != null) {\r
-this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel.updateOverviewImage ();\r
-}}, "java.awt.event.ActionEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$ScalePanel$2$ = function () {\r
-Clazz.pu$h(self.c$);\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "ScalePanel$2", null, java.awt.event.ActionListener);\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (e) {\r
-this.b$["jalview.appletgui.ScalePanel"].av.showAllHiddenColumns ();\r
-this.b$["jalview.appletgui.ScalePanel"].reveal = null;\r
-this.b$["jalview.appletgui.ScalePanel"].ap.paintAlignment (true);\r
-if (this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel != null) {\r
-this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel.updateOverviewImage ();\r
-}}, "java.awt.event.ActionEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$ScalePanel$3$ = function () {\r
-Clazz.pu$h(self.c$);\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "ScalePanel$3", null, java.awt.event.ActionListener);\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (e) {\r
-this.b$["jalview.appletgui.ScalePanel"].av.hideColumns (this.f$.res, this.f$.res);\r
-if (this.b$["jalview.appletgui.ScalePanel"].av.getSelectionGroup () != null && this.b$["jalview.appletgui.ScalePanel"].av.getSelectionGroup ().getSize () == this.b$["jalview.appletgui.ScalePanel"].av.getAlignment ().getHeight ()) {\r
-this.b$["jalview.appletgui.ScalePanel"].av.setSelectionGroup (null);\r
-}this.b$["jalview.appletgui.ScalePanel"].ap.paintAlignment (true);\r
-if (this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel != null) {\r
-this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel.updateOverviewImage ();\r
-}}, "java.awt.event.ActionEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "java.awt.event.MouseListener", "$.MouseMotionListener"], "jalview.appletgui.ScalePanel", ["awt2swing.MenuItem", "$.PopupMenu", "jalview.datamodel.SequenceGroup", "jalview.util.MessageManager", "java.awt.Color", "java.awt.event.ActionListener"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.offy = 4;
+this.$width = 0;
+this.av = null;
+this.ap = null;
+this.stretchingGroup = false;
+this.min = 0;
+this.max = 0;
+this.mouseDragging = false;
+this.reveal = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "ScalePanel", awt2swing.Panel, [java.awt.event.MouseMotionListener, java.awt.event.MouseListener]);
+Clazz.makeConstructor (c$, 
+function (av, ap) {
+Clazz.superConstructor (this, jalview.appletgui.ScalePanel, []);
+this.setName ("scalePanel");
+this.setLayout (null);
+this.av = av;
+this.ap = ap;
+this.addMouseListener (this);
+this.addMouseMotionListener (this);
+}, "jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");
+Clazz.overrideMethod (c$, "mousePressed", 
+function (evt) {
+var x = (Clazz.doubleToInt (evt.getX () / this.av.getCharWidth ())) + this.av.getStartRes ();
+var res;
+if (this.av.hasHiddenColumns ()) {
+res = this.av.getColumnSelection ().adjustForHiddenColumns (x);
+} else {
+res = x;
+}this.min = res;
+this.max = res;
+if ((evt.getModifiers () & 4) == 4) {
+var pop =  new awt2swing.PopupMenu ();
+if (this.reveal != null) {
+var item =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.reveal"));
+item.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.ScalePanel$1") ? 0 : jalview.appletgui.ScalePanel.$ScalePanel$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.ScalePanel$1, this, null)));
+pop.add (item);
+if (this.av.getColumnSelection ().hasManyHiddenColumns ()) {
+item =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("action.reveal_all"));
+item.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.ScalePanel$2") ? 0 : jalview.appletgui.ScalePanel.$ScalePanel$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.ScalePanel$2, this, null)));
+pop.add (item);
+}this.add (pop);
+pop.show (this, evt.getX (), evt.getY ());
+} else if (this.av.getColumnSelection ().contains (res)) {
+var item =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.hide_columns"));
+item.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.ScalePanel$3") ? 0 : jalview.appletgui.ScalePanel.$ScalePanel$3$ ()), Clazz.innerTypeInstance (jalview.appletgui.ScalePanel$3, this, Clazz.cloneFinals ("res", res))));
+pop.add (item);
+this.add (pop);
+pop.show (this, evt.getX (), evt.getY ());
+}} else {
+if (!evt.isControlDown () && !evt.isShiftDown ()) {
+this.av.getColumnSelection ().clear ();
+}this.av.getColumnSelection ().addElement (res);
+var sg =  new jalview.datamodel.SequenceGroup ();
+for (var i = 0; i < this.av.getAlignment ().getSequences ().size (); i++) {
+sg.addSequence (this.av.getAlignment ().getSequenceAt (i), false);
+}
+sg.setStartRes (res);
+sg.setEndRes (res);
+this.av.setSelectionGroup (sg);
+if (evt.isShiftDown ()) {
+var min = Math.min (this.av.getColumnSelection ().getMin (), res);
+var max = Math.max (this.av.getColumnSelection ().getMax (), res);
+for (var i = min; i < max; i++) {
+this.av.getColumnSelection ().addElement (i);
+}
+sg.setStartRes (min);
+sg.setEndRes (max);
+}}this.ap.paintAlignment (true);
+this.av.sendSelection ();
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseReleased", 
+function (evt) {
+this.mouseDragging = false;
+var res = (Clazz.doubleToInt (evt.getX () / this.av.getCharWidth ())) + this.av.getStartRes ();
+if (res > this.av.getAlignment ().getWidth ()) {
+res = this.av.getAlignment ().getWidth () - 1;
+}if (this.av.hasHiddenColumns ()) {
+res = this.av.getColumnSelection ().adjustForHiddenColumns (res);
+}if (!this.stretchingGroup) {
+this.ap.paintAlignment (false);
+return;
+}var sg = this.av.getSelectionGroup ();
+if (res > sg.getStartRes ()) {
+sg.setEndRes (res);
+} else if (res < sg.getStartRes ()) {
+sg.setStartRes (res);
+}this.stretchingGroup = false;
+this.ap.paintAlignment (false);
+this.av.sendSelection ();
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseDragged", 
+function (evt) {
+this.mouseDragging = true;
+var res = (Clazz.doubleToInt (evt.getX () / this.av.getCharWidth ())) + this.av.getStartRes ();
+if (res < 0) {
+res = 0;
+}if (this.av.hasHiddenColumns ()) {
+res = this.av.getColumnSelection ().adjustForHiddenColumns (res);
+}if (res > this.av.getAlignment ().getWidth ()) {
+res = this.av.getAlignment ().getWidth () - 1;
+}if (res < this.min) {
+this.min = res;
+}if (res > this.max) {
+this.max = res;
+}var sg = this.av.getSelectionGroup ();
+if (sg != null) {
+this.stretchingGroup = true;
+if (!this.av.getColumnSelection ().contains (res)) {
+this.av.getColumnSelection ().addElement (res);
+}if (res > sg.getStartRes ()) {
+sg.setEndRes (res);
+}if (res < sg.getStartRes ()) {
+sg.setStartRes (res);
+}var col;
+for (var i = this.min; i <= this.max; i++) {
+col = this.av.getColumnSelection ().adjustForHiddenColumns (i);
+if ((col < sg.getStartRes ()) || (col > sg.getEndRes ())) {
+this.av.getColumnSelection ().removeElement (col);
+} else {
+this.av.getColumnSelection ().addElement (col);
+}}
+this.ap.paintAlignment (false);
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseEntered", 
+function (evt) {
+if (this.mouseDragging) {
+this.ap.seqPanel.scrollCanvas (null);
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseExited", 
+function (evt) {
+if (this.mouseDragging) {
+this.ap.seqPanel.scrollCanvas (evt);
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseClicked", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseMoved", 
+function (evt) {
+if (!this.av.hasHiddenColumns ()) {
+return;
+}var res = (Clazz.doubleToInt (evt.getX () / this.av.getCharWidth ())) + this.av.getStartRes ();
+res = this.av.getColumnSelection ().adjustForHiddenColumns (res);
+this.reveal = null;
+for (var region, $region = this.av.getColumnSelection ().getHiddenColumns ().iterator (); $region.hasNext () && ((region = $region.next ()) || true);) {
+if (res + 1 == region[0] || res - 1 == region[1]) {
+this.reveal = region;
+break;
+}}
+this.repaint ();
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "paintComponent", 
+function (g) {
+if (this.av.getWrapAlignment ()) return;
+this.drawScale (g, this.av.getStartRes (), this.av.getEndRes (), this.getSize ().width, this.getSize ().height);
+}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "drawScale", 
+function (gg, startx, endx, width, height) {
+gg.setFont (this.av.getFont ());
+gg.setColor (java.awt.Color.white);
+gg.fillRect (0, 0, width, height);
+gg.setColor (java.awt.Color.black);
+var cs = this.av.getColumnSelection ();
+gg.setColor ( new java.awt.Color (220, 0, 0));
+var avcharWidth = this.av.getCharWidth ();
+var avcharHeight = this.av.getCharHeight ();
+for (var i = 0; i < cs.size (); i++) {
+var sel = cs.columnAt (i);
+if (this.av.hasHiddenColumns ()) {
+sel = this.av.getColumnSelection ().findColumnPosition (sel);
+}if ((sel >= startx) && (sel <= endx)) {
+gg.fillRect ((sel - startx) * avcharWidth, 0, avcharWidth, this.getSize ().height);
+}}
+gg.setColor (java.awt.Color.black);
+var scalestartx = (Clazz.doubleToInt (startx / 10)) * 10;
+var fm = gg.getFontMetrics (this.av.getFont ());
+var y = avcharHeight - fm.getDescent ();
+if ((scalestartx % 10) == 0) {
+scalestartx += 5;
+}var string;
+var maxX = 0;
+for (var i = scalestartx; i < endx; i += 5) {
+if ((i % 10) == 0) {
+string = String.valueOf (this.av.getColumnSelection ().adjustForHiddenColumns (i));
+if ((i - startx - 1) * avcharWidth > maxX) {
+gg.drawString (string, (i - startx - 1) * avcharWidth, y);
+maxX = (i - startx + 1) * avcharWidth + fm.stringWidth (string);
+}gg.drawLine (((i - startx - 1) * avcharWidth) + (Clazz.doubleToInt (avcharWidth / 2)), y + 2, ((i - startx - 1) * avcharWidth) + (Clazz.doubleToInt (avcharWidth / 2)), y + (fm.getDescent () * 2));
+} else {
+gg.drawLine (((i - startx - 1) * avcharWidth) + (Clazz.doubleToInt (avcharWidth / 2)), y + fm.getDescent (), ((i - startx - 1) * avcharWidth) + (Clazz.doubleToInt (avcharWidth / 2)), y + (fm.getDescent () * 2));
+}}
+if (this.av.hasHiddenColumns ()) {
+gg.setColor (java.awt.Color.blue);
+var res;
+if (this.av.getShowHiddenMarkers ()) {
+for (var i = 0; i < this.av.getColumnSelection ().getHiddenColumns ().size (); i++) {
+res = this.av.getColumnSelection ().findHiddenRegionPosition (i) - startx;
+if (res < 0 || res > endx - scalestartx) {
+continue;
+}gg.fillPolygon ( Clazz.newIntArray (-1, [res * avcharWidth - Clazz.doubleToInt (avcharHeight / 4), res * avcharWidth + Clazz.doubleToInt (avcharHeight / 4), res * avcharWidth]),  Clazz.newIntArray (-1, [y - Clazz.doubleToInt (avcharHeight / 2), y - Clazz.doubleToInt (avcharHeight / 2), y + 8]), 3);
+}
+}if (this.reveal != null && this.reveal[0] > startx && this.reveal[0] < endx) {
+gg.drawString (jalview.util.MessageManager.getString ("label.reveal_columns"), this.reveal[0] * avcharWidth, 0);
+}}}, "java.awt.Graphics,~N,~N,~N,~N");
+c$.$ScalePanel$1$ = function () {
+Clazz.pu$h(self.c$);
+c$ = Clazz.declareAnonymous (jalview.appletgui, "ScalePanel$1", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (e) {
+this.b$["jalview.appletgui.ScalePanel"].av.showColumn (this.b$["jalview.appletgui.ScalePanel"].reveal[0]);
+this.b$["jalview.appletgui.ScalePanel"].reveal = null;
+this.b$["jalview.appletgui.ScalePanel"].ap.paintAlignment (true);
+if (this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel != null) {
+this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel.updateOverviewImage ();
+}}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+c$.$ScalePanel$2$ = function () {
+Clazz.pu$h(self.c$);
+c$ = Clazz.declareAnonymous (jalview.appletgui, "ScalePanel$2", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (e) {
+this.b$["jalview.appletgui.ScalePanel"].av.showAllHiddenColumns ();
+this.b$["jalview.appletgui.ScalePanel"].reveal = null;
+this.b$["jalview.appletgui.ScalePanel"].ap.paintAlignment (true);
+if (this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel != null) {
+this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel.updateOverviewImage ();
+}}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+c$.$ScalePanel$3$ = function () {
+Clazz.pu$h(self.c$);
+c$ = Clazz.declareAnonymous (jalview.appletgui, "ScalePanel$3", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (e) {
+this.b$["jalview.appletgui.ScalePanel"].av.hideColumns (this.f$.res, this.f$.res);
+if (this.b$["jalview.appletgui.ScalePanel"].av.getSelectionGroup () != null && this.b$["jalview.appletgui.ScalePanel"].av.getSelectionGroup ().getSize () == this.b$["jalview.appletgui.ScalePanel"].av.getAlignment ().getHeight ()) {
+this.b$["jalview.appletgui.ScalePanel"].av.setSelectionGroup (null);
+}this.b$["jalview.appletgui.ScalePanel"].ap.paintAlignment (true);
+if (this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel != null) {
+this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel.updateOverviewImage ();
+}}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+});