Merge branch 'master' of https://source.jalview.org/git/jalviewjs.git
[jalviewjs.git] / site / j2s / jalview / util / TableSorter.js
index 9a7a6bd..f211ef6 100644 (file)
-Clazz.declarePackage ("jalview.util");\r
-Clazz.load (["java.awt.event.MouseAdapter", "javax.swing.Icon", "javax.swing.event.TableModelListener", "javax.swing.table.AbstractTableModel", "$.TableCellRenderer", "java.util.ArrayList", "$.HashMap"], "jalview.util.TableSorter", ["java.awt.Color", "java.util.Arrays", "javax.swing.JLabel", "javax.swing.event.TableModelEvent"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.tableModel = null;\r
-this.viewToModel = null;\r
-this.modelToView = null;\r
-this.tableHeader = null;\r
-this.mouseListener = null;\r
-this.tableModelListener = null;\r
-this.columnComparators = null;\r
-this.sortingColumns = null;\r
-if (!Clazz.isClassDefined ("jalview.util.TableSorter.Row")) {\r
-jalview.util.TableSorter.$TableSorter$Row$ ();\r
-}\r
-if (!Clazz.isClassDefined ("jalview.util.TableSorter.TableModelHandler")) {\r
-jalview.util.TableSorter.$TableSorter$TableModelHandler$ ();\r
-}\r
-if (!Clazz.isClassDefined ("jalview.util.TableSorter.MouseHandler")) {\r
-jalview.util.TableSorter.$TableSorter$MouseHandler$ ();\r
-}\r
-if (!Clazz.isClassDefined ("jalview.util.TableSorter.SortableHeaderRenderer")) {\r
-jalview.util.TableSorter.$TableSorter$SortableHeaderRenderer$ ();\r
-}\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.util, "TableSorter", javax.swing.table.AbstractTableModel);\r
-Clazz.prepareFields (c$, function () {\r
-this.columnComparators =  new java.util.HashMap ();\r
-this.sortingColumns =  new java.util.ArrayList ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, jalview.util.TableSorter, []);\r
-this.mouseListener = Clazz.innerTypeInstance (jalview.util.TableSorter.MouseHandler, this, null);\r
-this.tableModelListener = Clazz.innerTypeInstance (jalview.util.TableSorter.TableModelHandler, this, null);\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (tableModel) {\r
-this.construct ();\r
-this.setTableModel (tableModel);\r
-}, "javax.swing.table.TableModel");\r
-Clazz.makeConstructor (c$, \r
-function (tableModel, tableHeader) {\r
-this.construct ();\r
-this.setTableHeader (tableHeader);\r
-this.setTableModel (tableModel);\r
-}, "javax.swing.table.TableModel,javax.swing.table.JTableHeader");\r
-Clazz.defineMethod (c$, "clearSortingState", \r
- function () {\r
-this.viewToModel = null;\r
-this.modelToView = null;\r
-});\r
-Clazz.defineMethod (c$, "getTableModel", \r
-function () {\r
-return this.tableModel;\r
-});\r
-Clazz.defineMethod (c$, "setTableModel", \r
-function (tableModel) {\r
-if (this.tableModel != null) {\r
-this.tableModel.removeTableModelListener (this.tableModelListener);\r
-}this.tableModel = tableModel;\r
-if (this.tableModel != null) {\r
-this.tableModel.addTableModelListener (this.tableModelListener);\r
-}this.clearSortingState ();\r
-this.fireTableStructureChanged ();\r
-}, "javax.swing.table.TableModel");\r
-Clazz.defineMethod (c$, "getTableHeader", \r
-function () {\r
-return this.tableHeader;\r
-});\r
-Clazz.defineMethod (c$, "setTableHeader", \r
-function (tableHeader) {\r
-if (this.tableHeader != null) {\r
-this.tableHeader.removeMouseListener (this.mouseListener);\r
-var defaultRenderer = this.tableHeader.getDefaultRenderer ();\r
-if (Clazz.instanceOf (defaultRenderer, jalview.util.TableSorter.SortableHeaderRenderer)) {\r
-this.tableHeader.setDefaultRenderer ((defaultRenderer).tableCellRenderer);\r
-}}this.tableHeader = tableHeader;\r
-if (this.tableHeader != null) {\r
-this.tableHeader.addMouseListener (this.mouseListener);\r
-this.tableHeader.setDefaultRenderer (Clazz.innerTypeInstance (jalview.util.TableSorter.SortableHeaderRenderer, this, null, this.tableHeader.getDefaultRenderer ()));\r
-}}, "javax.swing.table.JTableHeader");\r
-Clazz.defineMethod (c$, "isSorting", \r
-function () {\r
-return this.sortingColumns.size () != 0;\r
-});\r
-Clazz.defineMethod (c$, "getDirective", \r
- function (column) {\r
-for (var i = 0; i < this.sortingColumns.size (); i++) {\r
-var directive = this.sortingColumns.get (i);\r
-if (directive.column == column) {\r
-return directive;\r
-}}\r
-return jalview.util.TableSorter.EMPTY_DIRECTIVE;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getSortingStatus", \r
-function (column) {\r
-return this.getDirective (column).direction;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "sortingStatusChanged", \r
- function () {\r
-this.clearSortingState ();\r
-this.fireTableDataChanged ();\r
-if (this.tableHeader != null) {\r
-this.tableHeader.repaint ();\r
-}});\r
-Clazz.defineMethod (c$, "setSortingStatus", \r
-function (column, status) {\r
-var directive = this.getDirective (column);\r
-if (directive !== jalview.util.TableSorter.EMPTY_DIRECTIVE) {\r
-this.sortingColumns.remove (directive);\r
-}if (status != 0) {\r
-this.sortingColumns.add ( new jalview.util.TableSorter.Directive (column, status));\r
-}this.sortingStatusChanged ();\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "getHeaderRendererIcon", \r
-function (column, size) {\r
-var directive = this.getDirective (column);\r
-if (directive === jalview.util.TableSorter.EMPTY_DIRECTIVE) {\r
-return null;\r
-}return  new jalview.util.TableSorter.Arrow (directive.direction == -1, size, this.sortingColumns.indexOf (directive));\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "cancelSorting", \r
- function () {\r
-this.sortingColumns.clear ();\r
-this.sortingStatusChanged ();\r
-});\r
-Clazz.defineMethod (c$, "setColumnComparator", \r
-function (type, comparator) {\r
-if (comparator == null) {\r
-this.columnComparators.remove (type);\r
-} else {\r
-this.columnComparators.put (type, comparator);\r
-}}, "Class,java.util.Comparator");\r
-Clazz.defineMethod (c$, "getComparator", \r
-function (column) {\r
-var columnType = this.tableModel.getColumnClass (column);\r
-var comparator = this.columnComparators.get (columnType);\r
-if (comparator != null) {\r
-return comparator;\r
-}if (Comparable.isAssignableFrom (columnType)) {\r
-return jalview.util.TableSorter.COMPARABLE_COMAPRATOR;\r
-}return jalview.util.TableSorter.LEXICAL_COMPARATOR;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getViewToModel", \r
- function () {\r
-if (this.viewToModel == null) {\r
-var tableModelRowCount = this.tableModel.getRowCount ();\r
-this.viewToModel =  new Array (tableModelRowCount);\r
-for (var row = 0; row < tableModelRowCount; row++) {\r
-this.viewToModel[row] = Clazz.innerTypeInstance (jalview.util.TableSorter.Row, this, null, row);\r
-}\r
-if (this.isSorting ()) {\r
-java.util.Arrays.sort (this.viewToModel);\r
-}}return this.viewToModel;\r
-});\r
-Clazz.defineMethod (c$, "modelIndex", \r
-function (viewIndex) {\r
-return this.getViewToModel ()[viewIndex].modelIndex;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getModelToView", \r
- function () {\r
-if (this.modelToView == null) {\r
-var n = this.getViewToModel ().length;\r
-this.modelToView =  Clazz.newIntArray (n, 0);\r
-for (var i = 0; i < n; i++) {\r
-this.modelToView[this.modelIndex (i)] = i;\r
-}\r
-}return this.modelToView;\r
-});\r
-Clazz.defineMethod (c$, "getRowCount", \r
-function () {\r
-return (this.tableModel == null) ? 0 : this.tableModel.getRowCount ();\r
-});\r
-Clazz.defineMethod (c$, "getColumnCount", \r
-function () {\r
-return (this.tableModel == null) ? 0 : this.tableModel.getColumnCount ();\r
-});\r
-Clazz.overrideMethod (c$, "getColumnName", \r
-function (column) {\r
-return this.tableModel.getColumnName (column);\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "getColumnClass", \r
-function (column) {\r
-return this.tableModel.getColumnClass (column);\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "isCellEditable", \r
-function (row, column) {\r
-return this.tableModel.isCellEditable (this.modelIndex (row), column);\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "getValueAt", \r
-function (row, column) {\r
-return this.tableModel.getValueAt (this.modelIndex (row), column);\r
-}, "~N,~N");\r
-Clazz.overrideMethod (c$, "setValueAt", \r
-function (aValue, row, column) {\r
-this.tableModel.setValueAt (aValue, this.modelIndex (row), column);\r
-}, "~O,~N,~N");\r
-c$.$TableSorter$Row$ = function () {\r
-Clazz.pu$h(self.c$);\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-this.modelIndex = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.util.TableSorter, "Row", null, Comparable);\r
-Clazz.makeConstructor (c$, \r
-function (a) {\r
-this.modelIndex = a;\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "compareTo", \r
-function (a) {\r
-var b = this.modelIndex;\r
-var c = (a).modelIndex;\r
-for (var d = this.b$["jalview.util.TableSorter"].sortingColumns.iterator (); d.hasNext (); ) {\r
-var e = d.next ();\r
-var f = e.column;\r
-var g = this.b$["jalview.util.TableSorter"].tableModel.getValueAt (b, f);\r
-var h = this.b$["jalview.util.TableSorter"].tableModel.getValueAt (c, f);\r
-var i = 0;\r
-if (g == null && h == null) {\r
-i = 0;\r
-} else if (g == null) {\r
-i = -1;\r
-} else if (h == null) {\r
-i = 1;\r
-} else {\r
-i = this.b$["jalview.util.TableSorter"].getComparator (f).compare (g, h);\r
-}if (i != 0) {\r
-return e.direction == -1 ? -i : i;\r
-}}\r
-return 0;\r
-}, "~O");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$TableSorter$TableModelHandler$ = function () {\r
-Clazz.pu$h(self.c$);\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.util.TableSorter, "TableModelHandler", null, javax.swing.event.TableModelListener);\r
-Clazz.overrideMethod (c$, "tableChanged", \r
-function (a) {\r
-if (!this.b$["jalview.util.TableSorter"].isSorting ()) {\r
-this.b$["jalview.util.TableSorter"].clearSortingState ();\r
-this.b$["jalview.util.TableSorter"].fireTableChanged (a);\r
-return;\r
-}if (a.getFirstRow () == -1) {\r
-this.b$["jalview.util.TableSorter"].cancelSorting ();\r
-this.b$["jalview.util.TableSorter"].fireTableChanged (a);\r
-return;\r
-}var b = a.getColumn ();\r
-if (a.getFirstRow () == a.getLastRow () && b != -1 && this.b$["jalview.util.TableSorter"].getSortingStatus (b) == 0 && this.b$["jalview.util.TableSorter"].modelToView != null) {\r
-var c = this.b$["jalview.util.TableSorter"].getModelToView ()[a.getFirstRow ()];\r
-this.b$["jalview.util.TableSorter"].fireTableChanged ( new javax.swing.event.TableModelEvent (this.b$["jalview.util.TableSorter"], c, c, b, a.getType ()));\r
-return;\r
-}this.b$["jalview.util.TableSorter"].clearSortingState ();\r
-this.b$["jalview.util.TableSorter"].fireTableDataChanged ();\r
-return;\r
-}, "javax.swing.event.TableModelEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$TableSorter$MouseHandler$ = function () {\r
-Clazz.pu$h(self.c$);\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.util.TableSorter, "MouseHandler", java.awt.event.MouseAdapter);\r
-Clazz.overrideMethod (c$, "mouseClicked", \r
-function (a) {\r
-var b = a.getSource ();\r
-var c = b.getColumnModel ();\r
-var d = c.getColumnIndexAtX (a.getX ());\r
-var e = c.getColumn (d).getModelIndex ();\r
-if (e != -1) {\r
-var f = this.b$["jalview.util.TableSorter"].getSortingStatus (e);\r
-if (!a.isControlDown ()) {\r
-this.b$["jalview.util.TableSorter"].cancelSorting ();\r
-}f = f + (a.isShiftDown () ? -1 : 1);\r
-f = (f + 4) % 3 - 1;\r
-this.b$["jalview.util.TableSorter"].setSortingStatus (e, f);\r
-}}, "java.awt.event.MouseEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$TableSorter$SortableHeaderRenderer$ = function () {\r
-Clazz.pu$h(self.c$);\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-this.tableCellRenderer = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.util.TableSorter, "SortableHeaderRenderer", null, javax.swing.table.TableCellRenderer);\r
-Clazz.makeConstructor (c$, \r
-function (a) {\r
-this.tableCellRenderer = a;\r
-}, "javax.swing.table.TableCellRenderer");\r
-Clazz.defineMethod (c$, "getTableCellRendererComponent", \r
-function (a, b, c, d, e, f) {\r
-var g = this.tableCellRenderer.getTableCellRendererComponent (a, b, c, d, e, f);\r
-if (Clazz.instanceOf (g, javax.swing.JLabel)) {\r
-var h = g;\r
-h.setHorizontalTextPosition (2);\r
-var i = a.convertColumnIndexToModel (f);\r
-h.setIcon (this.b$["jalview.util.TableSorter"].getHeaderRendererIcon (i, h.getFont ().getSize ()));\r
-}return g;\r
-}, "javax.swing.JTable,~O,~B,~B,~N,~N");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$TableSorter$1$ = function () {\r
-Clazz.pu$h(self.c$);\r
-c$ = Clazz.declareAnonymous (jalview.util, "TableSorter$1", null, java.util.Comparator);\r
-Clazz.defineMethod (c$, "compare", \r
-function (o1, o2) {\r
-return (o1).compareTo (o2);\r
-}, "~O,~O");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$TableSorter$2$ = function () {\r
-Clazz.pu$h(self.c$);\r
-c$ = Clazz.declareAnonymous (jalview.util, "TableSorter$2", null, java.util.Comparator);\r
-Clazz.defineMethod (c$, "compare", \r
-function (o1, o2) {\r
-return o1.toString ().compareTo (o2.toString ());\r
-}, "~O,~O");\r
-c$ = Clazz.p0p ();\r
-};\r
-Clazz.pu$h(self.c$);\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.descending = false;\r
-this.size = 0;\r
-this.priority = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.util.TableSorter, "Arrow", null, javax.swing.Icon);\r
-Clazz.makeConstructor (c$, \r
-function (a, b, c) {\r
-this.descending = a;\r
-this.size = b;\r
-this.priority = c;\r
-}, "~B,~N,~N");\r
-Clazz.overrideMethod (c$, "paintIcon", \r
-function (a, b, c, d) {\r
-var e = a == null ? java.awt.Color.GRAY : a.getBackground ();\r
-var f = Clazz.doubleToInt (Clazz.doubleToInt (this.size / 2) * Math.pow (0.8, this.priority));\r
-var g = this.descending ? f : -f;\r
-d = d + Clazz.doubleToInt (5 * this.size / 6) + (this.descending ? -g : 0);\r
-var h = this.descending ? 1 : -1;\r
-b.translate (c, d);\r
-b.setColor (e.darker ());\r
-b.drawLine (Clazz.doubleToInt (f / 2), g, 0, 0);\r
-b.drawLine (Clazz.doubleToInt (f / 2), g + h, 0, h);\r
-b.setColor (e.brighter ());\r
-b.drawLine (Clazz.doubleToInt (f / 2), g, f, 0);\r
-b.drawLine (Clazz.doubleToInt (f / 2), g + h, f, h);\r
-if (this.descending) {\r
-b.setColor (e.darker ().darker ());\r
-} else {\r
-b.setColor (e.brighter ().brighter ());\r
-}b.drawLine (f, 0, 0, 0);\r
-b.setColor (e);\r
-b.translate (-c, -d);\r
-}, "java.awt.Component,java.awt.Graphics,~N,~N");\r
-Clazz.overrideMethod (c$, "getIconWidth", \r
-function () {\r
-return this.size;\r
-});\r
-Clazz.overrideMethod (c$, "getIconHeight", \r
-function () {\r
-return this.size;\r
-});\r
-c$ = Clazz.p0p ();\r
-Clazz.pu$h(self.c$);\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.column = 0;\r
-this.direction = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.util.TableSorter, "Directive");\r
-Clazz.makeConstructor (c$, \r
-function (a, b) {\r
-this.column = a;\r
-this.direction = b;\r
-}, "~N,~N");\r
-c$ = Clazz.p0p ();\r
-Clazz.defineStatics (c$,\r
-"DESCENDING", -1,\r
-"NOT_SORTED", 0,\r
-"ASCENDING", 1);\r
-c$.EMPTY_DIRECTIVE = c$.prototype.EMPTY_DIRECTIVE =  new jalview.util.TableSorter.Directive (-1, 0);\r
-c$.COMPARABLE_COMAPRATOR = c$.prototype.COMPARABLE_COMAPRATOR = ((Clazz.isClassDefined ("jalview.util.TableSorter$1") ? 0 : jalview.util.TableSorter.$TableSorter$1$ ()), Clazz.innerTypeInstance (jalview.util.TableSorter$1, this, null));\r
-c$.LEXICAL_COMPARATOR = c$.prototype.LEXICAL_COMPARATOR = ((Clazz.isClassDefined ("jalview.util.TableSorter$2") ? 0 : jalview.util.TableSorter.$TableSorter$2$ ()), Clazz.innerTypeInstance (jalview.util.TableSorter$2, this, null));\r
-});\r
+Clazz.declarePackage ("jalview.util");
+Clazz.load (["java.awt.event.MouseAdapter", "javax.swing.Icon", "javax.swing.event.TableModelListener", "javax.swing.table.AbstractTableModel", "$.TableCellRenderer", "java.util.ArrayList", "$.HashMap"], "jalview.util.TableSorter", ["java.awt.Color", "java.util.Arrays", "javax.swing.JLabel", "javax.swing.event.TableModelEvent"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.tableModel = null;
+this.viewToModel = null;
+this.modelToView = null;
+this.tableHeader = null;
+this.mouseListener = null;
+this.tableModelListener = null;
+this.columnComparators = null;
+this.sortingColumns = null;
+if (!Clazz.isClassDefined ("jalview.util.TableSorter.Row")) {
+jalview.util.TableSorter.$TableSorter$Row$ ();
+}
+if (!Clazz.isClassDefined ("jalview.util.TableSorter.TableModelHandler")) {
+jalview.util.TableSorter.$TableSorter$TableModelHandler$ ();
+}
+if (!Clazz.isClassDefined ("jalview.util.TableSorter.MouseHandler")) {
+jalview.util.TableSorter.$TableSorter$MouseHandler$ ();
+}
+if (!Clazz.isClassDefined ("jalview.util.TableSorter.SortableHeaderRenderer")) {
+jalview.util.TableSorter.$TableSorter$SortableHeaderRenderer$ ();
+}
+Clazz.instantialize (this, arguments);
+}, jalview.util, "TableSorter", javax.swing.table.AbstractTableModel);
+Clazz.prepareFields (c$, function () {
+this.columnComparators =  new java.util.HashMap ();
+this.sortingColumns =  new java.util.ArrayList ();
+});
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, jalview.util.TableSorter, []);
+this.mouseListener = Clazz.innerTypeInstance (jalview.util.TableSorter.MouseHandler, this, null);
+this.tableModelListener = Clazz.innerTypeInstance (jalview.util.TableSorter.TableModelHandler, this, null);
+});
+Clazz.makeConstructor (c$, 
+function (tableModel) {
+this.construct ();
+this.setTableModel (tableModel);
+}, "javax.swing.table.TableModel");
+Clazz.makeConstructor (c$, 
+function (tableModel, tableHeader) {
+this.construct ();
+this.setTableHeader (tableHeader);
+this.setTableModel (tableModel);
+}, "javax.swing.table.TableModel,javax.swing.table.JTableHeader");
+Clazz.defineMethod (c$, "clearSortingState", 
+ function () {
+this.viewToModel = null;
+this.modelToView = null;
+});
+Clazz.defineMethod (c$, "getTableModel", 
+function () {
+return this.tableModel;
+});
+Clazz.defineMethod (c$, "setTableModel", 
+function (tableModel) {
+if (this.tableModel != null) {
+this.tableModel.removeTableModelListener (this.tableModelListener);
+}this.tableModel = tableModel;
+if (this.tableModel != null) {
+this.tableModel.addTableModelListener (this.tableModelListener);
+}this.clearSortingState ();
+this.fireTableStructureChanged ();
+}, "javax.swing.table.TableModel");
+Clazz.defineMethod (c$, "getTableHeader", 
+function () {
+return this.tableHeader;
+});
+Clazz.defineMethod (c$, "setTableHeader", 
+function (tableHeader) {
+if (this.tableHeader != null) {
+this.tableHeader.removeMouseListener (this.mouseListener);
+var defaultRenderer = this.tableHeader.getDefaultRenderer ();
+if (Clazz.instanceOf (defaultRenderer, jalview.util.TableSorter.SortableHeaderRenderer)) {
+this.tableHeader.setDefaultRenderer ((defaultRenderer).tableCellRenderer);
+}}this.tableHeader = tableHeader;
+if (this.tableHeader != null) {
+this.tableHeader.addMouseListener (this.mouseListener);
+this.tableHeader.setDefaultRenderer (Clazz.innerTypeInstance (jalview.util.TableSorter.SortableHeaderRenderer, this, null, this.tableHeader.getDefaultRenderer ()));
+}}, "javax.swing.table.JTableHeader");
+Clazz.defineMethod (c$, "isSorting", 
+function () {
+return this.sortingColumns.size () != 0;
+});
+Clazz.defineMethod (c$, "getDirective", 
+ function (column) {
+for (var i = 0; i < this.sortingColumns.size (); i++) {
+var directive = this.sortingColumns.get (i);
+if (directive.column == column) {
+return directive;
+}}
+return jalview.util.TableSorter.EMPTY_DIRECTIVE;
+}, "~N");
+Clazz.defineMethod (c$, "getSortingStatus", 
+function (column) {
+return this.getDirective (column).direction;
+}, "~N");
+Clazz.defineMethod (c$, "sortingStatusChanged", 
+ function () {
+this.clearSortingState ();
+this.fireTableDataChanged ();
+if (this.tableHeader != null) {
+this.tableHeader.repaint ();
+}});
+Clazz.defineMethod (c$, "setSortingStatus", 
+function (column, status) {
+var directive = this.getDirective (column);
+if (directive !== jalview.util.TableSorter.EMPTY_DIRECTIVE) {
+this.sortingColumns.remove (directive);
+}if (status != 0) {
+this.sortingColumns.add ( new jalview.util.TableSorter.Directive (column, status));
+}this.sortingStatusChanged ();
+}, "~N,~N");
+Clazz.defineMethod (c$, "getHeaderRendererIcon", 
+function (column, size) {
+var directive = this.getDirective (column);
+if (directive === jalview.util.TableSorter.EMPTY_DIRECTIVE) {
+return null;
+}return  new jalview.util.TableSorter.Arrow (directive.direction == -1, size, this.sortingColumns.indexOf (directive));
+}, "~N,~N");
+Clazz.defineMethod (c$, "cancelSorting", 
+ function () {
+this.sortingColumns.clear ();
+this.sortingStatusChanged ();
+});
+Clazz.defineMethod (c$, "setColumnComparator", 
+function (type, comparator) {
+if (comparator == null) {
+this.columnComparators.remove (type);
+} else {
+this.columnComparators.put (type, comparator);
+}}, "Class,java.util.Comparator");
+Clazz.defineMethod (c$, "getComparator", 
+function (column) {
+var columnType = this.tableModel.getColumnClass (column);
+var comparator = this.columnComparators.get (columnType);
+if (comparator != null) {
+return comparator;
+}if (Comparable.isAssignableFrom (columnType)) {
+return jalview.util.TableSorter.COMPARABLE_COMAPRATOR;
+}return jalview.util.TableSorter.LEXICAL_COMPARATOR;
+}, "~N");
+Clazz.defineMethod (c$, "getViewToModel", 
+ function () {
+if (this.viewToModel == null) {
+var tableModelRowCount = this.tableModel.getRowCount ();
+this.viewToModel =  new Array (tableModelRowCount);
+for (var row = 0; row < tableModelRowCount; row++) {
+this.viewToModel[row] = Clazz.innerTypeInstance (jalview.util.TableSorter.Row, this, null, row);
+}
+if (this.isSorting ()) {
+java.util.Arrays.sort (this.viewToModel);
+}}return this.viewToModel;
+});
+Clazz.defineMethod (c$, "modelIndex", 
+function (viewIndex) {
+return this.getViewToModel ()[viewIndex].modelIndex;
+}, "~N");
+Clazz.defineMethod (c$, "getModelToView", 
+ function () {
+if (this.modelToView == null) {
+var n = this.getViewToModel ().length;
+this.modelToView =  Clazz.newIntArray (n, 0);
+for (var i = 0; i < n; i++) {
+this.modelToView[this.modelIndex (i)] = i;
+}
+}return this.modelToView;
+});
+Clazz.defineMethod (c$, "getRowCount", 
+function () {
+return (this.tableModel == null) ? 0 : this.tableModel.getRowCount ();
+});
+Clazz.defineMethod (c$, "getColumnCount", 
+function () {
+return (this.tableModel == null) ? 0 : this.tableModel.getColumnCount ();
+});
+Clazz.overrideMethod (c$, "getColumnName", 
+function (column) {
+return this.tableModel.getColumnName (column);
+}, "~N");
+Clazz.overrideMethod (c$, "getColumnClass", 
+function (column) {
+return this.tableModel.getColumnClass (column);
+}, "~N");
+Clazz.overrideMethod (c$, "isCellEditable", 
+function (row, column) {
+return this.tableModel.isCellEditable (this.modelIndex (row), column);
+}, "~N,~N");
+Clazz.defineMethod (c$, "getValueAt", 
+function (row, column) {
+return this.tableModel.getValueAt (this.modelIndex (row), column);
+}, "~N,~N");
+Clazz.overrideMethod (c$, "setValueAt", 
+function (aValue, row, column) {
+this.tableModel.setValueAt (aValue, this.modelIndex (row), column);
+}, "~O,~N,~N");
+c$.$TableSorter$Row$ = function () {
+Clazz.pu$h(self.c$);
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.modelIndex = 0;
+Clazz.instantialize (this, arguments);
+}, jalview.util.TableSorter, "Row", null, Comparable);
+Clazz.makeConstructor (c$, 
+function (a) {
+this.modelIndex = a;
+}, "~N");
+Clazz.overrideMethod (c$, "compareTo", 
+function (a) {
+var b = this.modelIndex;
+var c = (a).modelIndex;
+for (var d = this.b$["jalview.util.TableSorter"].sortingColumns.iterator (); d.hasNext (); ) {
+var e = d.next ();
+var f = e.column;
+var g = this.b$["jalview.util.TableSorter"].tableModel.getValueAt (b, f);
+var h = this.b$["jalview.util.TableSorter"].tableModel.getValueAt (c, f);
+var i = 0;
+if (g == null && h == null) {
+i = 0;
+} else if (g == null) {
+i = -1;
+} else if (h == null) {
+i = 1;
+} else {
+i = this.b$["jalview.util.TableSorter"].getComparator (f).compare (g, h);
+}if (i != 0) {
+return e.direction == -1 ? -i : i;
+}}
+return 0;
+}, "~O");
+c$ = Clazz.p0p ();
+};
+c$.$TableSorter$TableModelHandler$ = function () {
+Clazz.pu$h(self.c$);
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+Clazz.instantialize (this, arguments);
+}, jalview.util.TableSorter, "TableModelHandler", null, javax.swing.event.TableModelListener);
+Clazz.overrideMethod (c$, "tableChanged", 
+function (a) {
+if (!this.b$["jalview.util.TableSorter"].isSorting ()) {
+this.b$["jalview.util.TableSorter"].clearSortingState ();
+this.b$["jalview.util.TableSorter"].fireTableChanged (a);
+return;
+}if (a.getFirstRow () == -1) {
+this.b$["jalview.util.TableSorter"].cancelSorting ();
+this.b$["jalview.util.TableSorter"].fireTableChanged (a);
+return;
+}var b = a.getColumn ();
+if (a.getFirstRow () == a.getLastRow () && b != -1 && this.b$["jalview.util.TableSorter"].getSortingStatus (b) == 0 && this.b$["jalview.util.TableSorter"].modelToView != null) {
+var c = this.b$["jalview.util.TableSorter"].getModelToView ()[a.getFirstRow ()];
+this.b$["jalview.util.TableSorter"].fireTableChanged ( new javax.swing.event.TableModelEvent (this.b$["jalview.util.TableSorter"], c, c, b, a.getType ()));
+return;
+}this.b$["jalview.util.TableSorter"].clearSortingState ();
+this.b$["jalview.util.TableSorter"].fireTableDataChanged ();
+return;
+}, "javax.swing.event.TableModelEvent");
+c$ = Clazz.p0p ();
+};
+c$.$TableSorter$MouseHandler$ = function () {
+Clazz.pu$h(self.c$);
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+Clazz.instantialize (this, arguments);
+}, jalview.util.TableSorter, "MouseHandler", java.awt.event.MouseAdapter);
+Clazz.overrideMethod (c$, "mouseClicked", 
+function (a) {
+var b = a.getSource ();
+var c = b.getColumnModel ();
+var d = c.getColumnIndexAtX (a.getX ());
+var e = c.getColumn (d).getModelIndex ();
+if (e != -1) {
+var f = this.b$["jalview.util.TableSorter"].getSortingStatus (e);
+if (!a.isControlDown ()) {
+this.b$["jalview.util.TableSorter"].cancelSorting ();
+}f = f + (a.isShiftDown () ? -1 : 1);
+f = (f + 4) % 3 - 1;
+this.b$["jalview.util.TableSorter"].setSortingStatus (e, f);
+}}, "java.awt.event.MouseEvent");
+c$ = Clazz.p0p ();
+};
+c$.$TableSorter$SortableHeaderRenderer$ = function () {
+Clazz.pu$h(self.c$);
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.tableCellRenderer = null;
+Clazz.instantialize (this, arguments);
+}, jalview.util.TableSorter, "SortableHeaderRenderer", null, javax.swing.table.TableCellRenderer);
+Clazz.makeConstructor (c$, 
+function (a) {
+this.tableCellRenderer = a;
+}, "javax.swing.table.TableCellRenderer");
+Clazz.defineMethod (c$, "getTableCellRendererComponent", 
+function (a, b, c, d, e, f) {
+var g = this.tableCellRenderer.getTableCellRendererComponent (a, b, c, d, e, f);
+if (Clazz.instanceOf (g, javax.swing.JLabel)) {
+var h = g;
+h.setHorizontalTextPosition (2);
+var i = a.convertColumnIndexToModel (f);
+h.setIcon (this.b$["jalview.util.TableSorter"].getHeaderRendererIcon (i, h.getFont ().getSize ()));
+}return g;
+}, "javax.swing.JTable,~O,~B,~B,~N,~N");
+c$ = Clazz.p0p ();
+};
+c$.$TableSorter$1$ = function () {
+Clazz.pu$h(self.c$);
+c$ = Clazz.declareAnonymous (jalview.util, "TableSorter$1", null, java.util.Comparator);
+Clazz.defineMethod (c$, "compare", 
+function (o1, o2) {
+return (o1).compareTo (o2);
+}, "~O,~O");
+c$ = Clazz.p0p ();
+};
+c$.$TableSorter$2$ = function () {
+Clazz.pu$h(self.c$);
+c$ = Clazz.declareAnonymous (jalview.util, "TableSorter$2", null, java.util.Comparator);
+Clazz.defineMethod (c$, "compare", 
+function (o1, o2) {
+return o1.toString ().compareTo (o2.toString ());
+}, "~O,~O");
+c$ = Clazz.p0p ();
+};
+Clazz.pu$h(self.c$);
+c$ = Clazz.decorateAsClass (function () {
+this.descending = false;
+this.size = 0;
+this.priority = 0;
+Clazz.instantialize (this, arguments);
+}, jalview.util.TableSorter, "Arrow", null, javax.swing.Icon);
+Clazz.makeConstructor (c$, 
+function (a, b, c) {
+this.descending = a;
+this.size = b;
+this.priority = c;
+}, "~B,~N,~N");
+Clazz.overrideMethod (c$, "paintIcon", 
+function (a, b, c, d) {
+var e = a == null ? java.awt.Color.GRAY : a.getBackground ();
+var f = Clazz.doubleToInt (Clazz.doubleToInt (this.size / 2) * Math.pow (0.8, this.priority));
+var g = this.descending ? f : -f;
+d = d + Clazz.doubleToInt (5 * this.size / 6) + (this.descending ? -g : 0);
+var h = this.descending ? 1 : -1;
+b.translate (c, d);
+b.setColor (e.darker ());
+b.drawLine (Clazz.doubleToInt (f / 2), g, 0, 0);
+b.drawLine (Clazz.doubleToInt (f / 2), g + h, 0, h);
+b.setColor (e.brighter ());
+b.drawLine (Clazz.doubleToInt (f / 2), g, f, 0);
+b.drawLine (Clazz.doubleToInt (f / 2), g + h, f, h);
+if (this.descending) {
+b.setColor (e.darker ().darker ());
+} else {
+b.setColor (e.brighter ().brighter ());
+}b.drawLine (f, 0, 0, 0);
+b.setColor (e);
+b.translate (-c, -d);
+}, "java.awt.Component,java.awt.Graphics,~N,~N");
+Clazz.overrideMethod (c$, "getIconWidth", 
+function () {
+return this.size;
+});
+Clazz.overrideMethod (c$, "getIconHeight", 
+function () {
+return this.size;
+});
+c$ = Clazz.p0p ();
+Clazz.pu$h(self.c$);
+c$ = Clazz.decorateAsClass (function () {
+this.column = 0;
+this.direction = 0;
+Clazz.instantialize (this, arguments);
+}, jalview.util.TableSorter, "Directive");
+Clazz.makeConstructor (c$, 
+function (a, b) {
+this.column = a;
+this.direction = b;
+}, "~N,~N");
+c$ = Clazz.p0p ();
+Clazz.defineStatics (c$,
+"DESCENDING", -1,
+"NOT_SORTED", 0,
+"ASCENDING", 1);
+c$.EMPTY_DIRECTIVE = c$.prototype.EMPTY_DIRECTIVE =  new jalview.util.TableSorter.Directive (-1, 0);
+c$.COMPARABLE_COMAPRATOR = c$.prototype.COMPARABLE_COMAPRATOR = ((Clazz.isClassDefined ("jalview.util.TableSorter$1") ? 0 : jalview.util.TableSorter.$TableSorter$1$ ()), Clazz.innerTypeInstance (jalview.util.TableSorter$1, this, null));
+c$.LEXICAL_COMPARATOR = c$.prototype.LEXICAL_COMPARATOR = ((Clazz.isClassDefined ("jalview.util.TableSorter$2") ? 0 : jalview.util.TableSorter.$TableSorter$2$ ()), Clazz.innerTypeInstance (jalview.util.TableSorter$2, this, null));
+});